123456789101112131415161718192021222324252627282930313233343536 |
- import re
- from django.forms import ValidationError
- from django.utils.translation import gettext as _
- FILENAME_CONTENT = re.compile(r"([a-zA-Z0-9]|\.|_|-)+")
- FILENAME_TANGIBILITY = re.compile(r"[a-zA-Z0-9]")
- def validate_css_name(filename):
- if not filename.lower().endswith(".css"):
- raise ValidationError(_("Name is missing an .css extension."))
- if filename.startswith("."):
- raise ValidationError(_('Name can\'t start with period (".").'))
- if not FILENAME_CONTENT.fullmatch(filename[:-4]):
- raise ValidationError(
- _(
- "Name can contain only latin alphabet characters, "
- "digits, dots, underscores and dashes."
- )
- )
- if not FILENAME_TANGIBILITY.match(filename[:-4]):
- raise ValidationError(
- _("Name has to contain at least one latin alphabet character or digit.")
- )
- def validate_css_name_is_available(instance, name):
- queryset = instance.theme.css.filter(name=name)
- if instance.pk:
- queryset = queryset.exclude(pk=instance.pk)
- if queryset.exists():
- raise ValidationError(_("This name is already in use by other asset."))
|