aboutsummaryrefslogtreecommitdiff
path: root/portal-gui
diff options
context:
space:
mode:
Diffstat (limited to 'portal-gui')
-rw-r--r--portal-gui/rpkigui/myrpki/forms.py19
-rw-r--r--portal-gui/rpkigui/myrpki/urls.py1
-rw-r--r--portal-gui/rpkigui/myrpki/views.py19
3 files changed, 39 insertions, 0 deletions
diff --git a/portal-gui/rpkigui/myrpki/forms.py b/portal-gui/rpkigui/myrpki/forms.py
index fbd02df9..866be7dd 100644
--- a/portal-gui/rpkigui/myrpki/forms.py
+++ b/portal-gui/rpkigui/myrpki/forms.py
@@ -240,4 +240,23 @@ class PrefixRoaForm(forms.Form):
raise forms.ValidationError, 'must be a list of integers separated by commas'
return self.cleaned_data['asns']
+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.asns:
+ raise forms.ValidationError, 'Prefix is used in your ROAs'
+ if prefix.children.all():
+ raise forms.ValidationError, 'Prefix has been subdivided'
+ return self.cleaned_data
+
+ return _wrapped(*args, **kwargs)
+
# vim:sw=4 ts=8 expandtab
diff --git a/portal-gui/rpkigui/myrpki/urls.py b/portal-gui/rpkigui/myrpki/urls.py
index 6290ddf5..be6277d3 100644
--- a/portal-gui/rpkigui/myrpki/urls.py
+++ b/portal-gui/rpkigui/myrpki/urls.py
@@ -20,6 +20,7 @@ urlpatterns = patterns('',
(r'^address/(?P<pk>\d+)/split$', views.prefix_split_view),
(r'^address/(?P<pk>\d+)/allocate$', views.prefix_allocate_view),
(r'^address/(?P<pk>\d+)/roa$', views.prefix_roa_view),
+ (r'^address/(?P<pk>\d+)/delete$', views.prefix_delete_view),
(r'^asn/(?P<pk>\d+)$', views.asn_view),
(r'^asn/(?P<pk>\d+)/allocate$', views.asn_allocate_view),
# (r'^roa/$', views.roa_edit ),
diff --git a/portal-gui/rpkigui/myrpki/views.py b/portal-gui/rpkigui/myrpki/views.py
index 1704b907..c42e9211 100644
--- a/portal-gui/rpkigui/myrpki/views.py
+++ b/portal-gui/rpkigui/myrpki/views.py
@@ -538,6 +538,25 @@ def prefix_roa_view(request, pk):
'addr': obj, 'form': form, 'parent': parent_set }, request)
@handle_required
+def prefix_delete_view(request, pk):
+ handle = request.session['handle']
+ obj = get_object_or_404(models.AddressRange.objects, pk=pk)
+ # ensure this resource range belongs to a parent of the current conf
+ parent_set = get_parents_or_404(handle, obj)
+
+ if request.method == 'POST':
+ form = forms.PrefixDeleteForm(obj, request.POST)
+ if form.is_valid():
+ if form.cleaned_data['delete']:
+ obj.delete()
+ return http.HttpResponseRedirect('/myrpki/')
+ else:
+ form = forms.PrefixDeleteForm(obj)
+
+ return render('myrpki/prefix_view.html', { 'form': form,
+ 'addr': obj, 'form': form, 'parent': parent_set }, request)
+
+@handle_required
def asn_allocate_view(request, pk):
handle = request.session['handle']
obj = get_object_or_404(models.Asn.objects, pk=pk)