aboutsummaryrefslogtreecommitdiff
path: root/rpkid
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2011-03-30 23:29:56 +0000
committerMichael Elkins <melkins@tislabs.com>2011-03-30 23:29:56 +0000
commitce8caea1afe5ce7fad6b91df443fcf1f6c24308b (patch)
tree13347574fd69f37f585220285bca142c9f065da3 /rpkid
parentf39e0d406e606c7ef6340c5e082da261a6599859 (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.py9
-rw-r--r--rpkid/rpki/gui/app/models.py2
-rw-r--r--rpkid/rpki/gui/app/templates/rpkigui/child_form.html20
-rw-r--r--rpkid/rpki/gui/app/templates/rpkigui/child_view.html33
-rw-r--r--rpkid/rpki/gui/app/urls.py1
-rw-r--r--rpkid/rpki/gui/app/views.py17
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> &gt;
+<a href="{{ child.get_absolute_url }}">{{ child.handle }}</a> &gt; 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> &gt; Child View &gt; {{ child.handle }}
+<a href="{% url rpki.gui.app.views.dashboard %}">{{ request.session.handle.handle }}</a> &gt; {{ 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.'''