aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpkid/rpki/gui/app/forms.py21
-rw-r--r--rpkid/rpki/gui/app/templates/rpkigui/prefix_view.html12
-rw-r--r--rpkid/rpki/gui/app/views.py26
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