diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index 2696c89200..59ab8060ef 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -11,7 +11,7 @@ from django.core.exceptions import ValidationError from django.core.files.storage import default_storage from django.core.mail import get_connection from django.core.validators import ( - MaxValueValidator, MinValueValidator, RegexValidator, + MaxValueValidator, MinLengthValidator, MinValueValidator, RegexValidator, ) from django.db import models 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. " "This will be used in URLs, order codes, invoice numbers, and bank transfer references."), validators=[ + MinLengthValidator( + limit_value=2, + ), 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."), ), EventSlugBanlistValidator() diff --git a/src/pretix/base/models/organizer.py b/src/pretix/base/models/organizer.py index 9575960306..c77988187c 100644 --- a/src/pretix/base/models/organizer.py +++ b/src/pretix/base/models/organizer.py @@ -1,7 +1,7 @@ import string 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.models import Exists, OuterRef, Q 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 " "once. This is being used in URLs to refer to your organizer accounts and your events."), validators=[ + MinLengthValidator( + limit_value=2, + ), 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.") ), OrganizerSlugBanlistValidator()