diff options
Diffstat (limited to 'rpki/gui/app/models.py')
-rw-r--r-- | rpki/gui/app/models.py | 37 |
1 files changed, 7 insertions, 30 deletions
diff --git a/rpki/gui/app/models.py b/rpki/gui/app/models.py index 40bdbe2c..ed32e9d2 100644 --- a/rpki/gui/app/models.py +++ b/rpki/gui/app/models.py @@ -18,7 +18,6 @@ __version__ = '$Id$' from django.db import models from django.contrib.auth.models import User from django.core.mail import send_mail -from django.db.models import Q import rpki.resource_set import rpki.exceptions @@ -66,15 +65,6 @@ class Child(rpki.irdb.models.Child): proxy = True verbose_name_plural = 'children' - @property - def routes(self): - "Return a list of RouteOrigin objects (potentially) originated by this child." - query = Q() - for r in self.address_ranges.filter(version='IPv4'): - rng = r.as_resource_range() - query |= Q(prefix_min__gte=rng.min, prefix_max__lte=rng.max) - return RouteOrigin.objects.filter(query) - class ChildASN(rpki.irdb.models.ChildASN): """Proxy model for irdb ChildASN.""" @@ -131,30 +121,17 @@ class Conf(rpki.irdb.models.ResourceHolderCA): def parents(self): """Simulates irdb.models.Parent.objects, but returns app.models.Parent proxy objects. - """ + return Parent.objects.filter(issuer=self) @property def children(self): """Simulates irdb.models.Child.objects, but returns app.models.Child proxy objects. - - When running rootd, we need to exclude the Child object for self. - """ - return Child.objects.filter(issuer=self).exclude(handle=self.handle) - @property - def child_routes(self): - """Return currently announced routes for prefixes covered by child - sub-allocations. - """ - query = Q() - for pfx in ChildNet.objects.filter(child__issuer=self, version='IPv4'): - rng = pfx.as_resource_range() - query |= Q(prefix_min__gte=rng.min, prefix_max__lte=rng.max) - return RouteOrigin.objects.filter(query) + return Child.objects.filter(issuer=self) @property def ghostbusters(self): @@ -172,8 +149,8 @@ class Conf(rpki.irdb.models.ResourceHolderCA): def routes(self): """Return all IPv4 routes covered by RPKI certs issued to this resource holder. - """ + # build a Q filter to select all RouteOrigin objects covered by # prefixes in the resource holder's certificates prefixes = ResourceRangeAddressV4.objects.filter(cert__conf=self) @@ -190,8 +167,8 @@ class Conf(rpki.irdb.models.ResourceHolderCA): def routes_v6(self): """Return all IPv6 routes covered by RPKI certs issued to this resource holder. - """ + # build a Q filter to select all RouteOrigin objects covered by # prefixes in the resource holder's certificates prefixes = ResourceRangeAddressV6.objects.filter(cert__conf=self) @@ -206,6 +183,7 @@ class Conf(rpki.irdb.models.ResourceHolderCA): def send_alert(self, subject, message, from_email, severity=Alert.INFO): """Store an alert for this resource holder.""" + self.alerts.create(subject=subject, text=message, severity=severity) send_mail( @@ -221,8 +199,8 @@ class Conf(rpki.irdb.models.ResourceHolderCA): Contact emails are extract from any ghostbuster requests, and any linked user accounts. - """ + notify_emails = [gbr.email_address for gbr in self.ghostbusters if gbr.email_address] notify_emails.extend( [acl.user.email for acl in ConfACL.objects.filter(conf=self) if acl.user.email] @@ -247,7 +225,6 @@ class ResourceCert(models.Model): """Represents a resource certificate. This model is used to cache the output of <list_received_resources/>. - """ # Handle to which this cert was issued @@ -275,6 +252,7 @@ class ResourceCert(models.Model): def get_cert_chain(self): """Return a list containing the complete certificate chain for this certificate.""" + cert = self x = [cert] while cert.issuer: @@ -448,7 +426,6 @@ class RouteOriginV6(rpki.gui.routeview.models.RouteOriginV6): class ConfACL(models.Model): """Stores access control for which users are allowed to manage a given resource handle. - """ conf = models.ForeignKey(Conf) |