X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Facl.py;h=a6fdddd953c041d13bd74a348bc9aec3fb7d8975;hb=245c6549dbacaeab5ee36ec74372b1df8675b477;hp=e19b26912dd8234dc5148186431154a566f28b38;hpb=263c4b89407e0b20c479bbdd31fc14c380ebe118;p=dak.git diff --git a/dak/acl.py b/dak/acl.py index e19b2691..a6fdddd9 100644 --- a/dak/acl.py +++ b/dak/acl.py @@ -20,7 +20,7 @@ import apt_pkg import sys from daklib.config import Config -from daklib.dbconn import DBConn, Fingerprint, Uid, ACL +from daklib.dbconn import DBConn, Fingerprint, Keyring, Uid, ACL def usage(): print """Usage: @@ -44,6 +44,7 @@ def get_fingerprint(entry, session): uid: name: fpr: + keyring: @type entry: string @param entry: ACL entry @@ -54,7 +55,7 @@ def get_fingerprint(entry, session): @return: fingerprint for the entry """ field, value = entry.split(":", 1) - q = session.query(Fingerprint) + q = session.query(Fingerprint).join(Fingerprint.keyring).filter(Keyring.active == True) if field == 'uid': q = q.join(Fingerprint.uid).filter(Uid.uid == value) @@ -62,6 +63,10 @@ def get_fingerprint(entry, session): q = q.join(Fingerprint.uid).filter(Uid.name == value) elif field == 'fpr': q = q.filter(Fingerprint.fingerprint == value) + elif field == 'keyring': + q = q.filter(Keyring.keyring_name == value) + else: + raise Exception('Unknown selector "{0}".'.format(field)) return q.all() @@ -72,6 +77,9 @@ def acl_set_fingerprints(acl_name, entries): acl.fingerprints.clear() for entry in entries: entry = entry.strip() + if entry.startswith('#') or len(entry) == 0: + continue + fps = get_fingerprint(entry, session) if len(fps) == 0: print "Unknown key for '{0}'".format(entry)