From 49a76cebeaad4658f6afdb6833e189f0765ab69a Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Mar 06 2020 08:35:52 +0000 Subject: [PATCH 1/2] Write bugzilla overrides into pagure_poc.json Signed-off-by: Karsten Hopp --- diff --git a/scripts/pagure_poc.py b/scripts/pagure_poc.py index 5e8d1bf..03f2939 100644 --- a/scripts/pagure_poc.py +++ b/scripts/pagure_poc.py @@ -18,6 +18,8 @@ import pagure.config import pagure.lib.query from pagure.lib import model +import pagure_distgit.model as distgit + if 'PAGURE_CONFIG' not in os.environ \ and os.path.exists('/etc/pagure/pagure.cfg'): os.environ['PAGURE_CONFIG'] = '/etc/pagure/pagure.cfg' @@ -31,7 +33,7 @@ def main(args): """ Creates a JSON blob containing the following structure: { namespace: { - package: main admin, + package: { main admin, epel_assignee, fedora_assignee }, ... }, ... @@ -52,7 +54,8 @@ def main(args): session = pagure.lib.query.create_session(_config['DB_URL']) query = session.query( - model.Project.namespace, model.Project.name, model.User.user + model.Project.namespace, model.Project.name, + model.User.user, model.Project.id, ).filter( model.Project.user_id == model.User.id ).filter( @@ -61,11 +64,31 @@ def main(args): model.Project.is_fork == False ) - output = collections.defaultdict(dict) + or_query = session.query( + distgit.PagureBZOverride.project_id, + distgit.PagureBZOverride.epel_assignee, + distgit.PagureBZOverride.fedora_assignee + ) + overrides = {} + for entry in or_query.all(): + or_project_id, epel_assignee, fedora_assignee = entry + overrides[or_project_id] = [epel_assignee, fedora_assignee] + + output = collections.defaultdict(dict) for entry in query.all(): - namespace, package, admin = entry - output[namespace][package] = admin + namespace, package, admin, project_id = entry + if project_id in overrides: + epel_assignee = overrides[project_id][0] or admin + fedora_assignee = overrides[project_id][1] or admin + else: + epel_assignee = admin + fedora_assignee = admin + output[namespace][package] = { + 'admin': admin, + 'epel': epel_assignee, + 'fedora': fedora_assignee + } with open(os.path.join(args[0], 'pagure_poc.json'), 'w') as stream: json.dump(output, stream, indent=4, sort_keys=True) From c7c181b26b61281dac4489045732fd8768693c18 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Mar 06 2020 08:35:52 +0000 Subject: [PATCH 2/2] use left outerjoin Signed-off-by: Karsten Hopp --- diff --git a/scripts/pagure_poc.py b/scripts/pagure_poc.py index 03f2939..f233ef3 100644 --- a/scripts/pagure_poc.py +++ b/scripts/pagure_poc.py @@ -56,34 +56,24 @@ def main(args): query = session.query( model.Project.namespace, model.Project.name, model.User.user, model.Project.id, + distgit.PagureBZOverride.epel_assignee, + distgit.PagureBZOverride.fedora_assignee ).filter( model.Project.user_id == model.User.id ).filter( model.Project.parent_id == None ).filter( model.Project.is_fork == False - ) - - or_query = session.query( - distgit.PagureBZOverride.project_id, - distgit.PagureBZOverride.epel_assignee, - distgit.PagureBZOverride.fedora_assignee - ) - - overrides = {} - for entry in or_query.all(): - or_project_id, epel_assignee, fedora_assignee = entry - overrides[or_project_id] = [epel_assignee, fedora_assignee] + ).outerjoin(distgit.PagureBZOverride) output = collections.defaultdict(dict) for entry in query.all(): - namespace, package, admin, project_id = entry - if project_id in overrides: - epel_assignee = overrides[project_id][0] or admin - fedora_assignee = overrides[project_id][1] or admin - else: - epel_assignee = admin - fedora_assignee = admin + ( namespace, package, + admin, project_id, + epel_assignee, fedora_assignee, + ) = entry + epel_assignee = epel_assignee or admin + fedora_assignee = fedora_assignee or admin output[namespace][package] = { 'admin': admin, 'epel': epel_assignee,