summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Löthberg <johannes@kyriasis.com>2017-11-28 21:06:47 +0100
committerAngel Velásquez <angvp@archlinux.org>2017-11-28 15:06:47 -0500
commita4cc538c3bb9a23e6b77ccc03a279185863efd3c (patch)
treed81849d7ab3b21b7d6fbfaade905b7e7c0ddb3a3
parent6363af204c6f0d62e099f23da2b8a042704f10f9 (diff)
downloadarchweb-a4cc538c3bb9a23e6b77ccc03a279185863efd3c.tar.gz
archweb-a4cc538c3bb9a23e6b77ccc03a279185863efd3c.zip
Return different dep types under different keys in JSON results
* Return different dep types under different keys in JSON results * packages/utils: Put dependency type list above class Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
-rw-r--r--packages/utils.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/packages/utils.py b/packages/utils.py
index e1331b8c..6a9376bc 100644
--- a/packages/utils.py
+++ b/packages/utils.py
@@ -472,13 +472,16 @@ def get_signoff_groups(repos=None, user=None):
return signoff_groups
+DEPENDENCY_TYPES = [('D', 'depends'), ('O', 'optdepends'),
+ ('M', 'makedepends'), ('C', 'checkdepends')]
+
class PackageJSONEncoder(DjangoJSONEncoder):
pkg_attributes = ['pkgname', 'pkgbase', 'repo', 'arch', 'pkgver',
'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']
+ 'provides', 'replaces']
def default(self, obj):
if hasattr(obj, '__iter__'):
@@ -488,6 +491,9 @@ class PackageJSONEncoder(DjangoJSONEncoder):
data = {attr: getattr(obj, attr) for attr in self.pkg_attributes}
for attr in self.pkg_list_attributes:
data[attr] = getattr(obj, attr).all()
+ all_deps = obj.depends.all()
+ for (deptype, name) in DEPENDENCY_TYPES:
+ data[name] = all_deps.filter(deptype=deptype)
return data
if isinstance(obj, PackageFile):
filename = obj.filename or ''