diff options
author | Michael Elkins <melkins@tislabs.com> | 2010-07-11 12:55:13 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2010-07-11 12:55:13 +0000 |
commit | be351077f798dfcf454c5d93c204257b6e2c5918 (patch) | |
tree | ddb3778a144dc221cb4cd494c496535790d8a0be | |
parent | 4eacf4fb9a9e85d690ffaa5da1edeed0330b8f62 (diff) |
add missing template conf_empty.html to makefile.in
fix bug with missing subdivided prefixes in the unallocated resources section of the dashboard
add matching roas to the asn view
tidy up some html in prefix view
svn path=/portal-gui/Makefile.in; revision=3380
-rw-r--r-- | portal-gui/Makefile.in | 1 | ||||
-rw-r--r-- | portal-gui/rpkigui/myrpki/forms.py | 2 | ||||
-rw-r--r-- | portal-gui/rpkigui/myrpki/views.py | 25 | ||||
-rw-r--r-- | portal-gui/rpkigui/templates/myrpki/asn_view.html | 25 | ||||
-rw-r--r-- | portal-gui/rpkigui/templates/myrpki/dashboard.html | 40 | ||||
-rw-r--r-- | portal-gui/rpkigui/templates/myrpki/prefix_view.html | 23 |
6 files changed, 70 insertions, 46 deletions
diff --git a/portal-gui/Makefile.in b/portal-gui/Makefile.in index 37de2bb3..311b6c5c 100644 --- a/portal-gui/Makefile.in +++ b/portal-gui/Makefile.in @@ -61,6 +61,7 @@ INSTALL_FILES=\ rpkigui/templates/base.html \ rpkigui/templates/myrpki/asn_view.html \ rpkigui/templates/myrpki/child_view.html \ + rpkigui/templates/myrpki/conf_empty.html \ rpkigui/templates/myrpki/conf_list.html \ rpkigui/templates/myrpki/dashboard.html \ rpkigui/templates/myrpki/parent_view.html \ diff --git a/portal-gui/rpkigui/myrpki/forms.py b/portal-gui/rpkigui/myrpki/forms.py index 58df6f3e..cb5b1f2e 100644 --- a/portal-gui/rpkigui/myrpki/forms.py +++ b/portal-gui/rpkigui/myrpki/forms.py @@ -140,7 +140,7 @@ def PrefixDeleteForm(prefix, *args, **kwargs): 'Can not delete prefix received from parent' if prefix.allocated: raise forms.ValidationError, 'Prefix is allocated to child' - if prefix.asns: + 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' diff --git a/portal-gui/rpkigui/myrpki/views.py b/portal-gui/rpkigui/myrpki/views.py index dcddeeb9..98441789 100644 --- a/portal-gui/rpkigui/myrpki/views.py +++ b/portal-gui/rpkigui/myrpki/views.py @@ -211,8 +211,7 @@ def parent_import(request): def parent_view(request, parent_handle): """Detail view for a particular parent.""" handle = request.session['handle'] - parent = get_object_or_404(handle.parents.all(), - handle__exact=parent_handle) + parent = get_object_or_404(handle.parents, handle__exact=parent_handle) return render('myrpki/parent_view.html', { 'parent': parent }, request) @handle_required @@ -249,18 +248,15 @@ def child_import(request): def get_parents_or_404(handle, obj): '''Return the Parent object(s) that the given address range derives from, or raise a 404 error.''' - while obj.parent: obj = obj.parent - - cert_set = obj.from_cert.filter(parent__in=handle.parents.all()) + cert_set = top_parent(obj).from_cert.filter(parent__in=handle.parents.all()) if cert_set.count() == 0: - raise http.Http404 - - return handle.parents.filter(pk__in=[c.parent.pk for c in cert_set]) + raise http.Http404, 'Object is not delegated from any parent' + return [c.parent for c in cert_set] @handle_required def address_view(request, pk): handle = request.session['handle'] - obj = get_object_or_404(models.AddressRange.objects.all(), pk=pk) + 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) @@ -274,15 +270,16 @@ def asn_view(request, pk): obj = get_object_or_404(models.Asn.objects, pk=pk) # ensure this resource range belongs to a parent of the current conf parent_set = get_parents_or_404(handle, obj) + roas = handle.roas.filter(asn=obj.lo) # roas which contain this asn return render('myrpki/asn_view.html', - { 'asn': obj, 'parent': parent_set }, request) + { 'asn': obj, 'parent': parent_set, 'roas': roas }, request) @handle_required def child_view(request, child_handle): '''Detail view of child for the currently selected handle.''' handle = request.session['handle'] - child = get_object_or_404(handle.children.all(), handle__exact=child_handle) + child = get_object_or_404(handle.children, handle__exact=child_handle) return render('myrpki/child_view.html', { 'child': child }, request) @@ -329,12 +326,13 @@ def prefix_allocate_view(request, pk): 'addr': prefix, 'form': form, 'parent': parent_set }, request) def top_parent(prefix): + '''Returns the topmost resource from which the specified argument derives''' while prefix.parent: prefix = prefix.parent return prefix def find_roa(handle, prefix, asid): - # find all roas with prefixes from the same resource cert + '''Find a roa with prefixes from the same resource cert.''' roa_set = handle.roas.filter(asn=asid) for c in top_parent(prefix).from_cert.all(): for r in roa_set: @@ -411,9 +409,8 @@ def roa_request_delete_view(request, pk): roa = obj.roa obj.delete() if not roa.from_roa_request.all(): - print 'removing empty roa for asn %d' % (roa.asn,) roa.delete() - glue.configure_resources(handle) + glue.configure_resources(handle) return http.HttpResponseRedirect(prefix.get_absolute_url()) diff --git a/portal-gui/rpkigui/templates/myrpki/asn_view.html b/portal-gui/rpkigui/templates/myrpki/asn_view.html index 587b73db..c7720a47 100644 --- a/portal-gui/rpkigui/templates/myrpki/asn_view.html +++ b/portal-gui/rpkigui/templates/myrpki/asn_view.html @@ -1,5 +1,11 @@ {% extends "base.html" %} +{% block css %} +table { border-collapse: collapse } +th { border: solid 1px; padding: 1em } +td { border: solid 1px; text-align: center; padding-left: 1em; padding-right: 1em } +{% endblock %} + {% block content %} <p>Handle: <a href="/myrpki/">{{ request.session.handle }}</a> @@ -39,6 +45,25 @@ {% endif %} +{% if roas %} +<h2>ROAs</h2> +<table> + <tr><th>Prefixes</th></tr> + {% for r in roas %} + <tr> + <td style='text-align: left'> + <ul> + {% for p in r.from_roa_request.all %} + <li><a href="{{ p.prefix.get_absolute_url }}">{{ p.prefix }}</a> + {% endfor %} + </ul> + </td> + </tr> + {% endfor %} + </ul> +</table> +{% endif %} <!-- roas --> + {% if form %} <h2>Edit</h2> <form method="POST" action="{{ request.get_full_path }}"> diff --git a/portal-gui/rpkigui/templates/myrpki/dashboard.html b/portal-gui/rpkigui/templates/myrpki/dashboard.html index 24ad515b..be3b70b1 100644 --- a/portal-gui/rpkigui/templates/myrpki/dashboard.html +++ b/portal-gui/rpkigui/templates/myrpki/dashboard.html @@ -23,17 +23,17 @@ td { border: solid 1px; text-align: center; padding-left: 1em; padding-right: 1e {% for cert in parent.resources.all %} {% for asn in cert.asn.all %} -<tr><td><a href="{{ asn.get_absolute_url }}">{{ asn }}</a></td> -<td style='text-align: center'>{{cert.not_before}}</td> -<td style='text-align: center'>{{cert.not_after}}</td> +<tr><td style='text-align:left'><a href="{{ asn.get_absolute_url }}">{{ asn }}</a></td> +<td>{{cert.not_before}}</td> +<td>{{cert.not_after}}</td> </tr> {% endfor %} {% for address in cert.address_range.all %} -<tr><td> -<a href="{{ address.get_absolute_url }}">{{ address }}</a> -</td><td style='text-align: center'>{{cert.not_before}}</td> -<td style='text-align: center'>{{cert.not_after}}</td> +<tr> + <td style='text-align: left'><a href="{{ address.get_absolute_url }}">{{ address }}</a></td> + <td>{{cert.not_before}}</td> + <td>{{cert.not_after}}</td> </tr> {% endfor %} @@ -77,22 +77,22 @@ td { border: solid 1px; text-align: center; padding-left: 1em; padding-right: 1e </div> -<div style="border: outset"> +<div style="border: outset"> <!-- ROAs --> <h1 style="text-align: center">My ROA [request]s</h1> <table> -<tr> -<th>Prefix</th> -<th>ASN</th> -</tr> +<tr> <th>Prefix</th> <th>ASN</th> </tr> {% for roa in request.session.handle.roas.all %} -<tr><td> +<tr> + <td style='text-align: left'> + <ul style='list-style-position: outside'> {% for req in roa.from_roa_request.all %} -<li><a href="{{ req.prefix.get_absolute_url }}">{{ req.as_roa_prefix }}</a> + <li><a href="{{ req.prefix.get_absolute_url }}">{{ req.as_roa_prefix }}</a> {% endfor %} -</td> -<td>{{ roa.asn }}</td> + </ul> + </td> + <td>{{ roa.asn }}</td> </tr> {% endfor %} </table> @@ -104,14 +104,14 @@ td { border: solid 1px; text-align: center; padding-left: 1em; padding-right: 1e <table> {% for asn in asns %} <tr> -<td><a href="{{ asn.get_absolute_url }}">{{ asn }}</a></td> -<td style='padding-left: 2em'> <a href="{{ asn.get_absolute_url }}/allocate">give</a></td> +<td style='text-align: left'><a href="{{ asn.get_absolute_url }}">{{ asn }}</a></td> +<td><a href="{{ asn.get_absolute_url }}/allocate">give</a></td> </tr> {% endfor %} {% for addr in ars %} <tr> -<td><a href="{{ addr.get_absolute_url }}">{{ addr }}</a></td> -<td style='padding-left: 2em'><a href="{{ addr.get_absolute_url }}/allocate">give</a> +<td style='text-align: left'><a href="{{ addr.get_absolute_url }}">{{ addr }}</a></td> +<td><a href="{{ addr.get_absolute_url }}/allocate">give</a> | <a href="{{ addr.get_absolute_url }}/split">split</a> | <a href="{{ addr.get_absolute_url }}/roa">roa</a></td> </tr> diff --git a/portal-gui/rpkigui/templates/myrpki/prefix_view.html b/portal-gui/rpkigui/templates/myrpki/prefix_view.html index be273f05..ec4132e1 100644 --- a/portal-gui/rpkigui/templates/myrpki/prefix_view.html +++ b/portal-gui/rpkigui/templates/myrpki/prefix_view.html @@ -30,34 +30,35 @@ td { border: solid 1px; text-align: center; padding-left: 1em; padding-right: 1e <tr><td>Validity:</td><td>{{ addr.from_cert.all.0.not_before }} - {{ addr.from_cert.all.0.not_after }} </td></tr> {% if addr.allocated %} - <tr><td>Allocated:</td><td><a href="{{addr.allocated.get_absolute_url}}">{{addr.allocated.handle}}</a></td></tr> + <tr> + <td>Allocated:</td> + <td><a href="{{addr.allocated.get_absolute_url}}">{{ addr.allocated.handle }}</a></td> + </tr> {% endif %} </table> {% if addr.children.count %} <h2>Suballocations</h2> - <ul> {% for subaddr in addr.children.all %} -<li><a href="{{ subaddr.get_absolute_url }}">{{ subaddr }}</a> + <li><a href="{{ subaddr.get_absolute_url }}">{{ subaddr }}</a> {% endfor %} </ul> +{% endif %} <!-- suballocations --> -{% endif %} - -{% if addr.roa_requests %} +{% if addr.roa_requests.count %} <h2>ROA requests</h2> <table> <tr><th>ASN</th><th>Max Length</th></tr> {% for r in addr.roa_requests.all %} - <tr><td>{{ r.roa.asn }}</td> + <tr> + <td>{{ r.roa.asn }}</td> <td>{{ r.max_length }}</td> - <td><a href="{{ r.get_absolute_url }}/delete">delete</a></tr> + <td><a href="{{ r.get_absolute_url }}/delete">delete</a></td> + </tr> {% endfor %} - </table> - {% endif %} <!-- roa requests --> {% if form %} @@ -66,7 +67,7 @@ td { border: solid 1px; text-align: center; padding-left: 1em; padding-right: 1e {{ form.as_p }} <input type="submit"> </form> -{% endif %} +{% endif %} <!-- form --> <p>Action: <a href="{{addr.get_absolute_url}}/split">split</a> | |