diff options
Diffstat (limited to 'packages')
-rw-r--r-- | packages/templatetags/package_extras.py | 37 | ||||
-rw-r--r-- | packages/urls.py | 2 | ||||
-rw-r--r-- | packages/utils.py | 10 | ||||
-rw-r--r-- | packages/views.py | 44 |
4 files changed, 46 insertions, 47 deletions
diff --git a/packages/templatetags/package_extras.py b/packages/templatetags/package_extras.py index 3cd2b91b..d59a5562 100644 --- a/packages/templatetags/package_extras.py +++ b/packages/templatetags/package_extras.py @@ -31,29 +31,16 @@ def do_buildsortqs(parser, token): "%r tag's argument should be in quotes" % tagname) return BuildQueryStringNode(sortfield[1:-1]) -@register.tag -def userpkgs(parser, token): - try: - tagname, user = token.split_contents() - except ValueError: - raise template.TemplateSyntaxError( - "%r tag requires a single argument" % tagname) - return UserPkgsNode(user) - -class UserPkgsNode(template.Node): - def __init__(self, user): - self.user = template.Variable(user) +@register.simple_tag +def userpkgs(user): + if user: + # TODO don't hardcode + title = escape('View packages maintained by ' + user.get_full_name()) + return '<a href="/packages/?maintainer=%s" title="%s">%s</a>' % ( + user.username, + title, + user.get_full_name(), + ) + return '' - def render(self, context): - try: - real_user = self.user.resolve(context) - # TODO don't hardcode - title = escape('View packages maintained by ' + real_user.get_full_name()) - return '<a href="/packages/search/?maintainer=%s" title="%s">%s</a>' % ( - real_user.username, - title, - real_user.get_full_name(), - ) - except template.VariableDoesNotExist: - return '' - pass +# vim: set ts=4 sw=4 et: 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<arch>[A-z0-9]+)/(?P<pkgname>[A-z0-9\-+.]+)/$', 'signoff_package'), (r'^update/$', 'update'), diff --git a/packages/utils.py b/packages/utils.py index 93d0de79..aaec0ec4 100644 --- a/packages/utils.py +++ b/packages/utils.py @@ -8,7 +8,7 @@ from main.utils import cache_function from .models import PackageGroup @cache_function(300) -def get_group_info(): +def get_group_info(include_arches=None): raw_groups = PackageGroup.objects.values_list( 'name', 'pkg__arch__name').order_by('name').annotate( cnt=Count('pkg'), last_update=Max('pkg__last_update')) @@ -38,10 +38,12 @@ def get_group_info(): new_g['arch'] = arch arch_groups[grp['name']] = new_g - # now transform it back into a sorted list + # now transform it back into a sorted list, including only the specified + # architectures if we got a list groups = [] - for val in group_mapping.itervalues(): - groups.extend(val.itervalues()) + for key, val in group_mapping.iteritems(): + if not include_arches or key in include_arches: + groups.extend(val.itervalues()) return sorted(groups, key=itemgetter('name', 'arch')) class Difference(object): diff --git a/packages/views.py b/packages/views.py index 77fa3a07..e00e6f94 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 @@ -87,9 +88,17 @@ def details(request, name='', repo='', arch=''): return redirect("/packages/?arch=%s&repo=%s&q=%s" % ( arch.lower(), repo.title(), name)) -def groups(request): - grps = get_group_info() - return direct_to_template(request, 'packages/groups.html', {'groups': grps}) +def groups(request, arch=None): + arches = [] + if arch: + get_object_or_404(Arch, name=arch, agnostic=False) + arches.append(arch) + grps = get_group_info(arches) + context = { + 'groups': grps, + 'arch': arch, + } + return direct_to_template(request, 'packages/groups.html', context) def group_details(request, arch, name): arch = get_object_or_404(Arch, name=arch) @@ -276,15 +285,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') |