]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/queue.py
Fix NoMail case
[dak.git] / daklib / queue.py
index 49b465d5a42c1bff1f848324d62ac432eb1dc33a..20e04bd6fa969fd65d6a76a29e9b23a5229d4ac5 100755 (executable)
@@ -1058,7 +1058,7 @@ class Upload(object):
             # TODO: Dynamically generate this list
             for queue_name in [ "byhand", "new", "proposedupdates", "oldproposedupdates", "embargoed", "unembargoed" ]:
                 queue = get_policy_queue(queue_name, session)
-                if queue and os.path.exists(queue.path, f):
+                if queue and os.path.exists(os.path.join(queue.path, f)):
                     self.rejects.append("%s file already exists in the %s queue." % (f, queue_name))
 
             if not re_taint_free.match(f):
@@ -1180,6 +1180,9 @@ class Upload(object):
         if not self.pkg.changes["architecture"].has_key("source"):
             return True
 
+        if session is None:
+            session = DBConn().session()
+
         (status, reason) = self.load_dsc(action=action)
         if not status:
             self.rejects.append(reason)
@@ -1217,7 +1220,11 @@ class Upload(object):
 
         # Only a limited list of source formats are allowed in each suite
         for dist in self.pkg.changes["distribution"].keys():
-            allowed = [ x.format_name for x in get_suite_src_formats(dist, session) ]
+            suite = get_suite(dist, session=session)
+            if not suite:
+                self.rejects.append("%s: cannot find suite %s when checking source formats" % (dsc_filename, dist))
+                continue
+            allowed = [ x.format_name for x in suite.srcformats ]
             if self.pkg.dsc["format"] not in allowed:
                 self.rejects.append("%s: source format '%s' not allowed in %s (accepted: %s) " % (dsc_filename, self.pkg.dsc["format"], dist, ", ".join(allowed)))
 
@@ -1318,8 +1325,8 @@ class Upload(object):
         # Extract the source
         try:
             unpacked = UnpackedSource(dsc_filename)
-        except:
-            self.rejects.append("'dpkg-source -x' failed for %s." % dsc_filename)
+        except Exception, e:
+            self.rejects.append("'dpkg-source -x' failed for %s. (%s)" % (dsc_filename, str(e)))
             return
 
         if not cnf.Find("Dir::BTSVersionTrack"):
@@ -2000,13 +2007,18 @@ distribution."""
         """
 
         cnf = Config()
-        announcetemplate = os.path.join(cnf["Dir::Templates"], 'process-unchecked.announce')
+
+        # Skip all of this if not sending mail to avoid confusing people
+        if cnf.has_key("Dinstall::Options::No-Mail") and cnf["Dinstall::Options::No-Mail"]:
+            return ""
 
         # Only do announcements for source uploads with a recent dpkg-dev installed
         if float(self.pkg.changes.get("format", 0)) < 1.6 or not \
            self.pkg.changes["architecture"].has_key("source"):
             return ""
 
+        announcetemplate = os.path.join(cnf["Dir::Templates"], 'process-unchecked.announce')
+
         lists_done = {}
         summary = ""