From 487daf1c72f86a064b659f68d9f7722706997ab2 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Tue, 18 Jan 2011 10:14:28 -0600 Subject: Make package signoffs AJAX if JS is enabled This makes the signoffs page a heck of a lot more usable as you can go through and click a bunch at once without waiting for the rather slow page to reload. Hopefully the first step to bringing life back into this part of the site. Signed-off-by: Dan McGee --- media/archweb.js | 23 +++++++++++++++++++++++ packages/urls.py | 2 +- packages/views.py | 30 ++++++++++++++++-------------- templates/packages/signoffs.html | 7 +++++-- 4 files changed, 45 insertions(+), 17 deletions(-) diff --git a/media/archweb.js b/media/archweb.js index b2f3af2a..b7351878 100644 --- a/media/archweb.js +++ b/media/archweb.js @@ -154,3 +154,26 @@ function todolist_flag() { }); return false; } + +/* signoffs.html */ +function signoff_package() { + var link = this; + $.getJSON(link.href, function(data) { + if (data.created) { + var signoff = $('
  • ').addClass('signed-username').text(data.user); + $(link).append(signoff); + } + /* update the approved column to reflect reality */ + if (data.approved) { + var approved = $(link).closest('tr').children('.signoff-no'); + approved.text('Yes').addClass( + 'signoff-yes').removeClass('signoff-no'); + } else { + var approved = $(link).closest('tr').children('.signoff-yes'); + approved.text('No').addClass( + 'signoff-no').removeClass('signoff-yes'); + } + $('.results').trigger('updateCell', approved); + }); + return false; +} diff --git a/packages/urls.py b/packages/urls.py index da24ee03..c9006a12 100644 --- a/packages/urls.py +++ b/packages/urls.py @@ -11,7 +11,7 @@ package_patterns = patterns('packages.views', urlpatterns = patterns('packages.views', (r'^flaghelp/$', 'flaghelp'), - (r'^signoffs/$', 'signoffs'), + (r'^signoffs/$', 'signoffs', {}, 'package-signoffs'), (r'^signoff_package/(?P[A-z0-9]+)/(?P[A-z0-9\-+.]+)/$', 'signoff_package'), (r'^update/$', 'update'), diff --git a/packages/views.py b/packages/views.py index 77fa3a07..4e683144 100644 --- a/packages/views.py +++ b/packages/views.py @@ -1,18 +1,19 @@ from django import forms from django.contrib import messages +from django.contrib.admin.widgets import AdminDateWidget +from django.contrib.auth.models import User +from django.contrib.auth.decorators import permission_required from django.conf import settings from django.core.mail import send_mail -from django.template import loader, Context, RequestContext +from django.db.models import Q from django.http import HttpResponse, Http404 from django.shortcuts import get_object_or_404, redirect -from django.contrib.auth.models import User -from django.contrib.auth.decorators import permission_required -from django.contrib.admin.widgets import AdminDateWidget +from django.template import loader, Context, RequestContext +from django.utils import simplejson from django.views.decorators.cache import never_cache 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 -from django.db.models import Q from datetime import datetime import string @@ -276,15 +277,16 @@ def signoff_package(request, arch, pkgname): pkgrel=pkg.pkgrel, packager=request.user) - if created: - messages.info(request, - "You have successfully signed off for %s on %s." % \ - (pkg.pkgname, pkg.arch)) - else: - messages.warning(request, - "You have already signed off for %s on %s." % \ - (pkg.pkgname, pkg.arch)) - return signoffs(request) + if request.is_ajax(): + data = { + 'created': created, + 'approved': pkg.approved_for_signoff(), + 'user': str(request.user), + } + return HttpResponse(simplejson.dumps(data), + mimetype='application/json') + + return redirect('package-signoffs') def flaghelp(request): return direct_to_template(request, 'packages/flaghelp.html') diff --git a/templates/packages/signoffs.html b/templates/packages/signoffs.html index 8d78c8a1..0cb7679c 100644 --- a/templates/packages/signoffs.html +++ b/templates/packages/signoffs.html @@ -33,7 +33,7 @@ {{ pkg.approved_for_signoff|yesno:"Yes,No" }}
      -
    • Signoff
    • {% for signoff in pkg.signoffs %} @@ -49,9 +49,12 @@ {% load cdn %}{% jquery %} + {% endif %} -- cgit v1.2.3-55-g3dc8