X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=49b465d5a42c1bff1f848324d62ac432eb1dc33a;hb=d466d5474f1b7a4abee0954bc27b67296fd7c76e;hp=a8ea3035df38102937f0f6b32720c5c43fa05272;hpb=742ee454cb9fb3960c71d90b4d0a8f1039436d24;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index a8ea3035..49b465d5 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -879,15 +879,22 @@ class Upload(object): # Check in one of the other directories source_epochless_version = re_no_epoch.sub('', source_version) dsc_filename = "%s_%s.dsc" % (source_package, source_epochless_version) - if os.path.exists(os.path.join(cnf["Dir::Queue::Byhand"], dsc_filename)): + + byhand_dir = get_policy_queue('byhand', session).path + new_dir = get_policy_queue('new', session).path + + if os.path.exists(os.path.join(byhand_dir, dsc_filename)): entry["byhand"] = 1 - elif os.path.exists(os.path.join(cnf["Dir::Queue::New"], dsc_filename)): + elif os.path.exists(os.path.join(new_dir, dsc_filename)): entry["new"] = 1 else: dsc_file_exists = False - for myq in ["Embargoed", "Unembargoed", "ProposedUpdates", "OldProposedUpdates"]: - if cnf.has_key("Dir::Queue::%s" % (myq)): - if os.path.exists(os.path.join(cnf["Dir::Queue::" + myq], dsc_filename)): + # TODO: Don't hardcode this list: use all relevant queues + # The question is how to determine what is relevant + for queue_name in ["embargoed", "unembargoed", "proposedupdates", "oldproposedupdates"]: + queue = get_policy_queue(queue_name, session) + if queue: + if os.path.exists(os.path.join(queue.path, dsc_filename)): dsc_file_exists = True break @@ -1048,10 +1055,11 @@ class Upload(object): for f, entry in self.pkg.files.items(): # Ensure the file does not already exist in one of the accepted directories - for d in [ "Byhand", "New", "ProposedUpdates", "OldProposedUpdates", "Embargoed", "Unembargoed" ]: - if not cnf.has_key("Dir::Queue::%s" % (d)): continue - 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)) + # 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): + self.rejects.append("%s file already exists in the %s queue." % (f, queue_name)) if not re_taint_free.match(f): self.rejects.append("!!WARNING!! tainted filename: '%s'." % (f)) @@ -1494,16 +1502,16 @@ class Upload(object): continue # Look in some other queues for the file - queues = ('New', 'Byhand', 'ProposedUpdates', - 'OldProposedUpdates', 'Embargoed', 'Unembargoed') + queue_names = ['new', 'byhand', + 'proposedupdates', 'oldproposedupdates', + 'embargoed', 'unembargoed'] - for queue in queues: - if not cnf.get('Dir::Queue::%s' % queue): + for queue_name in queue_names: + queue = get_policy_queue(queue_name, session) + if not queue: continue - queuefile_path = os.path.join( - cnf['Dir::Queue::%s' % queue], filename - ) + queuefile_path = os.path.join(queue.path, filename) if not os.path.exists(queuefile_path): # Does not exist in this queue @@ -2314,7 +2322,7 @@ distribution.""" if os.access(file_entry, os.R_OK) == 0: continue - dest_file = os.path.join(cnf["Dir::Queue::Reject"], file_entry) + dest_file = os.path.join(cnf["Dir::Reject"], file_entry) try: dest_fd = os.open(dest_file, os.O_RDWR | os.O_CREAT | os.O_EXCL, 0644) @@ -2326,7 +2334,7 @@ distribution.""" except NoFreeFilenameError: # Something's either gone badly Pete Tong, or # someone is trying to exploit us. - utils.warn("**WARNING** failed to find a free filename for %s in %s." % (file_entry, cnf["Dir::Queue::Reject"])) + utils.warn("**WARNING** failed to find a free filename for %s in %s." % (file_entry, cnf["Dir::Reject"])) return # Make sure we really got it @@ -2396,7 +2404,7 @@ distribution.""" cnf = Config() reason_filename = self.pkg.changes_file[:-8] + ".reason" - reason_filename = os.path.join(cnf["Dir::Queue::Reject"], reason_filename) + reason_filename = os.path.join(cnf["Dir::Reject"], reason_filename) # Move all the files into the reject directory reject_files = self.pkg.files.keys() + [self.pkg.changes_file] @@ -2746,12 +2754,15 @@ distribution.""" orig_files[dsc_name]["path"] = old_file orig_files[dsc_name]["location"] = x.location.location_id else: - # TODO: Record the queues and info in the DB so we don't hardcode all this crap + # TODO: Determine queue list dynamically # Not there? Check the queue directories... - for directory in [ "New", "Byhand", "ProposedUpdates", "OldProposedUpdates", "Embargoed", "Unembargoed" ]: - if not Cnf.has_key("Dir::Queue::%s" % (directory)): + for queue_name in [ "byhand", "new", "proposedupdates", "oldproposedupdates", "embargoed", "unembargoed" ]: + queue = get_policy_queue(queue_name, session) + if not queue: continue - in_otherdir = os.path.join(Cnf["Dir::Queue::%s" % (directory)], dsc_name) + + in_otherdir = os.path.join(queue.path, dsc_name) + if os.path.exists(in_otherdir): in_otherdir_fh = utils.open_file(in_otherdir) actual_md5 = apt_pkg.md5sum(in_otherdir_fh) @@ -2798,10 +2809,10 @@ distribution.""" source_epochless_version = re_no_epoch.sub('', source_version) dsc_filename = "%s_%s.dsc" % (source_package, source_epochless_version) found = False - for q in ["Embargoed", "Unembargoed", "Newstage"]: - if cnf.has_key("Dir::Queue::%s" % (q)): - if os.path.exists(cnf["Dir::Queue::%s" % (q)] + '/' + dsc_filename): - found = True + for queue_name in ["embargoed", "unembargoed", "newstage"]: + queue = get_policy_queue(queue_name, session) + if queue and os.path.exists(os.path.join(queue.path, dsc_filename)): + found = True if not found: self.rejects.append("no source found for %s %s (%s)." % (source_package, source_version, f))