Do not allow slugs to end with a dot

This commit is contained in:
Raphael Michel
2021-01-13 11:55:09 +01:00
parent 86932e8a19
commit 70bf422537
2 changed files with 10 additions and 4 deletions

View File

@@ -11,7 +11,7 @@ from django.core.exceptions import ValidationError
from django.core.files.storage import default_storage from django.core.files.storage import default_storage
from django.core.mail import get_connection from django.core.mail import get_connection
from django.core.validators import ( from django.core.validators import (
MaxValueValidator, MinValueValidator, RegexValidator, MaxValueValidator, MinLengthValidator, MinValueValidator, RegexValidator,
) )
from django.db import models from django.db import models
from django.db.models import Exists, OuterRef, Prefetch, Q, Subquery, Value from django.db.models import Exists, OuterRef, Prefetch, Q, Subquery, Value
@@ -355,8 +355,11 @@ class Event(EventMixin, LoggedModel):
"remembered, but you can also choose to use a random value. " "remembered, but you can also choose to use a random value. "
"This will be used in URLs, order codes, invoice numbers, and bank transfer references."), "This will be used in URLs, order codes, invoice numbers, and bank transfer references."),
validators=[ validators=[
MinLengthValidator(
limit_value=2,
),
RegexValidator( RegexValidator(
regex="^[a-zA-Z0-9][a-zA-Z0-9.-]*$", regex="^[a-zA-Z0-9][a-zA-Z0-9.-]*[a-zA-Z0-9]$",
message=_("The slug may only contain letters, numbers, dots and dashes."), message=_("The slug may only contain letters, numbers, dots and dashes."),
), ),
EventSlugBanlistValidator() EventSlugBanlistValidator()

View File

@@ -1,7 +1,7 @@
import string import string
from datetime import date, datetime, time from datetime import date, datetime, time
from django.core.validators import RegexValidator from django.core.validators import MinLengthValidator, RegexValidator
from django.db import models from django.db import models
from django.db.models import Exists, OuterRef, Q from django.db.models import Exists, OuterRef, Q
from django.utils.crypto import get_random_string from django.utils.crypto import get_random_string
@@ -38,8 +38,11 @@ class Organizer(LoggedModel):
"Should be short, only contain lowercase letters, numbers, dots, and dashes. Every slug can only be used " "Should be short, only contain lowercase letters, numbers, dots, and dashes. Every slug can only be used "
"once. This is being used in URLs to refer to your organizer accounts and your events."), "once. This is being used in URLs to refer to your organizer accounts and your events."),
validators=[ validators=[
MinLengthValidator(
limit_value=2,
),
RegexValidator( RegexValidator(
regex="^[a-zA-Z0-9][a-zA-Z0-9.-]+$", regex="^[a-zA-Z0-9][a-zA-Z0-9.-]*[a-zA-Z0-9]$",
message=_("The slug may only contain letters, numbers, dots and dashes.") message=_("The slug may only contain letters, numbers, dots and dashes.")
), ),
OrganizerSlugBanlistValidator() OrganizerSlugBanlistValidator()