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>
This commit is contained in:
Johannes Löthberg 2017-11-28 21:06:47 +01:00 committed by Angel Velásquez
parent 6363af204c
commit a4cc538c3b

View File

@ -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 @@ def default(self, obj):
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 ''