diff options
author | Sean Finney <seanius@debian.org> | 2010-05-17 20:52:46 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2010-05-17 20:52:46 +0200 |
commit | 1be98695f48f497b790998930eb182d549f86e7f (patch) | |
tree | 52339564059863075897613ef0904a67963f32da /patchtracker | |
parent | 3349f354d6f97bc48ca1569b44417f9e00c21486 (diff) | |
download | patch-tracker-1be98695f48f497b790998930eb182d549f86e7f.tar.gz |
Some incomplete efforts at getting gen-patch-info into the django impl.
Diffstat (limited to 'patchtracker')
-rwxr-xr-x | patchtracker/SourceArchive.py | 79 |
1 files changed, 29 insertions, 50 deletions
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 = {} |