validate location slug
This commit is contained in:
parent
4cc8341140
commit
c621b02678
1 changed files with 11 additions and 1 deletions
|
@ -2,6 +2,7 @@ from collections import OrderedDict
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
|
|
||||||
|
from django.core.validators import RegexValidator
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Prefetch
|
from django.db.models import Prefetch
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
@ -34,6 +35,15 @@ class LocationSlugManager(models.Manager):
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
|
|
||||||
|
validate_slug = RegexValidator(
|
||||||
|
r'^[a-z0-9]+(-[a-z0-9]+)*\Z',
|
||||||
|
# Translators: "letters" means latin letters: a-z and A-Z.
|
||||||
|
_('Enter a valid location slug consisting of lowercase letters, numbers or hyphens, '
|
||||||
|
'not starting or ending with hyphens or containing consecutive hyphens.'),
|
||||||
|
'invalid'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LocationSlug(SerializableMixin, models.Model):
|
class LocationSlug(SerializableMixin, models.Model):
|
||||||
LOCATION_TYPE_CODES = {
|
LOCATION_TYPE_CODES = {
|
||||||
'Level': 'l',
|
'Level': 'l',
|
||||||
|
@ -43,7 +53,7 @@ class LocationSlug(SerializableMixin, models.Model):
|
||||||
'LocationGroup': 'g'
|
'LocationGroup': 'g'
|
||||||
}
|
}
|
||||||
LOCATION_TYPE_BY_CODE = {code: model_name for model_name, code in LOCATION_TYPE_CODES.items()}
|
LOCATION_TYPE_BY_CODE = {code: model_name for model_name, code in LOCATION_TYPE_CODES.items()}
|
||||||
slug = models.SlugField(_('Slug'), unique=True, null=True, blank=True, max_length=50)
|
slug = models.SlugField(_('Slug'), unique=True, null=True, blank=True, max_length=50, validators=[validate_slug])
|
||||||
|
|
||||||
objects = LocationSlugManager()
|
objects = LocationSlugManager()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue