From 8edc3c4b9dddecac436a741aa54b8ada52f87dae Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Mon, 26 Mar 2012 10:27:01 -0500 Subject: Bump signoffs and mirror status JSON API versions Due to datetime formatting changes in Django 1.4, we know follow the ECMA specification more closely and use 'yyyy-mm-ddThh:mm_ssZ' format. As this could break existing users of the JSON data, bump the version. Signed-off-by: Dan McGee --- packages/views/signoff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') 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, -- cgit v1.2.3 From 493092f88f03ae7ec385f76abeeb51516ff888e3 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Mon, 26 Mar 2012 12:29:37 -0500 Subject: Add more info to package JSON dump Signed-off-by: Dan McGee --- packages/views/__init__.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'packages') diff --git a/packages/views/__init__.py b/packages/views/__init__.py index 8f22a8a1..a915d58c 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', 'packagedepend_set' ] def default(self, obj): if hasattr(obj, '__iter__'): @@ -37,13 +40,22 @@ 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: + values = getattr(obj, attr).all() + # TODO: temporary rename becuase the name sucks + if attr == 'packagedepend_set': + attr = 'depends' + data[attr] = values 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) -- cgit v1.2.3 From 611e30172ae8db58fc2f6146fd1bee428e55ea6a Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Mon, 26 Mar 2012 12:33:28 -0500 Subject: Rename 'packagedepend_set' attribute to 'depends' We do this for every other related package attribute, so do it here too. Signed-off-by: Dan McGee --- packages/views/__init__.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'packages') diff --git a/packages/views/__init__.py b/packages/views/__init__.py index a915d58c..afb1de31 100644 --- a/packages/views/__init__.py +++ b/packages/views/__init__.py @@ -31,7 +31,7 @@ class PackageJSONEncoder(DjangoJSONEncoder): 'installed_size', 'build_date', 'last_update', 'flag_date', 'maintainers', 'packager' ] pkg_list_attributes = [ 'groups', 'licenses', 'conflicts', - 'provides', 'replaces', 'packagedepend_set' ] + 'provides', 'replaces', 'depends' ] def default(self, obj): if hasattr(obj, '__iter__'): @@ -41,11 +41,7 @@ class PackageJSONEncoder(DjangoJSONEncoder): data = dict((attr, getattr(obj, attr)) for attr in self.pkg_attributes) for attr in self.pkg_list_attributes: - values = getattr(obj, attr).all() - # TODO: temporary rename becuase the name sucks - if attr == 'packagedepend_set': - attr = 'depends' - data[attr] = values + data[attr] = getattr(obj, attr).all() return data if isinstance(obj, PackageFile): filename = obj.filename or '' -- cgit v1.2.3 From 076f9c51d50be9bb567e8477eff4c15bde62fcb3 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 29 Mar 2012 10:00:11 -0500 Subject: Return files in default order When we read the repository databases, we get a filelist in sorted order. Save time by returning the file list in that order rather than resorting it based on filename and directory. Signed-off-by: Dan McGee --- packages/views/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'packages') diff --git a/packages/views/__init__.py b/packages/views/__init__.py index afb1de31..2798fff1 100644 --- a/packages/views/__init__.py +++ b/packages/views/__init__.py @@ -185,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 = { @@ -209,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(), -- cgit v1.2.3