diff options
author | Sean Finney <seanius@debian.org> | 2008-06-28 22:04:47 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2008-06-28 22:04:47 +0200 |
commit | ce5734f06e10f6dc8b98b1feeae7d5a052304b97 (patch) | |
tree | c8c0f978997dff527abd8959b9260f36ad489cdc | |
parent | 99cf99a71f5a5aa0bf88706ce9dcbfbfdb957888 (diff) | |
download | patch-tracker-ce5734f06e10f6dc8b98b1feeae7d5a052304b97.tar.gz |
fix a long overdue XXX wrt diffgz's in pagehandler
-rwxr-xr-x | pagehandler.py | 26 | ||||
-rw-r--r-- | patchtracker/DB.py | 10 |
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() |