X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_new.py;h=060fa236964d539dbc2aa7ec5b49e7929f0b6513;hb=08522d77db6c4df0f7241676d765cdcf9e2da5b3;hp=dfd654c978950cc419c83db00da9fe3bac612908;hpb=69d3ecd9bb4e48a93683f9a3b069c8737220023d;p=dak.git diff --git a/dak/process_new.py b/dak/process_new.py index dfd654c9..060fa236 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -95,6 +95,8 @@ def recheck(upload, session): if answer == 'R': upload.do_reject(manual=0, reject_message='\n'.join(upload.rejects)) + upload.pkg.remove_known_changes(session=session) + session.commit() return 0 elif answer == 'S': return 0 @@ -603,6 +605,9 @@ def do_new(upload, session): changes = upload.pkg.changes cnf = Config() + # Check for a valid distribution + upload.check_distributions() + # Make a copy of distribution we can happily trample on changes["suite"] = copy.copy(changes["distribution"]) @@ -620,10 +625,6 @@ def do_new(upload, session): oinv, suite, ninv, override) del changes["suite"][suite] changes["suite"][override] = 1 - # Validate suites - for suite in changes["suite"].keys(): - if get_suite(suite, session) is None: - utils.fubar("%s has invalid suite '%s' (possibly overriden). say wha?" % (changes, suite)) # The main NEW processing loop done = 0 @@ -666,6 +667,7 @@ def do_new(upload, session): try: check_daily_lock() done = add_overrides (new, upload, session) + do_accept(upload, session) Logger.log(["NEW ACCEPT: %s" % (upload.pkg.changes_file)]) except CantGetLockError: print "Hello? Operator! Give me the number for 911!" @@ -675,11 +677,12 @@ def do_new(upload, session): elif answer == 'E' and not Options["Trainee"]: new = edit_overrides (new, upload, session) elif answer == 'M' and not Options["Trainee"]: - upload.pkg.remove_known_changes() aborted = upload.do_reject(manual=1, reject_message=Options["Manual-Reject"], - note=get_new_comments(changes.get("source", ""), session=session)) + notes=get_new_comments(changes.get("source", ""), session=session)) if not aborted: + upload.pkg.remove_known_changes(session=session) + session.commit() Logger.log(["NEW REJECT: %s" % (upload.pkg.changes_file)]) done = 1 elif answer == 'N': @@ -769,6 +772,8 @@ def do_byhand(upload, session): elif answer == 'M': Logger.log(["BYHAND REJECT: %s" % (upload.pkg.changes_file)]) upload.do_reject(manual=1, reject_message=Options["Manual-Reject"]) + upload.pkg.remove_known_changes(session=session) + session.commit() done = 1 elif answer == 'S': done = 1 @@ -816,21 +821,38 @@ def lock_package(package): finally: os.unlink(path) +class clean_holding(object): + def __init__(self,pkg): + self.pkg = pkg + + def __enter__(self): + pass + + def __exit__(self, type, value, traceback): + h = Holding() + + for f in self.pkg.files.keys(): + if os.path.exists(os.path.join(h.holding_dir, f)): + os.unlink(os.path.join(h.holding_dir, f)) + + + def changes_to_newstage(upload, session): """move a changes file to newstage""" + new = get_policy_queue('new', session ); newstage = get_policy_queue('newstage', session ); - # changes.in_queue = newstage - chg = session.query(DBChange).filter_by(changesname=os.path.basename(upload.pkg.changes_file)).one() chg.approved_for = newstage.policy_queue_id for f in chg.files: # update the changes_pending_files row f.queue = newstage + utils.move(os.path.join(new.path, f.filename), newstage.path, perms=int(newstage.perms, 8)) - # actually move files - upload.move_to_queue(newstage) + utils.move(os.path.join(new.path, upload.pkg.changes_file), newstage.path, perms=int(newstage.perms, 8)) + chg.in_queue = newstage + session.commit() def _accept(upload, session): if Options["No-Action"]: @@ -887,15 +909,21 @@ def do_pkg(changes_file, session): try: with lock_package(u.pkg.changes["source"]): - if not recheck(u, session): - return - - # FIXME: This does need byhand checks added! - new = determine_new(u.pkg.changes, files) - if new: - do_new(u, session) - else: - do_accept(u, session) + with clean_holding(u.pkg): + if not recheck(u, session): + return + + # FIXME: This does need byhand checks added! + new = determine_new(u.pkg.changes, files) + if new: + do_new(u, session) + else: + try: + check_daily_lock() + do_accept(u, session) + except CantGetLockError: + print "Hello? Operator! Give me the number for 911!" + print "Dinstall in the locked area, cant process packages, come back later" # (new, byhand) = check_status(files) # if new or byhand: # if new: