summaryrefslogtreecommitdiff
path: root/patchtracker
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2010-05-17 20:52:46 +0200
committerSean Finney <seanius@debian.org>2010-05-17 20:52:46 +0200
commit1be98695f48f497b790998930eb182d549f86e7f (patch)
tree52339564059863075897613ef0904a67963f32da /patchtracker
parent3349f354d6f97bc48ca1569b44417f9e00c21486 (diff)
downloadpatch-tracker-1be98695f48f497b790998930eb182d549f86e7f.tar.gz
Some incomplete efforts at getting gen-patch-info into the django impl.
Diffstat (limited to 'patchtracker')
-rwxr-xr-xpatchtracker/SourceArchive.py79
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 = {}