old_console/devices/models/device.py
2024-11-02 14:12:45 +03:00

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