You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.7 KiB

7 years ago
from django.db import models
from dncore.models import User
7 years ago
from .validators import HandleValidator
7 years ago
7 years ago
class WhoisObject(models.Model):
7 years ago
handle_suffix = ""
7 years ago
7 years ago
handle = models.SlugField(max_length=32, unique=True, verbose_name='handle', validators=[HandleValidator()])
created = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now_add=True)
7 years ago
class Meta:
abstract = True
class Maintainer(WhoisObject):
7 years ago
auth = models.ManyToManyField(User)
7 years ago
description = models.CharField(max_length=64, blank=True)
7 years ago
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)
7 years ago
class ASBlock(MntdObject):
parent_block = models.ForeignKey("ASBlock", models.CASCADE, null=True, blank=True, default=None)
description = models.CharField(max_length=64, blank=True)
7 years ago
7 years ago
class ASNumber(MntdObject):
7 years ago
number = models.PositiveIntegerField(unique=True, db_index=True)
7 years ago
volatile = models.BooleanField(default=False)
asblock = models.ForeignKey(ASBlock, models.CASCADE)
description = models.CharField(max_length=64, blank=True)
7 years ago
mnt_lower = models.ManyToManyField(Maintainer, related_name='lower_asnumber_set')
7 years ago
7 years ago
#class Route(MntObject):
#
7 years ago
class InetNum(WhoisObject):
PROTO = (('ipv4', 'ipv4'), ('ipv6', 'ipv6'))
protocol = models.CharField(max_length=4, choices=PROTO)
netmask = models.PositiveIntegerField()
7 years ago
parent_range = models.ForeignKey("InetNum", models.CASCADE, null=True, blank=True, default=None)
description = models.CharField(max_length=64, blank=True)
7 years ago
7 years ago
mnt_lower = models.ManyToManyField(Maintainer)