Browse Source

Убрал модель состояния портов

devel
bashmak 9 years ago
parent
commit
b6370f407b
  1. 41
      devapp/models.py

41
devapp/models.py

@ -1,24 +1,33 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.db import models from django.db import models
from djing.fields import MACAddressField
from .base_intr import DevBase from .base_intr import DevBase
from mydefs import MyGenericIPAddressField, MyChoicesAdapter from mydefs import MyGenericIPAddressField, MyChoicesAdapter
from .dev_types import DEVICE_TYPES
from .dev_types import DLinkDevice, OLTDevice, OnuDevice
from mapapp.models import Dot 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): class Device(models.Model):
ip_address = MyGenericIPAddressField() ip_address = MyGenericIPAddressField()
mac_addr = MACAddressField(null=True, blank=True, unique=True)
comment = models.CharField(max_length=256) 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) 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) 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) 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: class Meta:
db_table = 'dev' db_table = 'dev'
@ -37,25 +46,23 @@ class Device(models.Model):
return res return res
return return
# Можно-ли подключать устройство к абоненту
def has_attachable_to_subscriber(self):
mngr_class = self.get_manager_klass()
return mngr_class.has_attachable_to_subscriber()
def __str__(self): 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): class Port(models.Model):
PORT_SPEEDS = (
('h', '100Mbps'),
('k', '1Gbps'),
('d', '10Gbps')
)
device = models.ForeignKey(Device) device = models.ForeignKey(Device)
num = models.PositiveSmallIntegerField(default=0) 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: class Meta:
db_table = 'dev_port' db_table = 'dev_port'
unique_together = (('device', 'num')) unique_together = (('device', 'num'))
class PortStates(models.Model):
port = models.OneToOneField(Port)
state_json_info = models.TextField()
Loading…
Cancel
Save