From cc7c3786483b849fbd62f3f5c74290a6096bab57 Mon Sep 17 00:00:00 2001 From: volpino Date: Tue, 24 Jul 2012 09:02:01 +0200 Subject: [PATCH] Revert "djeuscan: helpers.py is actually unused" This reverts commit be9d28c2557bdf09203bbc124b9fd434325ccc47. --- euscanwww/djeuscan/helpers.py | 108 ++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 euscanwww/djeuscan/helpers.py diff --git a/euscanwww/djeuscan/helpers.py b/euscanwww/djeuscan/helpers.py new file mode 100644 index 0000000..f7a6b82 --- /dev/null +++ b/euscanwww/djeuscan/helpers.py @@ -0,0 +1,108 @@ +""" +djeuscan.helpers +""" + +from distutils.version import StrictVersion, LooseVersion + + +def xint(i): + """ + Tries to cast to int, fallbacks to 0 + """ + try: + return int(i) + except Exception: + return 0 + + +def select_related_last_versions(queryset): + queryset = queryset.select_related( + 'last_version_gentoo', + 'last_version_overlay', + 'last_version_upstream' + ) + + +def version_key(version): + version = version.version + try: + return StrictVersion(version) + # in case of abnormal version number, fall back to LooseVersion + except ValueError: + return LooseVersion(version) + + +def packages_from_names(data): + """ + Returns a list of Package objects from a string of names + """ + + from djeuscan.models import Package + + packages = [] + data = data.replace("\r", "") + + for pkg in data.split('\n'): + if '/' in pkg: + cat, pkg = pkg.split('/') + packages.extend(Package.objects.filter(category=cat, name=pkg)) + else: + packages.extend(Package.objects.filter(name=pkg)) + return packages + + +def rename_fields(vqs, fields): + ret = [] + for n in vqs: + for tr in fields: + if tr[0] in n: + n[tr[1]] = n[tr[0]] + del n[tr[0]] + ret.append(n) + return ret + + +class catch_and_return(object): + def __init__(self, err, response): + self.err = err + self.response = response + + def __call__(self, fn): + def wrapper(*args, **kwargs): + try: + return fn(*args, **kwargs) + except self.err: + return self.response + return wrapper + + +def get_account_categories(user): + from djeuscan.models import Package, CategoryAssociation + + # TODO: This is quite ugly + category_names = [obj.category for obj in + CategoryAssociation.objects.filter(user=user)] + return [c for c in Package.objects.categories() + if c["category"] in category_names] + + +def get_account_herds(user): + from djeuscan.models import Package, HerdAssociation + + ids = [obj.herd.pk for obj in + HerdAssociation.objects.filter(user=user)] + return Package.objects.herds(ids=ids) + + +def get_account_maintainers(user): + from djeuscan.models import Package, MaintainerAssociation + + ids = [obj.maintainer.pk for obj in + MaintainerAssociation.objects.filter(user=user)] + return Package.objects.maintainers(ids=ids) + + +def get_account_packages(user): + from djeuscan.models import PackageAssociation + return [obj.package for obj in + PackageAssociation.objects.filter(user=user)]