From b6370f407bbcd786f84f2457e1ea65c560950a03 Mon Sep 17 00:00:00 2001 From: bashmak Date: Wed, 5 Jul 2017 13:38:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D1=8C=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=80=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devapp/models.py | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/devapp/models.py b/devapp/models.py index 75812df..0a3aaf2 100644 --- a/devapp/models.py +++ b/devapp/models.py @@ -1,24 +1,33 @@ # -*- coding: utf-8 -*- from django.db import models +from djing.fields import MACAddressField from .base_intr import DevBase from mydefs import MyGenericIPAddressField, MyChoicesAdapter -from .dev_types import DEVICE_TYPES +from .dev_types import DLinkDevice, OLTDevice, OnuDevice from mapapp.models import Dot -class _DeviceChoicesAdapter(MyChoicesAdapter): - def __init__(self): - super().__init__(DEVICE_TYPES) +DEVICE_TYPES = ( + ('Dl', DLinkDevice), + ('Pn', OLTDevice), + ('On', OnuDevice) +) + + +class DeviceDBException(Exception): + pass class Device(models.Model): ip_address = MyGenericIPAddressField() + mac_addr = MACAddressField(null=True, blank=True, unique=True) comment = models.CharField(max_length=256) - devtype = models.CharField(max_length=2, default=DEVICE_TYPES[0][0], choices=_DeviceChoicesAdapter()) + devtype = models.CharField(max_length=2, default=DEVICE_TYPES[0][0], choices=MyChoicesAdapter(DEVICE_TYPES)) man_passw = models.CharField(max_length=16, null=True, blank=True) map_dot = models.ForeignKey(Dot, on_delete=models.SET_NULL, null=True, blank=True) user_group = models.ForeignKey('abonapp.AbonGroup', on_delete=models.SET_NULL, null=True, blank=True) + parent_dev = models.ForeignKey('self', blank=True, null=True, on_delete=models.SET_NULL) class Meta: db_table = 'dev' @@ -37,25 +46,23 @@ class Device(models.Model): return res return + # Можно-ли подключать устройство к абоненту + def has_attachable_to_subscriber(self): + mngr_class = self.get_manager_klass() + return mngr_class.has_attachable_to_subscriber() + def __str__(self): - return "%s: (%s) %s" % (self.comment, self.get_devtype_display(), self.ip_address) + return "%s: (%s) %s %s" % (self.comment, self.get_devtype_display(), self.ip_address, self.mac_addr) class Port(models.Model): - PORT_SPEEDS = ( - ('h', '100Mbps'), - ('k', '1Gbps'), - ('d', '10Gbps') - ) device = models.ForeignKey(Device) num = models.PositiveSmallIntegerField(default=0) - speed = models.CharField(max_length=1, default=PORT_SPEEDS[0][0], choices=PORT_SPEEDS) + descr = models.CharField(max_length=60, null=True, blank=True) + + def __str__(self): + return "%d: %s" % (int(self.num), self.descr) class Meta: db_table = 'dev_port' unique_together = (('device', 'num')) - - -class PortStates(models.Model): - port = models.OneToOneField(Port) - state_json_info = models.TextField()