from django.db import models from dncore.models import User from .validators import HandleValidator class WhoisObject(models.Model): handle_suffix = None handle = models.SlugField(max_length='32', unique=True, validators=[HandleValidator()]) created = models.DateTimeField(auto_add_now=True) last_modified = models.DateTimeField(auto_add_now=True) class Meta: abstract = True class Maintainer(WhoisObject): auth = models.ManyToManyField(User) admin_c = models.ManyToManyField("Contact") class MntdObject(WhoisObject): mnt_by = models.ManyToManyField(Maintainer) class Meta: abstract = True class Contact(MntdObject): TYPE = (('person', 'person'), ('role', 'role')) name = models.CharField(max_length=128) class ASBlock(MntdObject): parent_block = models.ForeignKey("ASBlock", models.CASCADE, null=True, blank=True, default=None) description = models.CharField(max_length=64, blank=True) class ASNumber(MntdObject): number = models.PositiveIntegerField(unique=True, db_index=True) volatile = models.BooleanField(default=False) asblock = models.ForeignKey(ASBlock, models.CASCADE) description = models.CharField(max_length=64, blank=True) mnt_lower = models.ManyToManyField(Maintainer) #class Route(MntObject): # class InetNum(WhoisObject): PROTO = (('ipv4', 'ipv4'), ('ipv6', 'ipv6')) protocol = models.CharField(max_length=4, choices=PROTO) netmask = models.PositiveIntegerField() parent_range = models.ForeignKey("InetNum", models.CASCADE, null=True, blank=True, default=None) description = models.CharField(max_length=64, blank=True) mnt_lower = models.ManyToManyField(Maintainer)