summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@kiwwwi.com.ar>2011-01-19 00:42:18 -0300
committerNicolás Reynolds <fauno@kiwwwi.com.ar>2011-01-19 00:42:18 -0300
commit27d7ccd7a928da74a881cf4fbd508e23613780fa (patch)
treeebed6ca44c1a5512b272685234ddfbb76fba76d8 /packages
parent755a03d279631138cb982dc07b2d67b341a4f99c (diff)
parent523a15f81e819379d1d9ae8412ebd8a7c017a512 (diff)
Merge branch 'master' of git://projects.archlinux.org/archweb
Conflicts: templates/devel/clock.html templates/packages/group_details.html templates/packages/groups.html
Diffstat (limited to 'packages')
-rw-r--r--packages/templatetags/package_extras.py37
-rw-r--r--packages/urls.py2
-rw-r--r--packages/utils.py10
-rw-r--r--packages/views.py44
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')