summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgen-patch-info.py18
-rwxr-xr-xpatchtracker/SourceArchive.py79
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 = {}