aboutsummaryrefslogtreecommitdiff
path: root/rpkid
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2013-06-27 17:05:53 +0000
committerMichael Elkins <melkins@tislabs.com>2013-06-27 17:05:53 +0000
commitdc95d563979b8adaf5340cdcd8e29e9740a4adb6 (patch)
treed62d76af62225d120436279618ddabb079044895 /rpkid
parent58098f3f393c4e925648139bb0ab3e3e422c61c8 (diff)
add button to delete all alerts
rpkigui-reset-demo will clear all alerts for labuser* accounts see #562 svn path=/trunk/; revision=5421
Diffstat (limited to 'rpkid')
-rw-r--r--rpkid/portal-gui/scripts/rpkigui-reset-demo.py3
-rw-r--r--rpkid/rpki/gui/app/models.py3
-rw-r--r--rpkid/rpki/gui/app/templates/app/alert_confirm_clear.html21
-rw-r--r--rpkid/rpki/gui/app/templates/app/alert_list.html5
-rw-r--r--rpkid/rpki/gui/app/urls.py1
-rw-r--r--rpkid/rpki/gui/app/views.py14
6 files changed, 46 insertions, 1 deletions
diff --git a/rpkid/portal-gui/scripts/rpkigui-reset-demo.py b/rpkid/portal-gui/scripts/rpkigui-reset-demo.py
index 3c5c11a1..e1ff6134 100644
--- a/rpkid/portal-gui/scripts/rpkigui-reset-demo.py
+++ b/rpkid/portal-gui/scripts/rpkigui-reset-demo.py
@@ -35,6 +35,7 @@ for n in xrange(1, 33):
print 'removing objects for ' + username
for cls in (ROARequest, GhostbusterRequest):
cls.objects.filter(issuer__handle=username).delete()
- print '... updating resource certificate cache'
conf = Conf.objects.get(handle=username)
+ conf.clear_alerts()
+ print '... updating resource certificate cache'
list_received_resources(sys.stdout, conf)
diff --git a/rpkid/rpki/gui/app/models.py b/rpkid/rpki/gui/app/models.py
index 5b33be5e..7d643fdc 100644
--- a/rpkid/rpki/gui/app/models.py
+++ b/rpkid/rpki/gui/app/models.py
@@ -197,6 +197,9 @@ class Conf(rpki.irdb.models.ResourceHolderCA):
)
return notify_emails
+ def clear_alerts(self):
+ self.alerts.all().delete()
+
class Meta:
proxy = True
diff --git a/rpkid/rpki/gui/app/templates/app/alert_confirm_clear.html b/rpkid/rpki/gui/app/templates/app/alert_confirm_clear.html
new file mode 100644
index 00000000..5d7fcf04
--- /dev/null
+++ b/rpkid/rpki/gui/app/templates/app/alert_confirm_clear.html
@@ -0,0 +1,21 @@
+{% extends "app/app_base.html" %}
+{% load url from future %}
+
+{% block content %}
+<div class='page-header'>
+ <h1>Delete all alerts</h1>
+</div>
+
+<div class="row-fluid">
+ <div class="alert">
+ Please confirm that you would like to delete all alerts.
+ </div>
+ <form method="POST">
+ {% csrf_token %}
+ <div class="form-actions">
+ <button class="btn btn-danger" type="submit"><i class="icon-trash"></i> Delete All</button>
+ <a class="btn" href="{% url "alert-list" %}">Cancel</a>
+ </div>
+ </form>
+</div>
+{% endblock %}
diff --git a/rpkid/rpki/gui/app/templates/app/alert_list.html b/rpkid/rpki/gui/app/templates/app/alert_list.html
index 83c8232e..dd0530e4 100644
--- a/rpkid/rpki/gui/app/templates/app/alert_list.html
+++ b/rpkid/rpki/gui/app/templates/app/alert_list.html
@@ -1,4 +1,5 @@
{% extends "app/app_base.html" %}
+{% load url from future %}
{% block content %}
<div class="page-header">
@@ -23,4 +24,8 @@
{% endfor %}
</tbody>
</table>
+
+<div class='row-fluid'>
+ <a class="btn btn-danger" href="{% url 'alert-clear-all' %}"><i class='icon-trash'></i> Delete All</a>
+</div>
{% endblock content %}
diff --git a/rpkid/rpki/gui/app/urls.py b/rpkid/rpki/gui/app/urls.py
index 8e61337c..92e90b0e 100644
--- a/rpkid/rpki/gui/app/urls.py
+++ b/rpkid/rpki/gui/app/urls.py
@@ -22,6 +22,7 @@ urlpatterns = patterns(
'',
(r'^$', views.dashboard),
url(r'^alert/$', views.AlertListView.as_view(), name='alert-list'),
+ url(r'^alert/clear_all$', views.alert_clear_all, name='alert-clear-all'),
url(r'^alert/(?P<pk>\d+)/$', views.AlertDetailView.as_view(),
name='alert-detail'),
url(r'^alert/(?P<pk>\d+)/delete$', views.AlertDeleteView.as_view(),
diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py
index 0747aef5..db4cf0c1 100644
--- a/rpkid/rpki/gui/app/views.py
+++ b/rpkid/rpki/gui/app/views.py
@@ -1298,3 +1298,17 @@ class AlertDeleteView(DeleteView):
def get_queryset(self, **kwargs):
conf = self.request.session['handle']
return conf.alerts.all()
+
+
+@handle_required
+def alert_clear_all(request):
+ """Clear all alerts associated with the current resource holder."""
+ if request.method == 'POST':
+ form = forms.Empty(request.POST, request.FILES)
+ if form.is_valid():
+ # delete alerts
+ request.session['handle'].clear_alerts()
+ return redirect('alert-list')
+ else:
+ form = forms.Empty()
+ return render(request, 'app/alert_confirm_clear.html', {'form': form})