summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2008-06-28 22:04:47 +0200
committerSean Finney <seanius@debian.org>2008-06-28 22:04:47 +0200
commitce5734f06e10f6dc8b98b1feeae7d5a052304b97 (patch)
treec8c0f978997dff527abd8959b9260f36ad489cdc
parent99cf99a71f5a5aa0bf88706ce9dcbfbfdb957888 (diff)
downloadpatch-tracker-ce5734f06e10f6dc8b98b1feeae7d5a052304b97.tar.gz
fix a long overdue XXX wrt diffgz's in pagehandler
-rwxr-xr-xpagehandler.py26
-rw-r--r--patchtracker/DB.py10
2 files changed, 15 insertions, 21 deletions
diff --git a/pagehandler.py b/pagehandler.py
index f73837f..5a36110 100755
--- a/pagehandler.py
+++ b/pagehandler.py
@@ -21,6 +21,7 @@ def error(msg):
class PatchCmd:
def __init__(self, args):
+ self.db = PatchTrackerDB()
self.patchtype,mode,pkgname,version = args[0:4]
self.parsemode(mode)
dh = self.make_diffhandler(pkgname,version)
@@ -47,29 +48,12 @@ class PatchCmd:
else:
error("unhandled display mode '%s'"%(mode))
- # XXX this assumes to much hard coded, but until there's a faster
- # XXX (i.e. database) way to query sourcepackage/diffs it will
- # XXX have to do...
def make_diffhandler(self, pkgname, vers):
- file = None
- if vers.find(":") >= 0:
- diffvers = ":".join(vers.split(":")[1:])
- else:
- diffvers = vers
- dfile = pkgname+"_"+diffvers+".diff.gz"
- for comp in ['main', 'contrib', 'non-free']:
- loc = os.sep.join([Conf.archive_root, 'pool', comp, pkgname[0], pkgname])
- try:
- test = os.sep.join([loc, dfile])
- os.stat(test)
- file = test
- break
- except:
- pass
- if file:
- return DiffGzHandler(file)
+ dfile = self.db.findDiffGz(pkgname,vers)
+ if dfile:
+ return DiffGzHandler(dfile)
else:
- error("can not find diff file for %s / %s"%(pkgname,diffvers))
+ error("can not find diff file for %s / %s"%(pkgname,vers))
def output(self):
if self.mode == "dl":
diff --git a/patchtracker/DB.py b/patchtracker/DB.py
index 4160b90..119d97a 100644
--- a/patchtracker/DB.py
+++ b/patchtracker/DB.py
@@ -133,6 +133,16 @@ class PatchTrackerDB:
cursor = self.db.cursor()
cursor.execute(q, (name, version, suite, component))
+ def findDiffGz(self, pkgname, version):
+ q = "SELECT diffgz_name,loc FROM packages WHERE name=? AND version=?"
+ cursor = self.db.cursor()
+ cursor.execute(q, (pkgname, version))
+ try:
+ diffgz,loc = cursor.fetchone()
+ return os.sep.join([Conf.archive_root, loc, diffgz])
+ except:
+ return None
+
def finalize(self):
self.db.commit()