From: Mark Hymers Date: Sun, 15 Nov 2009 18:52:26 +0000 (+0000) Subject: don't do the same thing twice, do it once, but correctly X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b301ec56f3b690a1e11a4a8b6b2d9ce391de29b;p=dak don't do the same thing twice, do it once, but correctly Signed-off-by: Mark Hymers --- diff --git a/dak/process_upload.py b/dak/process_upload.py index ab9a3197..33fff0dc 100755 --- a/dak/process_upload.py +++ b/dak/process_upload.py @@ -293,14 +293,12 @@ def action(u, session): if not chg: chg = u.pkg.add_known_changes(holding.holding_dir, session=session) package_to_queue(u, summary, short_summary, policyqueue, chg, session) - chg.upload_into_db(u, holding.holding_dir) session.commit() u.remove() elif answer == queuekey: if not chg: chg = u.pkg.add_known_changes(holding.holding_dir, session=session) QueueInfo[qu]["process"](u, summary, short_summary, chg, session) - chg.upload_into_db(u, holding.holding_dir) session.commit() u.remove() elif answer == 'Q': diff --git a/daklib/changes.py b/daklib/changes.py index 4fdf0a60..f56ca96c 100644 --- a/daklib/changes.py +++ b/daklib/changes.py @@ -221,17 +221,53 @@ class Changes(object): session.add(chg) - chg_files = [] - for chg_fn in self.files.keys(): - cpf = ChangePendingFile() - cpf.filename = chg_fn - cpf.size = self.files[chg_fn]['size'] - cpf.md5sum = self.files[chg_fn]['md5sum'] - - session.add(cpf) - chg_files.append(cpf) - - chg.files = chg_files + files = [] + for chg_fn, entry in self.files.items(): + try: + f = open(os.path.join(dirpath, chg_fn)) + cpf = ChangePendingFile() + cpf.filename = chg_fn + cpf.size = entry['size'] + cpf.md5sum = entry['md5sum'] + + if entry.has_key('sha1sum'): + cpf.sha1sum = entry['sha1sum'] + else: + f.seek(0) + cpf.sha1sum = apt_pkg.sha1sum(f) + + if entry.has_key('sha256sum'): + cpf.sha256sum = entry['sha256sum'] + else: + f.seek(0) + cpf.sha256sum = apt_pkg.sha256sum(f) + + session.add(cpf) + files.append(cpf) + f.close() + + except IOError: + # Can't find the file, try to look it up in the pool + poolname = poolify(entry["source"], entry["component"]) + l = get_location(cnf["Dir::Pool"], entry["component"], session=session) + + found, poolfile = check_poolfile(os.path.join(poolname, chg_fn), + entry['size'], + entry["md5sum"], + l.location_id, + session=session) + + if found is None: + Logger.log(["E: Found multiple files for pool (%s) for %s" % (chg_fn, entry["component"])]) + elif found is False and poolfile is not None: + Logger.log(["E: md5sum/size mismatch for %s in pool" % (chg_fn)]) + else: + if poolfile is None: + Logger.log(["E: Could not find %s in pool" % (chg_fn)]) + else: + chg.poolfiles.append(poolfile) + + chg.files = files session.commit() chg = session.query(DBChange).filter_by(changesname = self.changes_file).one(); diff --git a/daklib/dbconn.py b/daklib/dbconn.py index ecb61031..7047f59b 100644 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -1437,60 +1437,6 @@ class DBChange(object): def __repr__(self): return '' % self.changesname - def upload_into_db(self, u, path): - cnf = Config() - session = DBConn().session().object_session(self) - - files = [] - for chg_fn, entry in u.pkg.files.items(): - try: - f = open(os.path.join(path, chg_fn)) - cpf = ChangePendingFile() - cpf.filename = chg_fn - cpf.size = entry['size'] - cpf.md5sum = entry['md5sum'] - - if entry.has_key('sha1sum'): - cpf.sha1sum = entry['sha1sum'] - else: - f.seek(0) - cpf.sha1sum = apt_pkg.sha1sum(f) - - if entry.has_key('sha256sum'): - cpf.sha256sum = entry['sha256sum'] - else: - f.seek(0) - cpf.sha256sum = apt_pkg.sha256sum(f) - - session.add(cpf) - files.append(cpf) - f.close() - - except IOError: - # Can't find the file, try to look it up in the pool - from utils import poolify - poolname = poolify(entry["source"], entry["component"]) - l = get_location(cnf["Dir::Pool"], entry["component"], session=session) - - found, poolfile = check_poolfile(os.path.join(poolname, chg_fn), - entry['size'], - entry["md5sum"], - l.location_id, - session=session) - - if found is None: - Logger.log(["E: Found multiple files for pool (%s) for %s" % (chg_fn, entry["component"])]) - elif found is False and poolfile is not None: - Logger.log(["E: md5sum/size mismatch for %s in pool" % (chg_fn)]) - else: - if poolfile is None: - Logger.log(["E: Could not find %s in pool" % (chg_fn)]) - else: - chg.poolfiles.append(poolfile) - - chg.files = files - - def clean_from_queue(self): session = DBConn().session().object_session(self)