diff options
Diffstat (limited to 'portal-gui')
-rw-r--r-- | portal-gui/rpkigui/myrpki/forms.py | 19 | ||||
-rw-r--r-- | portal-gui/rpkigui/myrpki/urls.py | 1 | ||||
-rw-r--r-- | portal-gui/rpkigui/myrpki/views.py | 19 |
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) |