diff options
author | Rob Austein <sra@hactrn.net> | 2012-08-21 16:02:12 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2012-08-21 16:02:12 +0000 |
commit | 1d333e541b64b0d556c435cdb8fbf21436b74784 (patch) | |
tree | acf6d0d8299ddca2e81533b9606b8baae0c9511c | |
parent | 0352595e313e6d3949223fa386ade9090b6cc55f (diff) |
Use .raw() SQL queries when constructing Child.resource_bag (more
Django deepcopy).
svn path=/branches/tk274/; revision=4652
-rw-r--r-- | rpkid/rpki/irdb/models.py | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/rpkid/rpki/irdb/models.py b/rpkid/rpki/irdb/models.py index 8235a33e..2f068937 100644 --- a/rpkid/rpki/irdb/models.py +++ b/rpkid/rpki/irdb/models.py @@ -476,12 +476,22 @@ class Child(CrossCertification): @property def resource_bag(self): + child_asn = rpki.irdb.ChildASN.objects.raw(""" + SELECT * + FROM irdb_childasn + WHERE child_id = %s + """, [self.id]) + child_net = list(rpki.irdb.ChildNet.objects.raw(""" + SELECT * + FROM irdb_childnet + WHERE child_id = %s + """, [self.id])) asns = rpki.resource_set.resource_set_as.from_django( - (a.start_as, a.end_as) for a in self.asns.all()) + (a.start_as, a.end_as) for a in child_asn) ipv4 = rpki.resource_set.resource_set_ipv4.from_django( - (a.start_ip, a.end_ip) for a in self.address_ranges.filter(version = 'IPv4')) + (a.start_ip, a.end_ip) for a in child_net if a.version == "IPv4") ipv6 = rpki.resource_set.resource_set_ipv6.from_django( - (a.start_ip, a.end_ip) for a in self.address_ranges.filter(version = 'IPv6')) + (a.start_ip, a.end_ip) for a in child_net if a.version == "IPv6") return rpki.resource_set.resource_bag( valid_until = self.valid_until, asn = asns, v4 = ipv4, v6 = ipv6) @@ -554,9 +564,11 @@ class ROARequestPrefix(django.db.models.Model): def as_roa_prefix(self): if self.version == 'IPv4': - return rpki.resource_set.roa_prefix_ipv4(rpki.ipaddrs.v4addr(self.prefix), self.prefixlen, self.max_prefixlen) + return rpki.resource_set.roa_prefix_ipv4(rpki.ipaddrs.v4addr(self.prefix), + self.prefixlen, self.max_prefixlen) else: - return rpki.resource_set.roa_prefix_ipv6(rpki.ipaddrs.v6addr(self.prefix), self.prefixlen, self.max_prefixlen) + return rpki.resource_set.roa_prefix_ipv6(rpki.ipaddrs.v6addr(self.prefix), + self.prefixlen, self.max_prefixlen) def as_resource_range(self): return self.as_roa_prefix().to_resource_range() |