X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fdominate.py;h=600d1127d927f0011cab4e4939213080bdf7818e;hb=5b520e89c57dfc268c2e32a88b4e5b4b7ec4333c;hp=a6be1b035adc841f35fec7d83f6ac3c8e015e94b;hpb=1f2b6a84e56af6dc38bb8939e96645b8931c1173;p=dak.git diff --git a/dak/dominate.py b/dak/dominate.py index a6be1b03..600d1127 100755 --- a/dak/dominate.py +++ b/dak/dominate.py @@ -87,9 +87,12 @@ def deleteAssociations(table, idList, session): query = """ DELETE FROM %s - WHERE id = :id + WHERE id IN :idList """ % table - session.execute(query, [{'id': id} for id in idList]) + if not idList: + return + params = {'idList': tuple(idList)} + session.execute(query, params) def doDaDoDa(suite, session): # keep this part disabled because it is too dangerous @@ -137,17 +140,25 @@ def main(): suites = [suite.suite_name for suite in query_suites] cnf['Obsolete::Options::Suite'] = str(','.join(suites)) - Logger = daklog.Logger("dominate") + if not Options['No-Action']: + Logger = daklog.Logger("dominate") session = DBConn().session() for suite_name in utils.split_args(Options['Suite']): suite = session.query(Suite).filter_by(suite_name = suite_name).one() + + # Skip policy queues. We don't want to remove obsolete packages from those. + policy_queue = session.query(PolicyQueue).filter_by(suite=suite).first() + if policy_queue is not None: + continue + if not suite.untouchable or Options['Force']: doDaDoDa(suite.suite_id, session) if Options['No-Action']: session.rollback() else: session.commit() - Logger.close() + if Logger: + Logger.close() if __name__ == '__main__': main()