diff options
-rwxr-xr-x | gen-patch-info.py | 18 | ||||
-rwxr-xr-x | patchtracker/SourceArchive.py | 79 |
2 files changed, 38 insertions, 59 deletions
diff --git a/gen-patch-info.py b/gen-patch-info.py index 3b5847b..17b2a2a 100755 --- a/gen-patch-info.py +++ b/gen-patch-info.py @@ -8,14 +8,14 @@ import gzip import errno import simplejson +os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' +import patchtracker.models + import patchtracker.Conf as Conf -from patchtracker.SourceArchive import Archive, SourcePackage -from patchtracker.DB import PatchTrackerDB +from patchtracker.SourceArchive import Archive from patchtracker.PtsIndex import PtsIndexFile if __name__ == '__main__': - db = PatchTrackerDB() - os.system("cheetah compile templates/skeleton") opts,args = getopt.getopt(sys.argv[1:], "ais:p:") suites = None packages = None @@ -43,15 +43,15 @@ if __name__ == '__main__': print a for s in a.suites(filter=suites): print "suite: ",s - db.saveSuite(s) + suite = patchtracker.models.RepositorySuite.objects.get(name=s) for c in a.components(s): print "\tcomponent:",c - db.saveComponent(c) + component = patchtracker.models.RepositoryComponent.objects.get(name=c) for p in a.sourcepackages(s, c, filter=packages): print "\t\tpackage:",p - db.saveSourcePackage(p) - db.relateSourcePackage(name=p.name, version=p.version, suite=s, - component=c) + m = patchtracker.models.SourcePackageMapping.objects.get(suite=suite, component=component, package__name=p.name) + m.package = p + m.save() if gen_pts_index: pts_idx.add(p) diff --git a/patchtracker/SourceArchive.py b/patchtracker/SourceArchive.py index 0cdeb10..ce3459a 100755 --- a/patchtracker/SourceArchive.py +++ b/patchtracker/SourceArchive.py @@ -5,6 +5,8 @@ from gzip import GzipFile from debian_bundle import deb822 import difflib +import models + class Archive: def __init__(self, dir, suitefilter=None, pkgfilter=None): self.root = None @@ -65,7 +67,33 @@ class Archive: if filter and not fdict.has_key(ent['Package']): continue else: - yield SourcePackage(ent) + pkg = models.SourcePackage() + # some other defaults + pkg.name = ent['Package'] + pkg.format = ent['Format'] + pkg.loc = ent['Directory'] + pkg.version = ent['Version'] + try: + pkg.maintainers = unicode(ent['Maintainer']) + except UnicodeDecodeError: + pkg.maintainers = unicode(ent['Maintainer'], 'latin-1') + if ent.has_key('Uploaders'): + try: + pkg.uploaders = unicode(ent['Uploaders']) + except UnicodeDecodeError: + pkg.uploaders = unicode(ent['Uploaders'], 'latin-1') + + for f in ent['Files']: + if fnmatch(f['name'], '*.diff.gz'): + pkg.diffgz_name=f['name'] + pkg.diffgz_size=f['size'] + pkg.diffgz_md5sum=f['md5sum'] + elif fnmatch(f['name'], '*.debian.tar.*'): + pkg.debtar_name=f['name'] + pkg.debtar_size=f['size'] + pkg.debtar_md5sum=f['md5sum'] + + yield pkg def __str__(self): return "Archive rooted at "+self.root @@ -89,55 +117,6 @@ def getidx(letter): else: return name[0:4] -class SourcePackage: - def __init__(self, info): - # attributes for debian .diff.gz source packages - self.diffgz_name = None - self.diffgz_size = None - self.diffgz_md5sum = None - self.diffgz = None - - # attributes for debian .debian.tar.gz source packages - self.debtar_name = None - self.debtar_size = None - self.debtar_md5sum = None - self.debtar = None - - # some other defaults - self.type = "Native" - self.name = info['Package'] - self.format = info['Format'] - self.loc = info['Directory'] - self.version = info['Version'] - self.uploaders = None - - try: - self.maintainers = unicode(info['Maintainer']) - except UnicodeDecodeError: - self.maintainers = unicode(info['Maintainer'], 'latin-1') - if info.has_key('Uploaders'): - try: - self.uploaders = unicode(info['Uploaders']) - except UnicodeDecodeError: - self.uploaders = unicode(info['Uploaders'], 'latin-1') - - self.idx = getidx(self) - - for f in info['Files']: - if fnmatch(f['name'], '*.diff.gz'): - self.diffgz_name=f['name'] - self.diffgz_size=f['size'] - self.diffgz_md5sum=f['md5sum'] - self.type = "Debian-diff" - elif fnmatch(f['name'], '*.debian.tar.*'): - self.debtar_name=f['name'] - self.debtar_size=f['size'] - self.debtar_md5sum=f['md5sum'] - self.type = "Debian-diff" - - def __str__(self): - return self.name - class SourcePackageIndex: def __init__(self): self.pkgs = {} |