aboutsummaryrefslogtreecommitdiff
path: root/rpki/gui/app/views.py
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2015-03-04 23:53:01 +0000
committerMichael Elkins <melkins@tislabs.com>2015-03-04 23:53:01 +0000
commitdc9b65ec2ebac99eae264a4761ed68e1c7156810 (patch)
tree35216b6d3afbc3078de56c5d0f3586ae4715f24f /rpki/gui/app/views.py
parent8bc4171157cee26f08c3e131e1f7f905b9e1efb6 (diff)
add checkbox to ROA creation form to optionally create additional ROAs for child routes that will become invalid as the result the parent creating a ROA.
see #719 svn path=/trunk/; revision=6066
Diffstat (limited to 'rpki/gui/app/views.py')
-rw-r--r--rpki/gui/app/views.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/rpki/gui/app/views.py b/rpki/gui/app/views.py
index c739b55e..95b6f431 100644
--- a/rpki/gui/app/views.py
+++ b/rpki/gui/app/views.py
@@ -39,7 +39,6 @@ from django.contrib.auth.models import User
from django.views.generic import DetailView, ListView, DeleteView, FormView
from django.core.paginator import Paginator, InvalidPage
from django.forms.formsets import formset_factory, BaseFormSet
-import django.db.models
from django.contrib import messages
from rpki.irdb import Zookeeper, ChildASN, ChildNet, ROARequestPrefix
@@ -728,13 +727,24 @@ def roa_create_multi(request):
asn = form.cleaned_data['asn']
rng = resource_range_ip.parse_str(form.cleaned_data['prefix'])
max_prefixlen = int(form.cleaned_data['max_prefixlen'])
+ protect_children = form.cleaned_data['protect_children']
+
# FIXME: This won't do the right thing in the event that a
# route is covered by multiple ROAs created in the form.
# You will see duplicate entries, each with a potentially
# different validation status.
- routes.extend(get_covered_routes(rng, max_prefixlen, asn))
+ covered = get_covered_routes(rng, max_prefixlen, asn)
+ routes.extend(covered)
v.append({'prefix': str(rng), 'max_prefixlen': max_prefixlen,
'asn': asn})
+
+ if protect_children:
+ for r in conf.child_routes.filter(pk__in=[c.pk for c in covered if c.newstatus == 'invalid']):
+ rng = r.as_resource_range()
+ v.append({'prefix': str(rng),
+ 'max_prefixlen': rng.prefixlen,
+ 'asn': r.asn})
+
# if there were no rows, skip the confirmation step
if v:
formset = formset_factory(forms.ROARequestConfirm, extra=0)(initial=v)