diff options
author | Michael Elkins <melkins@tislabs.com> | 2015-03-04 23:53:01 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2015-03-04 23:53:01 +0000 |
commit | dc9b65ec2ebac99eae264a4761ed68e1c7156810 (patch) | |
tree | 35216b6d3afbc3078de56c5d0f3586ae4715f24f /rpki/gui/app/views.py | |
parent | 8bc4171157cee26f08c3e131e1f7f905b9e1efb6 (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.py | 14 |
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) |