55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django.core.validators import RegexValidator
|
|
|
|
|
|
# Create your models here.
|
|
class PhonebookEntry(models.Model):
|
|
first_name = models.CharField(max_length=255)
|
|
last_name = models.CharField(max_length=255)
|
|
|
|
enabled = models.BooleanField(default=True)
|
|
blocked = models.BooleanField(default=False)
|
|
favourite = models.BooleanField(default=False)
|
|
vip = models.BooleanField(default=False)
|
|
|
|
def __str__(self):
|
|
return f"{self.first_name} {self.last_name}"
|
|
|
|
class Meta:
|
|
verbose_name_plural = _("Phonebook Entries")
|
|
ordering = ["first_name", "last_name"]
|
|
|
|
|
|
class PhonebookNumber(models.Model):
|
|
class ContactTypes(models.TextChoices):
|
|
SIP = "SIP", _("SIP")
|
|
MOBILE = "MOBILE", _("Mobile")
|
|
FIXED = "FIXED", _("Fixed")
|
|
HOME = "HOME", _("Home")
|
|
BUSINESS = "BUSINESS", _("Business")
|
|
EXTENSION = "EXTENSION", _("Extension")
|
|
|
|
number = models.CharField(
|
|
max_length=255,
|
|
validators=[
|
|
RegexValidator(
|
|
regex="^\+[0-9]+$",
|
|
message="Phone number must be entered in the format: +999999999",
|
|
)
|
|
],
|
|
)
|
|
type = models.CharField(
|
|
max_length=20, choices=ContactTypes, default=ContactTypes.SIP
|
|
)
|
|
|
|
contact = models.ForeignKey(
|
|
PhonebookEntry, on_delete=models.CASCADE, related_name="numbers"
|
|
)
|
|
|
|
def __str__(self):
|
|
return f"{self.number} ({self.contact.first_name} {self.contact.last_name}, {self.type.title()})"
|
|
|
|
class Meta:
|
|
verbose_name_plural = _("Phonebook Numbers")
|
|
ordering = ["number"]
|