aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpkid/rpki/gui/app/templates/app/dashboard.html1
-rw-r--r--rpkid/rpki/gui/app/urls.py1
-rw-r--r--rpkid/rpki/gui/app/views.py9
3 files changed, 11 insertions, 0 deletions
diff --git a/rpkid/rpki/gui/app/templates/app/dashboard.html b/rpkid/rpki/gui/app/templates/app/dashboard.html
index 36e7c46e..dde9a765 100644
--- a/rpkid/rpki/gui/app/templates/app/dashboard.html
+++ b/rpkid/rpki/gui/app/templates/app/dashboard.html
@@ -125,6 +125,7 @@
<td>
<a class="btn btn-mini" href="{% url "rpki.gui.app.views.roa_detail" roa.pk %}" title="Detail"><i class="icon-info-sign"></i></a>
<a class="btn btn-mini" href="{% url "rpki.gui.app.views.roa_delete" roa.pk %}" title="Delete"><i class="icon-trash"></i></a>
+ <a class="btn btn-mini" href="{% url "roa-clone" roa.pk %}" title="create another ROA for this prefix"><i class="icon-repeat"></i></a>
</td>
</tr>
{% endfor %}
diff --git a/rpkid/rpki/gui/app/urls.py b/rpkid/rpki/gui/app/urls.py
index 81c56f4e..dfa0e5db 100644
--- a/rpkid/rpki/gui/app/urls.py
+++ b/rpkid/rpki/gui/app/urls.py
@@ -58,6 +58,7 @@ urlpatterns = patterns(
(r'^roa/confirm$', views.roa_create_confirm),
(r'^roa/confirm_multi$', views.roa_create_multi_confirm),
(r'^roa/(?P<pk>\d+)/delete$', views.roa_delete),
+ url(r'^roa/(?P<pk>\d+)/clone$', views.roa_clone, name="roa-clone"),
(r'^route/$', views.route_view),
(r'^route/(?P<pk>\d+)/$', views.route_detail),
(r'^user/$', views.user_list),
diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py
index a82c7c1d..9d70c890 100644
--- a/rpkid/rpki/gui/app/views.py
+++ b/rpkid/rpki/gui/app/views.py
@@ -731,6 +731,15 @@ def roa_delete(request, pk):
return render(request, 'app/roarequest_confirm_delete.html',
{'object': roa, 'routes': routes})
+
+@handle_required
+def roa_clone(request, pk):
+ conf = request.session['handle']
+ roa = get_object_or_404(conf.roas, pk=pk)
+ return redirect(
+ reverse(roa_create_multi) + "?roa=" + str(roa.prefixes.all()[0].as_roa_prefix())
+ )
+
class GhostbusterDetailView(DetailView):
def get_queryset(self):