blob: be7e30f300125083b751cb7c7e3046baf9d13d14 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import models
class PackageIndexQuery:
def __init__( self, queryobj ):
self.dists = [d.name for d in models.RepositorySuite.objects.all()]
self.index = {}
self.packages = []
self.queryobj = queryobj
for mapping in queryobj:
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] }
class PackageIndex (PackageIndexQuery):
def __init__( self, index ):
mappings = models.SourcePackageMapping.objects.order_by('package__name').filter( package__name=index )
if not mappings:
mappings = models.SourcePackageMapping.objects.order_by('package__name').filter( package__name__startswith=index )
PackageIndexQuery.__init__(self, mappings)
|