From 93bca8b0ed79afc30f6237e13dacaf32ed8cd4b3 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 23 Feb 2011 12:36:49 -0600 Subject: Allow deleting of stale package relations via status page Add a column of checkboxes to each table, enclose the whole thing in a form, and add a super-simple delete view that takes a list of IDs and removes them from the database. The delete_packagerelation permission is required to be able to delete relations. Signed-off-by: Dan McGee --- packages/urls.py | 1 + packages/views.py | 13 +++++++++++++ templates/packages/stale_relations.html | 23 +++++++++++++++++------ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/packages/urls.py b/packages/urls.py index 37ce23c..638a370 100644 --- a/packages/urls.py +++ b/packages/urls.py @@ -26,6 +26,7 @@ urlpatterns = patterns('packages.views', (r'^differences/$', 'arch_differences'), (r'^stale_relations/$', 'stale_relations'), + (r'^stale_relations/update/$','stale_relations_update'), (r'^(?P[A-z0-9\-+.]+)/$', 'details'), diff --git a/packages/views.py b/packages/views.py index 9a2094a..1ab0425 100644 --- a/packages/views.py +++ b/packages/views.py @@ -11,6 +11,7 @@ from django.shortcuts import get_object_or_404, redirect from django.template import loader, Context, RequestContext from django.utils import simplejson from django.views.decorators.cache import never_cache +from django.views.decorators.http import require_POST from django.views.decorators.vary import vary_on_headers from django.views.generic import list_detail from django.views.generic.simple import direct_to_template @@ -36,6 +37,7 @@ def opensearch(request): mimetype='application/opensearchdescription+xml') @permission_required('main.change_package') +@require_POST def update(request): ids = request.POST.getlist('pkgid') count = 0 @@ -418,4 +420,15 @@ def stale_relations(request): } return direct_to_template(request, 'packages/stale_relations.html', context) +@permission_required('packages.delete_packagerelation') +@require_POST +def stale_relations_update(request): + ids = set(request.POST.getlist('relation_id')) + + if ids: + PackageRelation.objects.filter(id__in=ids).delete() + + messages.info(request, "%d package relations deleted." % len(ids)) + return redirect('/packages/stale_relations/') + # vim: set ts=4 sw=4 et: diff --git a/templates/packages/stale_relations.html b/templates/packages/stale_relations.html index 975ef1b..8e2f893 100644 --- a/templates/packages/stale_relations.html +++ b/templates/packages/stale_relations.html @@ -6,11 +6,13 @@

Stale Package Relations

+
{% csrf_token %}

Inactive User Relations ({{ inactive_user|length }})

+ @@ -20,6 +22,7 @@ {% for relation in inactive_user %} + {% empty %} - + {% endfor %}
  Package Base Packages User
{{ relation.pkgbase }} {% for pkg in relation.get_associated_packages %} {{ relation.get_type_display }}
No inactive user relations.
No inactive user relations.
@@ -39,6 +42,7 @@ + @@ -47,12 +51,13 @@ {% for relation in missing_pkgbase %} + {% empty %} - + {% endfor %}
  Package Base User Type
{{ relation.pkgbase }} {{ relation.user.get_full_name }} {{ relation.get_type_display }}
No non-existent pkgbase relations.
No non-existent pkgbase relations.
@@ -62,6 +67,7 @@ + @@ -72,6 +78,7 @@ {% for relation in wrong_permissions %} + {% empty %} - + {% endfor %}
  Package Base Packages User
{{ relation.pkgbase }} {% for pkg in relation.get_associated_packages %} {{ relation.repositories|join:", " }}
No relations with wrong permissions.
No relations with wrong permissions.
+

+

+
{% load cdn %}{% jquery %} {% endblock %} -- cgit v1.2.3-24-g4f1b