Sunil Mohan Adapa 74214c18ae
*: Use Django gettext functions instead of ugettext
- 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>
2021-09-20 16:50:16 -04:00

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)