diff options
author | Sean Finney <seanius@debian.org> | 2010-05-13 19:28:58 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2010-05-13 19:28:58 +0200 |
commit | 01e55d8e6ca532ceb1382db529f82941bc7a6bad (patch) | |
tree | 8260781e2f038c6a00fa7a64ec789c7ca873450f /patchtracker/ComplexQueries.py | |
parent | 022a984fd1d24241c3e1801fd210cd34cdf0e5a6 (diff) | |
download | patch-tracker-01e55d8e6ca532ceb1382db529f82941bc7a6bad.tar.gz |
Package index listing now implemented in django
Diffstat (limited to 'patchtracker/ComplexQueries.py')
-rw-r--r-- | patchtracker/ComplexQueries.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/patchtracker/ComplexQueries.py b/patchtracker/ComplexQueries.py new file mode 100644 index 0000000..706301e --- /dev/null +++ b/patchtracker/ComplexQueries.py @@ -0,0 +1,25 @@ +import models + +class PackageIndex: + def __init__( self, index ): + self.dists = [d.name for d in models.RepositorySuite.objects.all()] + self.index = {} + self.packages = [] + + packageMappings = models.SourcePackageMapping.objects.order_by('package__name').filter( package__name=index ) + if not packageMappings: + packageMappings = models.SourcePackageMapping.objects.order_by('package__name').filter( package__name__startswith=index ) + + for mapping in packageMappings: + self._addPackageMapping(mapping.package, mapping.suite) + + def _addPackageMapping( self, package, suite ): + if package.name not in self.index: + self.index[package.name] = [None] * len(self.dists) + self.packages.append(package) + self.index[package.name][self.dists.index(suite.name)] = package + + def __iter__( self ): + for pkg in self.packages: + yield { 'package':pkg, 'entries':self.index[pkg.name] } + |