dnmgmt/whoisdb/models.py

57 lines
1.6 KiB
Python

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)