telephony: автоформат +380, тип линии SIP/АТС и звонок через Asterisk AMI.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-13 14:52:09 +03:00
parent cc62324b69
commit 5d06d4d3ce
42 changed files with 1158 additions and 57 deletions
+18 -9
View File
@@ -5,7 +5,8 @@ from django.utils.translation import gettext_lazy as _
from core.models import BaseModel
from core.models.fields import EncryptedCharField
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from core.utils.validators import validate_ukrainian_phone, validate_birth_date, validate_ukrainian_tax_number
from core.models.fields import UkrainianPhoneField
from core.utils.validators import validate_birth_date, validate_ukrainian_tax_number
from core.utils.pagination import PAGE_SIZE_CHOICES, DEFAULT_PAGE_SIZE
class EmployeeManager(BaseUserManager):
@@ -59,23 +60,31 @@ class Employee(AbstractBaseUser, PermissionsMixin, BaseModel):
validators=[validate_ukrainian_tax_number]
)
phone = models.CharField(
_('Рабочий телефон'), max_length=20, blank=True,
validators=[validate_ukrainian_phone]
phone = UkrainianPhoneField(
_('Рабочий телефон'), blank=True,
)
class InternalLineType(models.TextChoices):
ANALOG = 'analog', _('Обычная телефония')
SIP = 'sip', _('SIP')
internal_number = models.CharField(
_('Внутрішній номер'), max_length=10, blank=True,
help_text=_('Короткий внутрішній (додатковий) номер АТС')
)
personal_phone = models.CharField(
_('Личный телефон'), max_length=20, blank=True,
validators=[validate_ukrainian_phone]
internal_line_type = models.CharField(
_('Тип линии'), max_length=10,
choices=InternalLineType.choices,
default=InternalLineType.ANALOG,
help_text=_('Обычная АТС (аналог/DAHDI) или SIP-аппарат. Для офиса и склада.'),
)
personal_phone = UkrainianPhoneField(
_('Личный телефон'), blank=True,
)
personal_email = models.EmailField(_('Личный email'), blank=True)
emergency_contact_name = models.CharField(_('Контакт в экстренных случаях'), max_length=200, blank=True)
emergency_contact_phone = models.CharField(_('Телефон экстренного контакта'), max_length=20, blank=True,
validators=[validate_ukrainian_phone])
emergency_contact_phone = UkrainianPhoneField(_('Телефон экстренного контакта'), blank=True)
emergency_contact_relation = models.CharField(_('Степень родства'), max_length=100, blank=True)
LOCATION_TYPES = [