snom-configurator/settings/models.py

64 lines
2 KiB
Python

from django.db import models
from django.core.validators import RegexValidator
class SIPAccount(models.Model):
ip = models.GenericIPAddressField()
username = models.CharField(max_length=255)
password = models.CharField(max_length=255)
display_name = models.CharField(max_length=255)
tone_scheme = models.CharField(max_length=10)
def __str__(self):
return f'{self.username}@{self.ip}'
class Meta:
verbose_name = "SIP Account"
verbose_name_plural = "SIP Accounts"
ordering = ['display_name']
class SnomPhoneType(models.Model):
model = models.CharField(max_length=255)
phonebook_function_key = models.IntegerField(default=-1, help_text='if set to anything >+0, phonebook will be provisioned on this key')
def __str__(self):
return self.model
class SnomFunctionKey(models.Model):
phone_type = models.ForeignKey(SnomPhoneType, on_delete=models.CASCADE)
key_id = models.IntegerField()
label = models.CharField(max_length=255)
value = models.CharField(max_length=255)
def __str__(self):
return f'{self.phone_type.model}:{self.key_id}'
class Meta:
ordering = ['phone_type', 'key_id']
constraints = [
models.UniqueConstraint(fields=['phone_type', 'key_id'], name='phone_type_key_id_unique')
]
class SnomPhone(models.Model):
mac_address = models.CharField(max_length=12, validators=[RegexValidator('^[0-9A-F]{12}$')], primary_key=True)
phone_name = models.CharField(max_length=255)
admin_password = models.CharField(max_length=255)
timezone = models.CharField(max_length=10, help_text="https://service.snom.com/display/wiki/timezone", default="GBR-0")
sip_account = models.ForeignKey(SIPAccount, on_delete=models.PROTECT)
phone_type = models.ForeignKey(SnomPhoneType, on_delete=models.PROTECT)
def __str__(self):
return self.phone_name
class Meta:
verbose_name = "Snom Phone"
verbose_name_plural = "Snom Phones"
ordering = ['phone_name']