45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
from django.core.validators import MinValueValidator, MaxValueValidator
|
|
from django.db import models
|
|
from django.utils.translation import gettext_lazy
|
|
|
|
from console.models import NameDescriptionModel, UniqueNameDescriptionModel
|
|
from devices.enums import DeviceType, AdjustDatetime
|
|
|
|
|
|
class Device(NameDescriptionModel):
|
|
type = models.CharField(choices=DeviceType.choices,
|
|
max_length=8)
|
|
ip = models.GenericIPAddressField(unique=True,
|
|
verbose_name=gettext_lazy('IP'),
|
|
help_text=gettext_lazy('Device IP address'))
|
|
port = models.IntegerField(verbose_name=gettext_lazy('Port'),
|
|
help_text=gettext_lazy("Input port number (UDP)"),
|
|
unique=True,
|
|
error_messages={
|
|
'unique': gettext_lazy('This port is already in use')
|
|
},
|
|
validators=(MinValueValidator(1500),
|
|
MaxValueValidator(65535)))
|
|
adjust_datetime = models.IntegerField(choices=AdjustDatetime.choices,
|
|
default=AdjustDatetime.LOCAL,
|
|
verbose_name=gettext_lazy("Adjust datetime"))
|
|
updated = models.DateTimeField(
|
|
gettext_lazy('Updated'), help_text=gettext_lazy('Date and time of the last update'),
|
|
auto_now=True
|
|
)
|
|
group = models.ForeignKey('DeviceGroup', related_name='devices', on_delete=models.SET_NULL, null=True, blank=True)
|
|
|
|
|
|
class DeviceGroup(UniqueNameDescriptionModel):
|
|
pass
|
|
|
|
|
|
class DeviceConnectedMixin(models.Model):
|
|
""" Add connection to device by name.
|
|
|
|
Device can be ARMAIF or Endpoint
|
|
"""
|
|
sensor = models.CharField(null=True, blank=True, max_length=128, verbose_name=gettext_lazy("Sensor name")) # todo rename later
|
|
|
|
class Meta:
|
|
abstract = True
|