X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=39dab347da5133fcbeb3da741b41dfc2b59da75c;hb=63cfa70f44ac9b08b214b30d80cd39b0295a1cd3;hp=be9451bcba4b27b9ce090d913b883bba143ae82e;hpb=3c3cf6b0861825abdc771e9b4c676ac52db56744;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index be9451bc..39dab347 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -288,6 +288,7 @@ class Upload(object): for title, messages in msgs: if messages: msg += '\n\n%s:\n%s' % (title, '\n'.join(messages)) + msg += '\n' return msg @@ -440,7 +441,7 @@ class Upload(object): # Check there isn't already a changes file of the same name in one # of the queue directories. base_filename = os.path.basename(filename) - if get_knownchange(base_filename): + if get_dbchange(base_filename): self.rejects.append("%s: a file with this name already exists." % (base_filename)) # Check the .changes is non-empty @@ -814,28 +815,28 @@ class Upload(object): os.chdir(cwd) - # Check there isn't already a .changes file of the same name in - # the proposed-updates "CopyChanges" storage directories. + # check we already know the changes file # [NB: this check must be done post-suite mapping] base_filename = os.path.basename(self.pkg.changes_file) - for suite in self.pkg.changes["distribution"].keys(): - copychanges = "Suite::%s::CopyChanges" % (suite) - if cnf.has_key(copychanges) and \ - os.path.exists(os.path.join(cnf[copychanges], base_filename)): - self.rejects.append("%s: a file with this name already exists in %s" \ - % (base_filename, cnf[copychanges])) + session = DBConn().session() + + try: + changes = session.query(DBChange).filter_by(changesname=base_filename).one() + if not changes.approved_for: + self.rejects.append("%s file already known to dak" % base_filename) + except NoResultFound, e: + # not known, good + pass has_binaries = False has_source = False - session = DBConn().session() - for f, entry in self.pkg.files.items(): # Ensure the file does not already exist in one of the accepted directories - for d in [ "Accepted", "Byhand", "New", "ProposedUpdates", "OldProposedUpdates", "Embargoed", "Unembargoed" ]: + for d in [ "Byhand", "New", "ProposedUpdates", "OldProposedUpdates", "Embargoed", "Unembargoed" ]: if not cnf.has_key("Dir::Queue::%s" % (d)): continue - if os.path.exists(cnf["Dir::Queue::%s" % (d) ] + '/' + f): + if os.path.exists(os.path.join(cnf["Dir::Queue::%s" % (d) ], f)): self.rejects.append("%s file already exists in the %s directory." % (f, d)) if not re_taint_free.match(f): @@ -1961,11 +1962,12 @@ distribution.""" os.rename(temp_filename, filename) os.chmod(filename, 0644) - # auto-build queue -# res = get_or_set_queue('buildd', session).autobuild_upload(self.pkg, session) -# if res: -# utils.fubar(res) -# now_date = datetime.now() + # This routine returns None on success or an error on failure + # TODO: Replace queue copying using the new queue.add_file_from_pool routine + # and by looking up which queues in suite.copy_queues + #res = get_queue('accepted').autobuild_upload(self.pkg, cnf["Dir::Queue::Accepted"]) + #if res: + # utils.fubar(res) session.commit() @@ -2020,7 +2022,7 @@ distribution.""" os.unlink(os.path.join(from_dir, f)) if os.path.exists(os.path.join(h.holding_dir, f)): os.unlink(os.path.join(h.holding_dir, f)) - + os.unlink(os.path.join(from_dir, self.pkg.changes_file)) if os.path.exists(os.path.join(h.holding_dir, self.pkg.changes_file)): os.unlink(os.path.join(h.holding_dir, self.pkg.changes_file)) @@ -2426,6 +2428,7 @@ distribution.""" # This would fix the stupidity of changing something we often iterate over # whilst we're doing it del self.pkg.files[dsc_name] + dsc_entry["files id"] = i.file_id if not orig_files.has_key(dsc_name): orig_files[dsc_name] = {} orig_files[dsc_name]["path"] = os.path.join(i.location.path, i.filename)