aboutsummaryrefslogtreecommitdiff
path: root/portal-gui/rpkigui/myrpki/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'portal-gui/rpkigui/myrpki/models.py')
-rw-r--r--portal-gui/rpkigui/myrpki/models.py166
1 files changed, 85 insertions, 81 deletions
diff --git a/portal-gui/rpkigui/myrpki/models.py b/portal-gui/rpkigui/myrpki/models.py
index 85e23228..d062698e 100644
--- a/portal-gui/rpkigui/myrpki/models.py
+++ b/portal-gui/rpkigui/myrpki/models.py
@@ -1,104 +1,108 @@
from django.db import models
from django.contrib.auth.models import Group
-# TO DO:
-# URL: text?
-class HandleField( models.CharField ):
- def __init__( self, **kwargs ):
- models.CharField.__init__( self, max_length=255, **kwargs )
+class HandleField(models.CharField):
+ def __init__(self, **kwargs):
+ models.CharField.__init__(self, max_length=255, **kwargs)
class IPAddressField( models.CharField ):
def __init__( self, **kwargs ):
- models.CharField.__init__( self, max_length=40, **kwargs )
-
-class Cert( models.Model ):
- '''A certificate, relating to a single configuration.'''
- conf = models.ForeignKey( 'Conf', related_name='certs' )
- name = models.CharField( unique=True, max_length=255 )
- data = models.TextField()
- def __unicode__( self ):
- return "%s's %s" % ( self.conf, self.name )
+ models.CharField.__init__(self, max_length=40, **kwargs)
-class Conf( models.Model ):
+class Conf(models.Model):
'''This is the center of the universe, also known as a place to
have a handle on a resource-holding entity. It's the <self>
- in the rpkid schema.
- '''
- handle = HandleField( unique=True, db_index=True )
- repository_bpki_cert = models.ForeignKey( Cert,
- related_name='conf_bpki_cert',
- null=True, blank=True )
- my_bpki_ta = models.ForeignKey( Cert, related_name='conf_my_ta',
- null=True, blank=True )
- repository_handle = HandleField()
- owner = models.OneToOneField( Group )
- def __unicode__( self ):
+ in the rpkid schema.'''
+ handle = HandleField(unique=True, db_index=True)
+ owner = models.OneToOneField(Group)
+
+ def __unicode__(self):
return self.handle
-class AddressRange( models.Model ):
- '''An address range / prefix.'''
- lo = IPAddressField()
- hi = IPAddressField()
- parent = models.ForeignKey( 'AddressRange', related_name='children',
- blank=True, null=True )
- def __unicode__( self ):
- return u"address range %s-%s" % ( self.lo, self.hi )
+class AddressRange(models.Model):
+ '''An address range/prefix.'''
+ lo = IPAddressField(blank=False)
+ hi = IPAddressField(blank=False)
+ # parent address range
+ parent = models.ForeignKey('AddressRange', related_name='children',
+ blank=True, null=True)
+ allocated = models.ForeignKey('Child', related_name='address_range',
+ blank=True, null=True)
+
+ def __unicode__(self):
+ if self.lo == self.hi:
+ return u"address %s" % (self.lo,)
+ else:
+ return u"address range %s-%s" % (self.lo, self.hi)
+
+ def get_absolute_url(self):
+ return u'/myrpki/address/%d' % (self.pk,)
-class Asn( models.Model ):
+class Asn(models.Model):
'''An ASN or range thereof.'''
- min = models.IntegerField()
- max = models.IntegerField()
- parent = models.ForeignKey( 'Asn', related_name='children',
- blank=True, null=True )
- def __unicode__( self ):
- if self.min == self.max:
- return u"ASN %d" % ( self.min )
+ lo = models.IntegerField(blank=False)
+ hi = models.IntegerField(blank=False)
+ # parent asn range
+ parent = models.ForeignKey('Asn', related_name='children',
+ blank=True, null=True)
+ allocated = models.ForeignKey('Child', related_name='asn',
+ blank=True, null=True)
+
+ def __unicode__(self):
+ if self.lo == self.hi:
+ return u"ASN %d" % (self.lo,)
else:
- return u"ASNs %d-%d" % ( self.min, self.max )
+ return u"ASNs %d-%d" % (self.lo, self.hi)
-class Child( models.Model ):
- conf = models.ForeignKey( Conf, related_name='children' )
- handle = HandleField()
+ def get_absolute_url(self):
+ return u'/myrpki/asn/%d' % (self.pk,)
+
+class Child(models.Model):
+ conf = models.ForeignKey(Conf, related_name='children')
+ handle = HandleField() # parent's name for child
validity = models.DateTimeField()
- bpki_cert = models.ForeignKey( Cert, related_name='child_bpki' )
- # It may seem strange that the address_range and asn fields
- # are ManyToManyFields. Why not simply a ForeignKey from an Asn
- # and an AddressRange? This is for transition. When a resource
- # is moving from one child to another, we may have to be delegating
- # it to both children at once.
- address_range = models.ManyToManyField( AddressRange, blank=True )
- asn = models.ManyToManyField( Asn, blank=True )
- def __unicode__( self ):
- return u"%s's child %s" % ( self.conf, self.handle )
+
+ def __unicode__(self):
+ return u"%s's child %s" % (self.conf, self.handle)
+
+ def get_absolute_url(self):
+ return u'/myrpki/child/%s' % (self.handle,)
+
class Meta:
verbose_name_plural = "children"
+ # children of a specific configuration should be unique
+ unique_together = ('conf', 'handle')
+
+class Parent(models.Model):
+ conf = models.ForeignKey(Conf, related_name='parents')
+ handle = HandleField()
+# service_uri = models.URLField( verify_exists=False )
+# sia_base = models.URLField( verify_exists=False )
+
+ # resources granted from my parent
+ address_range = models.ManyToManyField(AddressRange, blank=True,
+ related_name='from_parent')
+ asn = models.ManyToManyField(Asn, related_name='from_parent', blank=True)
+
+ def __unicode__(self):
+ return u"%s's parent %s" % (self.conf, self.handle)
+ def get_absolute_url(self):
+ return u'/myrpki/parent/%s' % (self.handle,)
-class Parent( models.Model ):
- conf = models.ForeignKey( Conf, related_name='parents' )
- handle = HandleField( unique=True )
- service_uri = models.URLField( verify_exists=False )
- cms_bpki_cert = models.ForeignKey( Cert, related_name='parent_cms' )
- https_bpki_cert = models.ForeignKey( Cert, related_name='parent_https' )
- my_handle = HandleField()
- sia_base = models.URLField( verify_exists=False )
- # It may seem strange that the address_range and asn fields
- # are ManyToManyFields. Why not simply a ForeignKey from an Asn
- # and an AddressRange? This is for transition. When a resource
- # is moving from one parent to another, we may be receiving the
- # resource from both parents at once.
- address_range = models.ManyToManyField( AddressRange,
- related_name='from_parent' )
- asn = models.ManyToManyField( Asn, related_name='from_parent' )
- def __unicode__( self ):
- return u"%s's parent %s" % ( self.conf, self.handle )
-
-class Roa( models.Model ):
- conf = models.ForeignKey( Conf, related_name='roas' )
- prefix = models.ManyToManyField( AddressRange )
+ class Meta:
+ # parents of a specific configuration should be unique
+ unique_together = ('conf', 'handle')
+
+class Roa(models.Model):
+ conf = models.ForeignKey(Conf, related_name='roas')
+ prefix = models.ManyToManyField(AddressRange)
max_len = models.IntegerField()
asn = models.IntegerField()
- active = models.BooleanField()
comments = models.TextField()
- def __unicode__( self ):
- return u"%s's ROA for %d" % ( self.conf, self.asn )
+
+ def __unicode__(self):
+ return u"%s's ROA for %d" % (self.conf, self.asn)
+
+ def get_absolute_url(self):
+ return u'/myrpki/roa/%d' % (self.pk, )