diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2012-12-12 19:39:46 -0500 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2012-12-12 19:39:46 -0500 |
commit | 482ada7da21540dc62a1daeed4963bd591a77e00 (patch) | |
tree | efb3fc5b14bdb2f8838dfc37b09c56f3c6a2ae8c /packages/views | |
parent | cdfa6c1195bb6feb812bffc981183f0758ca5e2f (diff) | |
parent | cbdcb08557112f53ddcf074b950ee0950e12a045 (diff) |
Merge tag 'release_2012-04-02'
Signing page changes, other tweaks
Conflicts:
README
local_settings.py.example
requirements_prod.txt
urls.py
Diffstat (limited to 'packages/views')
-rw-r--r-- | packages/views/__init__.py | 28 | ||||
-rw-r--r-- | packages/views/signoff.py | 2 |
2 files changed, 20 insertions, 10 deletions
diff --git a/packages/views/__init__.py b/packages/views/__init__.py index 08e0286c..aa2721af 100644 --- a/packages/views/__init__.py +++ b/packages/views/__init__.py @@ -1,3 +1,6 @@ +from string import Template +from urllib import urlencode + from django.contrib import messages from django.contrib.auth.decorators import permission_required from django.contrib.auth.models import User @@ -9,12 +12,10 @@ from django.views.decorators.http import require_POST from django.views.decorators.vary import vary_on_headers from django.views.generic.simple import direct_to_template -from string import Template -from urllib import urlencode - -from main.models import Package, PackageFile, Arch, Repo +from main.models import Package, PackageFile, PackageDepend, Arch, Repo from mirrors.models import MirrorUrl -from ..models import PackageRelation, PackageGroup +from ..models import (PackageRelation, PackageGroup, License, + Conflict, Provision, Replacement) from ..utils import (get_group_info, get_differences_info, multilib_differences, get_wrong_permissions) @@ -29,6 +30,8 @@ class PackageJSONEncoder(DjangoJSONEncoder): 'pkgrel', 'epoch', 'pkgdesc', 'url', 'filename', 'compressed_size', 'installed_size', 'build_date', 'last_update', 'flag_date', 'maintainers', 'packager' ] + pkg_list_attributes = [ 'groups', 'licenses', 'conflicts', + 'provides', 'replaces', 'depends' ] def default(self, obj): if hasattr(obj, '__iter__'): @@ -37,13 +40,18 @@ class PackageJSONEncoder(DjangoJSONEncoder): if isinstance(obj, Package): data = dict((attr, getattr(obj, attr)) for attr in self.pkg_attributes) - data['groups'] = obj.groups.all() + for attr in self.pkg_list_attributes: + data[attr] = getattr(obj, attr).all() return data if isinstance(obj, PackageFile): filename = obj.filename or '' return obj.directory + filename - if isinstance(obj, (Repo, Arch, PackageGroup)): + if isinstance(obj, (Repo, Arch)): return obj.name.lower() + if isinstance(obj, (PackageGroup, License)): + return obj.name + if isinstance(obj, (Conflict, Provision, Replacement, PackageDepend)): + return unicode(obj) elif isinstance(obj, User): return obj.username return super(PackageJSONEncoder, self).default(obj) @@ -177,7 +185,8 @@ def group_details(request, arch, name): def files(request, name, repo, arch): pkg = get_object_or_404(Package, pkgname=name, repo__name__iexact=repo, arch__name=arch) - fileslist = PackageFile.objects.filter(pkg=pkg).order_by('directory', 'filename') + # files are inserted in sorted order, so preserve that + fileslist = PackageFile.objects.filter(pkg=pkg).order_by('id') dir_count = sum(1 for f in fileslist if f.is_directory) files_count = len(fileslist) - dir_count context = { @@ -201,7 +210,8 @@ def details_json(request, name, repo, arch): def files_json(request, name, repo, arch): pkg = get_object_or_404(Package, pkgname=name, repo__name__iexact=repo, arch__name=arch) - fileslist = PackageFile.objects.filter(pkg=pkg).order_by('directory', 'filename') + # files are inserted in sorted order, so preserve that + fileslist = PackageFile.objects.filter(pkg=pkg).order_by('id') data = { 'pkgname': pkg.pkgname, 'repo': pkg.repo.name.lower(), diff --git a/packages/views/signoff.py b/packages/views/signoff.py index cf00b0b9..63341a1d 100644 --- a/packages/views/signoff.py +++ b/packages/views/signoff.py @@ -180,7 +180,7 @@ class SignoffJSONEncoder(DjangoJSONEncoder): def signoffs_json(request): signoff_groups = sorted(get_signoff_groups(), key=attrgetter('pkgbase')) data = { - 'version': 1, + 'version': 2, 'signoff_groups': signoff_groups, } to_json = simplejson.dumps(data, ensure_ascii=False, |