]> git.decadent.org.uk Git - dak.git/commitdiff
adding a "import_new_files" script which will import into changes_pending_file from...
authorMike O'Connor <stew@ries.debian.org>
Fri, 13 Nov 2009 18:48:24 +0000 (18:48 +0000)
committerMike O'Connor <stew@ries.debian.org>
Fri, 13 Nov 2009 18:48:24 +0000 (18:48 +0000)
Signed-off-by: Mike O'Connor <stew@ries.debian.org>
dak/import_new_files.py [new file with mode: 0644]
daklib/dbconn.py

diff --git a/dak/import_new_files.py b/dak/import_new_files.py
new file mode 100644 (file)
index 0000000..67fdf33
--- /dev/null
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+# coding=utf8
+
+"""
+Import known_changes files
+
+@contact: Debian FTP Master <ftpmaster@debian.org>
+@copyright: 2009  Mike O'Connor <stew@debian.org>
+@license: GNU General Public License version 2 or later
+"""
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+################################################################################
+
+
+################################################################################
+
+import sys
+import os
+import logging
+import threading
+import glob
+from daklib.dbconn import DBConn, get_dbchange
+from daklib.config import Config
+
+# where in dak.conf all of our configuration will be stowed
+options_prefix = "NewFiles"
+options_prefix = "%s::Options" % options_prefix
+
+log = logging.getLogger()
+
+################################################################################
+
+
+def usage (exit_code=0):
+    print """Usage: dak import-new-files [options]
+
+OPTIONS
+     -v, --verbose
+        show verbose information messages
+
+     -q, --quiet
+        supress all output but errors
+
+"""
+    sys.exit(exit_code)
+
+class ImportKnownChanges(object):
+    @session_wrapper
+    def __init__(self, session=None):
+        try:
+            newq = get_policy_queue('new', session)
+            for changes_fn in glob.glob(newq.path + "/*.changes"):
+                changes_bn = os.path.basename(fn)
+                chg = session.query(DBChange).filter_by(changesname=changes_bn).one()
+
+                u = Upload()
+                u.changes_file = changes_fn
+                u.load_changes(changes_fn)
+
+                for chg_fn in u.pkg.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)
+
+
+            session.commit()
+            
+        except KeyboardInterrupt:
+            print("Caught C-c; terminating.")
+            utils.warn("Caught C-c; terminating.")
+            self.plsDie()
+
+
+def main():
+    cnf = Config()
+
+    arguments = [('h',"help", "%s::%s" % (options_prefix,"Help")),
+                 ('q',"quiet", "%s::%s" % (options_prefix,"Quiet")),
+                 ('v',"verbose", "%s::%s" % (options_prefix,"Verbose")),
+                ]
+
+    args = apt_pkg.ParseCommandLine(cnf.Cnf, arguments,sys.argv)
+
+    num_threads = 1
+
+    if len(args) > 0:
+        usage(1)
+
+    if cnf.has_key("%s::%s" % (options_prefix,"Help")):
+        usage(0)
+
+    level=logging.INFO
+    if cnf.has_key("%s::%s" % (options_prefix,"Quiet")):
+        level=logging.ERROR
+
+    elif cnf.has_key("%s::%s" % (options_prefix,"Verbose")):
+        level=logging.DEBUG
+
+
+    logging.basicConfig( level=level,
+                         format='%(asctime)s %(levelname)s %(message)s',
+                         stream = sys.stderr )
+
+    ImportNewFiles()
+
+
+if __name__ == '__main__':
+    main()
index e1b2425079e6a87cf6f027ced44ef523921cb768..2a9618348f474de30f34e01ef6b690f70eddfed2 100644 (file)
@@ -2843,6 +2843,16 @@ class DBConn(object):
                                  poolfiles = relation(PoolFile,
                                                       secondary=self.tbl_changes_pool_files,
                                                       backref="changeslinks"),
+                                 filetime = self.tbl_changes.c.filetime,
+                                 source = self.tbl_changes.c.source,
+                                 binaries = self.tbl_changes.c.binaries,
+                                 architecture = self.tbl_changes.c.architecture,
+                                 distribution = self.tbl_changes.c.distribution,
+                                 urgency = self.tbl_changes.c.urgency,
+                                 maintainer = self.tbl_changes.c.maintainer,
+                                 changedby = self.tbl_changes.c.changedby,
+                                 date = self.tbl_changes.c.date,
+                                 version = self.tbl_changes.c.version
                                  files = relation(ChangePendingFile,
                                                   secondary=self.tbl_changes_pending_files_map,
                                                   backref="changesfile"),
@@ -2855,7 +2865,12 @@ class DBConn(object):
                properties = dict(change_pending_binary_id = self.tbl_changes_pending_binaries.c.id))
 
         mapper(ChangePendingFile, self.tbl_changes_pending_files,
-               properties = dict(change_pending_file_id = self.tbl_changes_pending_files.c.id))
+               properties = dict(change_pending_file_id = self.tbl_changes_pending_files.c.id,
+                                 filename = self.tbl_changes_pending_files.c.filename,
+                                 size = self.tbl_changes_pending_files.c.size,
+                                 md5sum = self.tbl_changes_pending_files.c.md5sum,
+                                 sha1sum = self.tbl_changes_pending_files.c.sha1sum,
+                                 sha256sum = self.tbl_changes_pending_files.c.sha256sum))
 
         mapper(ChangePendingSource, self.tbl_changes_pending_source,
                properties = dict(change_pending_source_id = self.tbl_changes_pending_source.c.id,