From 5e3418b2389d570a6cd79875ce4f48d15a5a6c8e Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Oct 19 2017 15:15:13 +0000 Subject: Support pagure tag filtering. This is in support of #31. --- diff --git a/sync2jira/main.py b/sync2jira/main.py index 4063c1c..0dbcd77 100644 --- a/sync2jira/main.py +++ b/sync2jira/main.py @@ -45,6 +45,8 @@ handlers = { 'github.issue.labeled': u.handle_github_message, # Example: https://apps.fedoraproject.org/datagrepper/id?id=2016-d578d8f6-0c4c-493d-9535-4e138a03e197&is_raw=true&size=extra-large 'pagure.issue.new': u.handle_pagure_message, + # Example: https://apps.fedoraproject.org/datagrepper/id?id=2017-c2e81259-8576-41a9-83c6-6db2cbcf67d3&is_raw=true&size=extra-large + 'pagure.issue.tag.added': u.handle_pagure_message, } diff --git a/sync2jira/upstream.py b/sync2jira/upstream.py index bb84ac5..e55bb3a 100644 --- a/sync2jira/upstream.py +++ b/sync2jira/upstream.py @@ -81,10 +81,18 @@ def handle_pagure_message(msg, config): .get(upstream, {'status': 'Open'}) for key, expected in filter.items(): - actual = msg['msg']['issue'].get(key) - if actual != expected: - log.info("Actual %r %r != expected %r" % (key, actual, expected)) - return None + # special handling for tag: we look for it in the list of msg tags + if key == 'tags': + actual = [tag['name'] for tag in msg['msg']['issue']['tags']] + if expected not in actual: + log.info("Tag %s not set on issue" % expected) + return None + else: + # direct comparison + actual = msg['msg']['issue'].get(key) + if actual != expected: + log.info("Actual %r %r != expected %r" % (key, actual, expected)) + return None return i.Issue.from_pagure(upstream, msg['msg']['issue'], config)