mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-02-04 08:13:38 +00:00
- ugettext functions will be removed in Django 4.0. Each use emits a warning when running with Django 3.2. Since we have warnings enabled in developer mode, we see quite a few messages because of this. - ugettext is already a simple alias of gettext. So, no regressions are expected. Tests: - Accessing an affected app in UI with Django 3.2 and Django 2.2 works fine. - Using Django 3.2 there are no warnings related to removal of ugettext functions. - Ran regular unit tests. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
32 lines
975 B
Python
32 lines
975 B
Python
import re
|
|
from dataclasses import InitVar, dataclass, field
|
|
|
|
from django.core.exceptions import ValidationError
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
email_positive_pattern = re.compile('^[a-zA-Z0-9-_\\.]+')
|
|
|
|
|
|
def sanitize_email_name(email_name):
|
|
email_name = email_name.strip().lower()
|
|
if len(email_name) < 2:
|
|
raise ValidationError(_('Must be at least 2 characters long'))
|
|
if not re.match('^[a-z0-9-_\\.]+$', email_name):
|
|
raise ValidationError(_('Contains illegal characters'))
|
|
if not re.match('^[a-z0-9].*[a-z0-9]$', email_name):
|
|
raise ValidationError(_('Must start and end with a-z or 0-9'))
|
|
if re.match('^[0-9]+$', email_name):
|
|
raise ValidationError(_('Cannot be a number'))
|
|
return email_name
|
|
|
|
|
|
@dataclass
|
|
class Alias:
|
|
uid_number: int
|
|
email_name: str
|
|
enabled: bool = field(init=False)
|
|
status: InitVar[int]
|
|
|
|
def __post_init__(self, status):
|
|
self.enabled = (status != 0)
|