[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[dak/master] don't do the same thing twice, do it once, but correctly



Signed-off-by: Mark Hymers <mhy@debian.org>
---
 dak/process_upload.py |    2 -
 daklib/changes.py     |   58 +++++++++++++++++++++++++++++++++++++++---------
 daklib/dbconn.py      |   54 ---------------------------------------------
 3 files changed, 47 insertions(+), 67 deletions(-)

diff --git a/dak/process_upload.py b/dak/process_upload.py
index ab9a319..33fff0d 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 4fdf0a6..f56ca96 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 ecb6103..7047f59 100644
--- a/daklib/dbconn.py
+++ b/daklib/dbconn.py
@@ -1437,60 +1437,6 @@ class DBChange(object):
     def __repr__(self):
         return '<DBChange %s>' % 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)
 
-- 
1.6.3.3


Reply to: