diff options
author | Michael Elkins <melkins@tislabs.com> | 2011-03-30 23:29:56 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2011-03-30 23:29:56 +0000 |
commit | ce8caea1afe5ce7fad6b91df443fcf1f6c24308b (patch) | |
tree | 13347574fd69f37f585220285bca142c9f065da3 /rpkid | |
parent | f39e0d406e606c7ef6340c5e082da261a6599859 (diff) |
add support for editing the validity period for child resource certs
svn path=/rpkid/rpki/gui/app/forms.py; revision=3753
Diffstat (limited to 'rpkid')
-rw-r--r-- | rpkid/rpki/gui/app/forms.py | 9 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/models.py | 2 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/templates/rpkigui/child_form.html | 20 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/templates/rpkigui/child_view.html | 33 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/urls.py | 1 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/views.py | 17 |
6 files changed, 74 insertions, 8 deletions
diff --git a/rpkid/rpki/gui/app/forms.py b/rpkid/rpki/gui/app/forms.py index bb796731..f952c593 100644 --- a/rpkid/rpki/gui/app/forms.py +++ b/rpkid/rpki/gui/app/forms.py @@ -197,4 +197,13 @@ def GhostbusterForm(parent_qs, conf=None): return wrapped +class ChildForm(forms.ModelForm): + """ + Subclass for editing rpki.gui.app.models.Child objects. + """ + + class Meta: + model = models.Child + exclude = [ 'conf', 'handle' ] + # vim:sw=4 ts=8 expandtab diff --git a/rpkid/rpki/gui/app/models.py b/rpkid/rpki/gui/app/models.py index 0a5b12ad..12574ddc 100644 --- a/rpkid/rpki/gui/app/models.py +++ b/rpkid/rpki/gui/app/models.py @@ -155,7 +155,7 @@ class Asn(models.Model): class Child(models.Model): conf = models.ForeignKey(Conf, related_name='children') handle = HandleField() # parent's name for child - valid_until = models.DateTimeField() + valid_until = models.DateTimeField(help_text='date and time when authorization to use delegated resources ends') def __unicode__(self): return u"%s's child %s" % (self.conf, self.handle) diff --git a/rpkid/rpki/gui/app/templates/rpkigui/child_form.html b/rpkid/rpki/gui/app/templates/rpkigui/child_form.html new file mode 100644 index 00000000..1737fc43 --- /dev/null +++ b/rpkid/rpki/gui/app/templates/rpkigui/child_form.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} + +{% block content %} + +<p id='breadcrumb'> +<a href="{% url rpki.gui.app.views.dashboard %}">{{ request.session.handle.handle }}</a> > +<a href="{{ child.get_absolute_url }}">{{ child.handle }}</a> > Edit +</p> + +<h1>Edit Child</h1> + +<p><span style='font-weight:bold'>Child:</span> {{ child.handle }}</p> + +<form method='POST' action='{{ request.get_full_path }}'> + {% csrf_token %} + {{ form.as_p }} + <input type='submit'/> +</form> + +{% endblock %} diff --git a/rpkid/rpki/gui/app/templates/rpkigui/child_view.html b/rpkid/rpki/gui/app/templates/rpkigui/child_view.html index 137f27c4..f5b6afe9 100644 --- a/rpkid/rpki/gui/app/templates/rpkigui/child_view.html +++ b/rpkid/rpki/gui/app/templates/rpkigui/child_view.html @@ -1,16 +1,28 @@ {% extends "base.html" %} +{% block sidebar %} +<ul class='compact'> + <li><a href="{{ child.get_absolute_url }}/edit">edit</a></li> +</ul> +{% endblock %} + {% block content %} <p id='breadcrumb'> -<a href="{% url rpki.gui.app.views.dashboard %}">{{ request.session.handle.handle }}</a> > Child View > {{ child.handle }} +<a href="{% url rpki.gui.app.views.dashboard %}">{{ request.session.handle.handle }}</a> > {{ child.handle }} </p> <h1>Child View</h1> -<p> -Child: {{ child.handle }}<br/> -Valid until: {{ child.valid_until }} -</p> +<table> + <tr> + <td>Child</td> + <td>{{ child.handle }}</td> + </tr> + <tr> + <td>Valid until</td> + <td>{{ child.valid_until }}</td> + </tr> +</table> <h2>Delegated Addresses</h2> {% if child.address_range.all %} @@ -20,7 +32,7 @@ Valid until: {{ child.valid_until }} {% endfor %} </ul> {% else %} -<p>--none--</p> +<p style='font-style:italic'>none</p> {% endif %} <h2>Delegated ASNs</h2> @@ -31,7 +43,14 @@ Valid until: {{ child.valid_until }} {% endfor %} </ul> {% else %} -<p>--none--</p> +<p style='font-style:italic'>none</p> +{% endif %} + +{% if form %} +<form method='POST' action='{{ request.get_full_path }}'> + {% csrf_token %} + <input type='submit'/> +</form> {% endif %} {% endblock %} diff --git a/rpkid/rpki/gui/app/urls.py b/rpkid/rpki/gui/app/urls.py index c6f06fb8..967baeca 100644 --- a/rpkid/rpki/gui/app/urls.py +++ b/rpkid/rpki/gui/app/urls.py @@ -26,6 +26,7 @@ urlpatterns = patterns('', (r'^conf/select$', views.conf_select), (r'^parent/(?P<parent_handle>[^/]+)$', views.parent_view), (r'^child/(?P<child_handle>[^/]+)$', views.child_view), + (r'^child/(?P<child_handle>[^/]+)/edit$', views.child_edit), (r'^address/(?P<pk>\d+)$', views.address_view), (r'^address/(?P<pk>\d+)/split$', views.prefix_split_view), (r'^address/(?P<pk>\d+)/allocate$', views.prefix_allocate_view), diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py index 0a81ed07..2f091c67 100644 --- a/rpkid/rpki/gui/app/views.py +++ b/rpkid/rpki/gui/app/views.py @@ -193,6 +193,23 @@ def child_view(request, child_handle): return render('rpkigui/child_view.html', { 'child': child }, request) +@handle_required +def child_edit(request, child_handle): + """Edit the end validity date for a resource handle's child.""" + handle = request.session['handle'] + child = get_object_or_404(handle.children, handle__exact=child_handle) + + if request.method == 'POST': + form = forms.ChildForm(request.POST, request.FILES, instance=child) + if form.is_valid(): + form.save() + glue.configure_resources(request.META['wsgi.errors'], handle) + return http.HttpResponseRedirect(child.get_absolute_url()) + else: + form = forms.ChildForm(instance=child) + + return render('rpkigui/child_form.html', { 'child': child, 'form': form }, request) + class PrefixView(object): '''Extensible view for address ranges/prefixes. This view can be subclassed to add form handling for editing the prefix.''' |