From 214a1ee2147a03f938995af503aa1a9ab447235a Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 20 2015 09:25:11 +0000 Subject: Move updating the tags of a ticket (add/rm) to the internal library This way it can be re-used elsewhere --- diff --git a/progit/lib/__init__.py b/progit/lib/__init__.py index fdd5b32..e020f6c 100644 --- a/progit/lib/__init__.py +++ b/progit/lib/__init__.py @@ -1008,3 +1008,38 @@ def avatar_url_from_openid(openid, size=64, default='retro', dns=False): query = urllib.urlencode({'s': size, 'd': default}) hash = hashlib.sha256(openid).hexdigest() return "https://seccdn.libravatar.org/avatar/%s?%s" % (hash, query) + + +def update_tags_issue(session, issue, tags, username, ticketfolder): + """ Update the tags of a specified issue (adding or removing them). + + """ + if isinstance(tags, basestring): + tags = [tags] + + toadd = set(tags) - set(issue.tags_text) + torm = set(issue.tags_text) - set(tags) + messages = [] + for tag in toadd: + messages.append( + add_issue_tag( + session, + issue=issue, + tag=tag, + user=username, + ticketfolder=ticketfolder, + ) + ) + + if torm: + messages.append( + remove_tags_issue( + session, + issue=issue, + tags=torm, + ticketfolder=ticketfolder, + ) + ) + session.commit() + + return messages diff --git a/progit/ui/issues.py b/progit/ui/issues.py index 083813d..41fae16 100644 --- a/progit/ui/issues.py +++ b/progit/ui/issues.py @@ -99,29 +99,12 @@ def update_issue(repo, issueid, username=None): flask.flash(message) # Adjust (add/remove) tags - toadd = set(tags) - set(issue.tags_text) - torm = set(issue.tags_text) - set(tags) - for tag in toadd: - message = progit.lib.add_issue_tag( - SESSION, - issue=issue, - tag=tag, - user=flask.g.fas_user.username, - ticketfolder=APP.config['TICKETS_FOLDER'], - ) - SESSION.commit() - if message: - flask.flash(message) - if torm: - messages = progit.lib.remove_tags_issue( - SESSION, - issue=issue, - tags=torm, - ticketfolder=APP.config['TICKETS_FOLDER'], - ) - SESSION.commit() - for message in messages: - flask.flash(message) + messages = progit.lib.update_tags_issue( + SESSION, issue, tags, + username=flask.g.fas_user.username, + ticketfolder=APP.config['TICKETS_FOLDER']) + for message in messages: + flask.flash(message) # Assign or update assignee of the ticket message = progit.lib.add_issue_assignee(