diff options
-rw-r--r-- | rpkid/rpki/gui/app/forms.py | 21 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/templates/rpkigui/prefix_view.html | 12 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/views.py | 26 |
3 files changed, 36 insertions, 23 deletions
diff --git a/rpkid/rpki/gui/app/forms.py b/rpkid/rpki/gui/app/forms.py index 86c3d6d8..bb796731 100644 --- a/rpkid/rpki/gui/app/forms.py +++ b/rpkid/rpki/gui/app/forms.py @@ -126,20 +126,17 @@ def PrefixRoaForm(prefix, *args, **kwargs): def PrefixDeleteForm(prefix, *args, **kwargs): class _wrapped(forms.Form): - delete = forms.BooleanField(label='Yes, I want to delete this prefix:') def clean(self): - v = self.cleaned_data.get('delete') - if v: - if not prefix.parent: - raise forms.ValidationError, \ - 'Can not delete prefix received from parent' - if prefix.allocated: - raise forms.ValidationError, 'Prefix is allocated to child' - if prefix.roa_requests.all(): - raise forms.ValidationError, 'Prefix is used in your ROAs' - if prefix.children.all(): - raise forms.ValidationError, 'Prefix has been subdivided' + if not prefix.parent: + raise forms.ValidationError, \ + 'Can not delete prefix received from parent' + if prefix.allocated: + raise forms.ValidationError, 'Prefix is allocated to child' + if prefix.roa_requests.all(): + raise forms.ValidationError, 'Prefix is used in your ROAs' + if prefix.children.all(): + raise forms.ValidationError, 'Prefix has been split' return self.cleaned_data return _wrapped(*args, **kwargs) diff --git a/rpkid/rpki/gui/app/templates/rpkigui/prefix_view.html b/rpkid/rpki/gui/app/templates/rpkigui/prefix_view.html index effbfd89..8d02e9ad 100644 --- a/rpkid/rpki/gui/app/templates/rpkigui/prefix_view.html +++ b/rpkid/rpki/gui/app/templates/rpkigui/prefix_view.html @@ -59,9 +59,9 @@ td { border: solid 1px; text-align: center; padding-left: 1em; padding-right: 1e {% if addr.children.count %} <h2>Suballocations</h2> <ul> -{% for subaddr in addr.children.all %} - <li><a href="{{ subaddr.get_absolute_url }}">{{ subaddr }}</a> -{% endfor %} + {% for subaddr in addr.children.all %} + <li><a href="{{ subaddr.get_absolute_url }}">{{ subaddr }}</a></li> + {% endfor %} </ul> {% endif %} <!-- suballocations --> @@ -84,17 +84,19 @@ td { border: solid 1px; text-align: center; padding-left: 1em; padding-right: 1e <h2>Unallocated</h2> <ul> {% for u in unallocated %} - <li>{{ u }} + <li>{{ u }}</li> {% endfor %} </ul> {% endif %} {% if form %} -<h2>Edit</h2> +<div style='background-color: #dddddd'> +<h2>{{ form_title }}</h2> <form method="POST" action="{{ request.get_full_path }}">{% csrf_token %} {{ form.as_p }} <input type="submit"> </form> +</div> {% endif %} <!-- form --> {% endblock %} diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py index 889a1bd3..0a81ed07 100644 --- a/rpkid/rpki/gui/app/views.py +++ b/rpkid/rpki/gui/app/views.py @@ -197,12 +197,14 @@ class PrefixView(object): '''Extensible view for address ranges/prefixes. This view can be subclassed to add form handling for editing the prefix.''' + form = None + form_title = None + def __init__(self, request, pk, form_class=None): self.handle = request.session['handle'] self.obj = get_object_or_404(models.AddressRange.objects, pk=pk) # ensure this resource range belongs to a parent of the current conf self.parent_set = get_parents_or_404(self.handle, self.obj) - self.form = None self.form_class = form_class self.request = request @@ -219,7 +221,9 @@ class PrefixView(object): u = AllocationTree.AllocationTreeIP.from_prefix(self.obj).unallocated() return render('rpkigui/prefix_view.html', - { 'addr': self.obj, 'parent': self.parent_set, 'unallocated': u, 'form': self.form }, + { 'addr': self.obj, 'parent': self.parent_set, 'unallocated': u, + 'form': self.form, + 'form_title': self.form_title if self.form_title else 'Edit' }, self.request) def handle_get(self): @@ -251,6 +255,9 @@ def address_view(request, pk): class PrefixSplitView(PrefixView): '''Class for handling the prefix split form.''' + + form_title = 'Split' + def form_valid(self): r = misc.parse_resource_range(self.form.cleaned_data['prefix']) obj = models.AddressRange(lo=str(r.min), hi=str(r.max), parent=self.obj) @@ -263,6 +270,9 @@ def prefix_split_view(request, pk): class PrefixAllocateView(PrefixView): '''Class to handle the allocation to child form.''' + + form_title = 'Give to Child' + def handle_get(self): self.form = forms.PrefixAllocateForm( self.obj.allocated.pk if self.obj.allocated else None, @@ -312,6 +322,9 @@ def add_roa_requests(handle, prefix, asns, max_length): class PrefixRoaView(PrefixView): '''Class for handling the ROA creation form.''' + + form_title = 'Issue ROA' + def form_valid(self): asns = asnset(self.form.cleaned_data['asns']) add_roa_requests(self.handle, self.obj, asns, self.form.cleaned_data['max_length']) @@ -323,10 +336,11 @@ def prefix_roa_view(request, pk): return PrefixRoaView(request, pk, form_class=forms.PrefixRoaForm)() class PrefixDeleteView(PrefixView): + form_title = 'Delete' + def form_valid(self): - if self.form.cleaned_data['delete']: - self.obj.delete() - return http.HttpResponseRedirect('/myrpki/') + self.obj.delete() + return http.HttpResponseRedirect(reverse(dashboard)) @handle_required def prefix_delete_view(request, pk): @@ -481,7 +495,7 @@ def myrpki_xml(request, self_handle): log = request.META['wsgi.errors'] if request.method == 'POST': - fname = glue.confpath(self_handle) + '/myrpki.xml' + fname = glue.confpath(self_handle, '/myrpki.xml') if not os.path.exists(fname): print >>log, 'Saving a copy of myrpki.xml for handle %s to inbox' % conf.handle |