X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=dak%2Facl.py;h=397bf9c11a4e554220fbd073d60723823aa76edf;hb=878714a85b639d2a3ca858d72f7cefa228900478;hp=568e21e46b6c28990c24e6e54f1eb8335068d5ae;hpb=fc107ed3ee7b9d932514b4ea91a50074610d0ce3;p=dak.git diff --git a/dak/acl.py b/dak/acl.py index 568e21e4..397bf9c1 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 @@ -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.join(Fingerprint.keyring).filter(Keyring.keyring_name == value) + else: + raise Exception('Unknown selector "{0}".'.format(field)) return q.all() @@ -84,14 +89,17 @@ def acl_export_per_source(acl_name): session = DBConn().session() acl = session.query(ACL).filter_by(name=acl_name).one() - query = """ + query = r""" SELECT f.fingerprint, (SELECT COALESCE(u.name, '') || ' <' || u.uid || '>' FROM uid u JOIN fingerprint f2 ON u.id = f2.uid WHERE f2.id = f.id) AS name, - STRING_AGG(a.source, ' ' ORDER BY a.source) + STRING_AGG( + a.source + || COALESCE(' (' || (SELECT fingerprint FROM fingerprint WHERE id = a.created_by_id) || ')', ''), + E',\n ' ORDER BY a.source) FROM acl_per_source a JOIN fingerprint f ON a.fingerprint_id = f.id LEFT JOIN uid u ON f.uid = u.id