From 9fc2ba435c39806ad2b9baa7589c5330d545727c Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Sep 28 2017 17:26:10 +0000 Subject: Add a small script dumping the main admins of each project in pagure This can then be run via a cron job and exposed somewhere for tools to consume. Fixes https://pagure.io/pagure/issue/2618 Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure_poc.py b/pagure_poc.py new file mode 100644 index 0000000..93d042f --- /dev/null +++ b/pagure_poc.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +""" + (c) 2017 - Copyright Red Hat Inc + + Authors: The Dream Team + Pierre-Yves Chibon + +""" +from __future__ import print_function + +import collections +import json +import logging +import os + +if 'PAGURE_CONFIG' not in os.environ \ + and os.path.exists('/etc/pagure/pagure.cfg'): + os.environ['PAGURE_CONFIG'] = '/etc/pagure/pagure.cfg' + +import pagure # noqa: E402 +from pagure.lib import model # noqa: E402 + + +_log = logging.getLogger(__name__) + + +def main(): + """ Creates a JSON blob containing the following structure: + { + namespace: { + package: main admin, + ... + }, + ... + } + """ + query = pagure.SESSION.query( + model.Project.namespace, model.Project.name, model.User.user + ).filter( + model.Project.user_id == model.User.id + ) + + output = collections.defaultdict(dict) + + for entry in query.all(): + namespace, package, admin = entry + output[namespace][package] = admin + + with open('pagure_poc.json', 'w') as stream: + json.dump(output, stream, indent=4, sort_keys=True) + + +if __name__ == '__main__': + import sys + sys.exit(main())