]> git.decadent.org.uk Git - dak.git/blobdiff - dak/acl.py
debianqueued: remove current directory from @INC
[dak.git] / dak / acl.py
index 075c722b5842bfd05f3b3269818480369c115a87..e19b26912dd8234dc5148186431154a566f28b38 100644 (file)
@@ -23,9 +23,17 @@ from daklib.config import Config
 from daklib.dbconn import DBConn, Fingerprint, Uid, ACL
 
 def usage():
-    print """Usage: dak acl set-fingerprints <acl-name>
+    print """Usage:
+  dak acl set-fingerprints <acl-name>
+  dak acl export-per-source <acl-name>
 
-Reads list of fingerprints from stdin and sets the ACL <acl-name> to these.
+  set-fingerprints:
+    Reads list of fingerprints from stdin and sets the ACL <acl-name> to these.
+    Accepted input formats are "uid:<uid>", "name:<name>" and
+    "fpr:<fingerprint>".
+
+  export-per-source:
+    Export per source upload rights for ACL <acl-name>.
 """
 
 def get_fingerprint(entry, session):
@@ -76,14 +84,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