From 241908b27c76bb605c39c787cd39e7cc394d0722 Mon Sep 17 00:00:00 2001
From: Mark Reynolds
Date: Feb 06 2017 14:15:12 +0000
Subject: Issue 1747 - Adda notification comment after updating metadata
Whne editing an Issue's metadata start building a string of comments for each field updated. Then add a single notification comment that describes who changed what field and to what value. This requires returning a "edit comment", along withthe orignal message, for each type of metadata field we update.
---
diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py
index 377bcfe..c78554b 100644
--- a/pagure/lib/__init__.py
+++ b/pagure/lib/__init__.py
@@ -396,6 +396,10 @@ def add_issue_assignee(session, issue, assignee, user, ticketfolder,
notify=True):
''' Add an assignee to an issue, in other words, assigned an issue. '''
user_obj = get_user(session, user)
+ if issue.assignee is None or issue.assignee == "":
+ old_assignee = '\"\"'
+ else:
+ old_assignee = issue.assignee
if not assignee and issue.assignee is not None:
issue.assignee_id = None
@@ -404,7 +408,7 @@ def add_issue_assignee(session, issue, assignee, user, ticketfolder,
session.commit()
pagure.lib.git.update_git(
issue, repo=issue.project, repofolder=ticketfolder)
-
+ comment = '**Assignee** removed ``%s``' % (old_assignee.user)
if notify:
pagure.lib.notify.notify_assigned_issue(issue, None, user_obj)
@@ -425,19 +429,26 @@ def add_issue_assignee(session, issue, assignee, user, ticketfolder,
REDIS.publish('pagure.%s' % issue.uid, json.dumps(
{'unassigned': '-'}))
- return 'Assignee reset'
+ return 'Assignee reset', comment
elif not assignee and issue.assignee is None:
- return 'Nothing to change'
+ return 'Nothing to change', ""
# Validate the assignee
assignee_obj = get_user(session, assignee)
if issue.assignee_id != assignee_obj.id:
+ if issue.assignee_id is None:
+ comment = '**Assignee** set to ``%s``' % (assignee_obj.user)
+ else:
+ comment = '**Assignee** changed from ``%s`` to ``%s``' % (
+ old_assignee, assignee_obj.user)
+
issue.assignee_id = assignee_obj.id
session.add(issue)
session.flush()
pagure.lib.git.update_git(
issue, repo=issue.project, repofolder=ticketfolder)
+
if notify:
pagure.lib.notify.notify_assigned_issue(
issue, assignee_obj, user_obj)
@@ -460,7 +471,9 @@ def add_issue_assignee(session, issue, assignee, user, ticketfolder,
REDIS.publish('pagure.%s' % issue.uid, json.dumps(
{'assigned': assignee_obj.to_json(public=True)}))
- return 'Issue assigned'
+ return 'Issue assigned', comment
+ else:
+ return "", ""
def add_pull_request_assignee(
@@ -1395,9 +1408,21 @@ def new_tag(session, tag_name, tag_description, tag_color, project_id):
return tagobj
+def build_meta_comment(comment, field, old_value, new_value):
+ ''' Format a new comment for metadata changes and add it to the existing
+ comment. Convert 'None' and empty values to something more friendly.
+ '''
+ if old_value is None or old_value == "":
+ old_value = '\"\"'
+ if new_value is None or new_value == "":
+ new_value = '\"\"'
+ return ("**%s** changed from ``%s`` to ``%s``\n%s" %
+ (field, old_value, new_value, comment))
+
+
def edit_issue(session, issue, ticketfolder, user,
title=None, content=None, status=None, close_status=-1,
- priority=None, milestone=None, private=False):
+ priority=None, milestone=-1, private=False):
''' Edit the specified issue.
'''
user_obj = get_user(session, user)
@@ -1410,13 +1435,18 @@ def edit_issue(session, issue, ticketfolder, user,
'depending that are still open.')
edit = []
+ edit_comment = ""
if title and title != issue.title:
+ edit_comment = build_meta_comment(
+ edit_comment, "Title", issue.title, title)
issue.title = title
edit.append('title')
if content and content != issue.content:
issue.content = content
edit.append('content')
if status and status != issue.status:
+ edit_comment = build_meta_comment(
+ edit_comment, "Status", issue.status, status)
issue.status = status
if status.lower() != 'open':
issue.closed_at = datetime.datetime.utcnow()
@@ -1425,6 +1455,8 @@ def edit_issue(session, issue, ticketfolder, user,
edit.append('close_status')
edit.append('status')
if close_status != -1 and close_status != issue.close_status:
+ edit_comment = build_meta_comment(
+ edit_comment, "Closed as", issue.close_status, close_status)
issue.close_status = close_status
edit.append('close_status')
if priority:
@@ -1433,12 +1465,18 @@ def edit_issue(session, issue, ticketfolder, user,
except:
priority = None
if priority != issue.priority:
+ edit_comment = build_meta_comment(
+ edit_comment, "Priority", issue.priority, priority)
issue.priority = priority
edit.append('priority')
if private in [True, False] and private != issue.private:
+ edit_comment = build_meta_comment(
+ edit_comment, "Private", str(issue.private), str(private))
issue.private = private
edit.append('private')
- if milestone != issue.milestone:
+ if milestone != -1 and milestone != issue.milestone:
+ edit_comment = build_meta_comment(
+ edit_comment, "Milestone", issue.milestone, milestone)
issue.milestone = milestone
edit.append('milestone')
issue.last_updated = datetime.datetime.utcnow()
@@ -1449,16 +1487,6 @@ def edit_issue(session, issue, ticketfolder, user,
issue, repo=issue.project, repofolder=ticketfolder)
if 'status' in edit:
- add_issue_comment(
- session,
- issue,
- comment='@%s changed the status to ``%s``' % (
- user_obj.username, status),
- user=user,
- ticketfolder=ticketfolder,
- notify=False,
- notification=True,
- )
log_action(session, status.lower(), issue, user_obj)
pagure.lib.notify.notify_status_change_issue(issue, user_obj)
@@ -1490,7 +1518,9 @@ def edit_issue(session, issue, ticketfolder, user,
if edit:
session.add(issue)
session.flush()
- return 'Successfully edited issue #%s' % issue.id
+ return 'Successfully edited issue #%s' % issue.id, edit_comment
+ else:
+ return "", ""
def update_project_settings(session, repo, settings, user):
@@ -2486,6 +2516,7 @@ def update_tags(session, obj, tags, username, ticketfolder):
toadd = set(tags) - set(obj.tags_text)
torm = set(obj.tags_text) - set(tags)
messages = []
+ comment = ""
if toadd:
messages.append(
add_tag_obj(
@@ -2496,6 +2527,10 @@ def update_tags(session, obj, tags, username, ticketfolder):
ticketfolder=ticketfolder,
)
)
+ if len(toadd) == 1:
+ comment += "**Tags** added tag: ``%s``\n" % list(toadd)[0]
+ else:
+ comment += "**Tags** added tags: ``" + ', '.join(toadd) + "``\n"
if torm:
messages.append(
@@ -2507,9 +2542,14 @@ def update_tags(session, obj, tags, username, ticketfolder):
ticketfolder=ticketfolder,
)
)
+ if len(torm) == 1:
+ comment += "**Tags** removed tag: ``%s\n``" % list(torm)[0]
+ else:
+ comment += "**Tags** removed tags: ``" + ', '.join(torm) + "``\n"
+
session.commit()
- return messages
+ return messages, comment
def update_dependency_issue(
@@ -2523,8 +2563,11 @@ def update_dependency_issue(
toadd = set(depends) - set(issue.depends_text)
torm = set(issue.depends_text) - set(depends)
messages = []
+ comment = ""
# Add issue depending
+ if toadd:
+ comment += "**Depends on** added dependencies: ``"
for depend in toadd:
issue_depend = search_issues(session, repo, issueid=depend)
if issue_depend is None:
@@ -2542,8 +2585,14 @@ def update_dependency_issue(
ticketfolder=ticketfolder,
)
)
+ comment += "%s " % (depend)
+
+ if toadd:
+ comment += "``\n"
# Remove issue depending
+ if torm:
+ comment += "**Depends on** removed issue dependencies: ``"
for depend in torm:
issue_depend = search_issues(session, repo, issueid=depend)
if issue_depend is None: # pragma: no cover
@@ -2563,9 +2612,13 @@ def update_dependency_issue(
ticketfolder=ticketfolder,
)
)
+ comment += "%s " % (depend)
+
+ if torm:
+ comment += "``\n"
session.commit()
- return messages
+ return messages, comment
def update_blocked_issue(
@@ -2580,8 +2633,11 @@ def update_blocked_issue(
toadd = set(blocks) - set(issue.blocks_text)
torm = set(issue.blocks_text) - set(blocks)
messages = []
+ comment = ""
# Add issue blocked
+ if toadd:
+ comment += "**Blocked** added blocking issue dependencies: ``"
for block in toadd:
issue_block = search_issues(session, repo, issueid=block)
if issue_block is None:
@@ -2600,8 +2656,14 @@ def update_blocked_issue(
)
)
session.commit()
+ comment += "%s " % (block)
+
+ if toadd:
+ comment += "``\n"
# Remove issue blocked
+ if torm:
+ comment += "**Blocked** remove blocking issue dependencies: ``"
for block in torm:
issue_block = search_issues(session, repo, issueid=block)
if issue_block is None: # pragma: no cover
@@ -2622,9 +2684,12 @@ def update_blocked_issue(
ticketfolder=ticketfolder,
)
)
+ comment += "%s " % (block)
+ if torm:
+ comment += "``\n"
session.commit()
- return messages
+ return messages, comment
def add_user_pending_email(session, userobj, email):
@@ -3523,7 +3588,10 @@ def set_custom_key_value(session, issue, key, value):
current_field = query.first()
updated = False
delete = False
+ old_value = None
+ comment = ""
if current_field:
+ old_value = current_field.value
if current_field.key.key_type == 'boolean':
value = value or False
if value is None or value == '':
@@ -3534,18 +3602,20 @@ def set_custom_key_value(session, issue, key, value):
current_field.value = value
updated = True
else:
- if value is None or value == '':
- delete = True
- else:
- current_field = model.IssueValues(
- issue_uid=issue.uid,
- key_id=key.id,
- value=value,
- )
+ current_field = model.IssueValues(
+ issue_uid=issue.uid,
+ key_id=key.id,
+ value=value,
+ )
+ if value:
updated = True
+
if not delete:
session.add(current_field)
+ if updated:
+ comment = build_meta_comment("", key.name, old_value, value)
+
if REDIS and updated:
if issue.private:
REDIS.publish('pagure.%s' % issue.uid, json.dumps({
@@ -3558,14 +3628,14 @@ def set_custom_key_value(session, issue, key, value):
'issue': issue.to_json(public=True, with_comments=False),
}))
- return 'Custom field adjusted'
+ return comment
def get_yearly_stats_user(session, user, date):
""" Return the activity of the specified user in the year preceding the
specified date.
"""
- start_date = datetime.datetime(date.year -1, date.month, date.day)
+ start_date = datetime.datetime(date.year - 1, date.month, date.day)
query = session.query(
model.PagureLog.date, func.count(model.PagureLog.id)
@@ -3622,7 +3692,6 @@ def log_action(session, action, obj, user_obj):
elif obj.isa == 'pull-request':
setattr(log, 'pull_request_uid', obj.uid)
-
session.add(log)
session.commit()
diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py
index 09747b0..8463d79 100644
--- a/pagure/ui/issues.py
+++ b/pagure/ui/issues.py
@@ -194,6 +194,7 @@ def update_issue(repo, issueid, username=None, namespace=None):
try:
messages = set()
+ field_comments = ""
# New comment
if comment:
@@ -213,36 +214,43 @@ def update_issue(repo, issueid, username=None, namespace=None):
# Update status
if repo_admin or flask.g.fas_user.username == issue.user.user:
if new_status in status:
- message = pagure.lib.edit_issue(
+ message, new_comment = pagure.lib.edit_issue(
SESSION,
issue=issue,
status=new_status,
close_status=close_status,
private=issue.private,
user=flask.g.fas_user.username,
- ticketfolder=APP.config['TICKETS_FOLDER'],
+ ticketfolder=APP.config['TICKETS_FOLDER']
)
SESSION.commit()
if message:
messages.add(message)
+ if new_comment != "":
+ field_comments = ("%s\n%s" %
+ (field_comments, new_comment))
# All the other meta-data can be changed only by admins
# while other field will be missing for non-admin and thus
# reset if we let them
if repo_admin:
# Adjust (add/remove) tags
- messages.union(set(pagure.lib.update_tags(
+ msgs, new_comment = pagure.lib.update_tags(
SESSION, issue, tags,
username=flask.g.fas_user.username,
ticketfolder=APP.config['TICKETS_FOLDER']
- )))
+ )
+ messages.union(set(msgs))
+ if new_comment != "":
+ field_comments = ("%s\n%s" %
+ (field_comments, new_comment))
# The meta-data can be changed by admins and issue creator,
# where issue creators can only change status of their issue while
# other fields will be missing for non-admin and thus reset if we let them
if repo_admin:
# Assign or update assignee of the ticket
- message = pagure.lib.add_issue_assignee(
+ message, new_comment = pagure.lib.add_issue_assignee(
SESSION,
issue=issue,
assignee=assignee or None,
@@ -252,26 +260,19 @@ def update_issue(repo, issueid, username=None, namespace=None):
SESSION.commit()
if message and message != 'Nothing to change':
messages.add(message)
-
- # Update priority
- if str(new_priority) in repo.priorities:
- message = pagure.lib.edit_issue(
- SESSION,
- issue=issue,
- priority=new_priority,
- private=issue.private,
- user=flask.g.fas_user.username,
- ticketfolder=APP.config['TICKETS_FOLDER'],
- )
- SESSION.commit()
- if message:
- messages.add(message)
-
- # Update milestone and privacy setting
- message = pagure.lib.edit_issue(
+ if new_comment != "":
+ field_comments = ("%s\n%s" %
+ (field_comments, new_comment))
+ # Adjust priority if needed
+ if str(new_priority) not in repo.priorities:
+ new_priority = None
+
+ # Update core metadata
+ message, new_comment = pagure.lib.edit_issue(
SESSION,
issue=issue,
milestone=new_milestone,
+ priority=new_priority,
private=form.private.data,
user=flask.g.fas_user.username,
ticketfolder=APP.config['TICKETS_FOLDER'],
@@ -279,38 +280,67 @@ def update_issue(repo, issueid, username=None, namespace=None):
SESSION.commit()
if message:
messages.add(message)
+ if new_comment != "":
+ field_comments = ("%s\n%s" %
+ (field_comments, new_comment))
# Update the custom keys/fields
+ edit_comment = ""
for key in repo.issue_keys:
value = flask.request.form.get(key.name)
- if key.key_type == 'link':
- links = value.split(',')
- for link in links:
- link = link.replace(' ', '')
- if not urlpattern.match(link):
- flask.abort(
- 400,
- 'Meta-data "link" field '
- '(%s) has invalid url (%s) ' %
- (key.name, link))
- messages.add(
- pagure.lib.set_custom_key_value(
- SESSION, issue, key, value)
- )
+ if value:
+ if key.key_type == 'link':
+ links = value.split(',')
+ for link in links:
+ link = link.replace(' ', '')
+ if not urlpattern.match(link):
+ flask.abort(
+ 400,
+ 'Meta-data "link" field '
+ '(%s) has invalid url (%s) ' %
+ (key.name, link))
+
+ new_comment = pagure.lib.set_custom_key_value(
+ SESSION, issue, key, value)
+ if new_comment is not "":
+ edit_comment = "%s%s" % (new_comment, edit_comment)
+
+ if edit_comment is not "":
+ field_comments = ("%s%s" %
+ (field_comments, edit_comment))
# Update ticket this one depends on
- messages.union(set(pagure.lib.update_dependency_issue(
+ msgs, new_comment = pagure.lib.update_dependency_issue(
SESSION, repo, issue, depends,
username=flask.g.fas_user.username,
- ticketfolder=APP.config['TICKETS_FOLDER'],
- )))
+ ticketfolder=APP.config['TICKETS_FOLDER'])
+ messages.union(set(msgs))
+ if new_comment != "":
+ field_comments = ("%s%s" %
+ (field_comments, new_comment))
# Update ticket(s) depending on this one
- messages.union(set(pagure.lib.update_blocked_issue(
+ msgs, new_comment = pagure.lib.update_blocked_issue(
SESSION, repo, issue, blocks,
username=flask.g.fas_user.username,
- ticketfolder=APP.config['TICKETS_FOLDER'],
- )))
+ ticketfolder=APP.config['TICKETS_FOLDER'],)
+ messages.union(set(msgs))
+ if new_comment != "":
+ field_comments = ("%s%s" %
+ (field_comments, new_comment))
+
+ # Add the comment for field updates:
+ if field_comments != "":
+ pagure.lib.add_issue_comment(
+ SESSION,
+ issue,
+ comment='@%s updated metadata\n%s' % (
+ flask.g.fas_user.username, field_comments),
+ user=flask.g.fas_user.username,
+ ticketfolder=APP.config['TICKETS_FOLDER'],
+ notify=False,
+ notification=True)
+ messages.add('Metadata fields updated')
if not is_js:
for message in messages:
@@ -1080,7 +1110,7 @@ def edit_issue(repo, issueid, username=None, namespace=None):
flask.g.fas_user.username))
try:
- message = pagure.lib.edit_issue(
+ message, comment = pagure.lib.edit_issue(
SESSION,
issue=issue,
title=title,
@@ -1091,6 +1121,15 @@ def edit_issue(repo, issueid, username=None, namespace=None):
private=private,
)
SESSION.commit()
+ if comment != "":
+ pagure.lib.add_issue_comment(
+ SESSION,
+ issue,
+ comment=comment,
+ user=flask.g.fas_user.username,
+ ticketfolder=APP.config['TICKETS_FOLDER'],
+ notify=False,
+ notification=True)
# If there is a file attached, attach it.
filestream = flask.request.files.get('filestream')
diff --git a/tests/test_pagure_flask_api_issue.py b/tests/test_pagure_flask_api_issue.py
index 33c99bc..1616fb6 100644
--- a/tests/test_pagure_flask_api_issue.py
+++ b/tests/test_pagure_flask_api_issue.py
@@ -1075,7 +1075,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
data = json.loads(output.data)
self.assertDictEqual(
data,
- {'message': 'No changes'}
+ {'message': ['', '']}
)
# No change
@@ -1092,9 +1092,12 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
'/api/0/test/issue/1/status', data=data, headers=headers)
self.assertEqual(output.status_code, 200)
data = json.loads(output.data)
+ print "MARK2\n\n" + str(data)
self.assertDictEqual(
data,
- {'message': 'Successfully edited issue #1'}
+ {'message': ['Successfully edited issue #1',
+ '**Closed as** changed from ``""`` to ``Fixed``\n'
+ '**Status** changed from ``Open`` to ``Closed``\n']}
)
headers = {'Authorization': 'token pingou_foo'}
@@ -1506,7 +1509,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
data = json.loads(output.data)
self.assertDictEqual(
data,
- {'message': 'Issue assigned'}
+ {'message': ['Issue assigned', '**Assignee** set to ``pingou``']}
)
# Un-assign
@@ -1516,7 +1519,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
data = json.loads(output.data)
self.assertDictEqual(
data,
- {'message': 'Assignee reset'}
+ {'message': ['Assignee reset', '**Assignee** removed ``pingou``']}
)
repo = pagure.lib.get_project(self.session, 'test')
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
@@ -1530,7 +1533,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
data = json.loads(output.data)
self.assertDictEqual(
data,
- {'message': 'Nothing to change'}
+ {'message': ['Nothing to change', '']}
)
repo = pagure.lib.get_project(self.session, 'test')
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
@@ -1544,7 +1547,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
data = json.loads(output.data)
self.assertDictEqual(
data,
- {'message': 'Issue assigned'}
+ {'message': ['Issue assigned', '**Assignee** set to ``pingou``']}
)
# Un-assign
@@ -1555,7 +1558,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
data = json.loads(output.data)
self.assertDictEqual(
data,
- {'message': 'Assignee reset'}
+ {'message': ['Assignee reset', '**Assignee** removed ``pingou``']}
)
# Re-assign for the rest of the tests
@@ -1566,7 +1569,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
data = json.loads(output.data)
self.assertDictEqual(
data,
- {'message': 'Issue assigned'}
+ {'message': ['Issue assigned', '**Assignee** set to ``pingou``']}
)
# One comment added
@@ -1666,7 +1669,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
data = json.loads(output.data)
self.assertDictEqual(
data,
- {'message': 'Issue assigned'}
+ {'message': ['Issue assigned', '**Assignee** set to ``pingou``']}
)
@patch('pagure.lib.git.update_git')
@@ -1964,7 +1967,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
self.assertEqual(
sorted(key.data), ['ack', 'nack', 'needs review'])
- # Reset the value of the field to None
+ # Delete a value from a custom filed that does not exist in the entry
output = self.app.post(
'/api/0/test/issue/1/custom/bugzilla', headers=headers)
self.assertEqual(output.status_code, 200)
@@ -1972,7 +1975,9 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
self.assertDictEqual(
data,
{
- 'message': 'Custom field adjusted'
+ "error": "An error occured at the database level and prevent "
+ "the action from reaching completion",
+ "error_code": "EDBERROR",
}
)
@@ -2010,7 +2015,8 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
self.assertDictEqual(
data,
{
- "message": "Custom field adjusted"
+ "message": '**bugzilla** changed from ``""`` to'
+ ' ``https://bugzilla.redhat.com/1234``\n'
}
)
@@ -2024,7 +2030,8 @@ class PagureFlaskApiIssuetests(tests.Modeltests):
# Reset the value
output = self.app.post(
- '/api/0/test/issue/1/custom/bugzilla', headers=headers)
+ '/api/0/test/issue/1/custom/bugzilla', headers=headers,
+ data={'value': ''})
self.assertEqual(output.status_code, 200)
data = json.loads(output.data)
self.assertDictEqual(
diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py
index 09b19b8..b93ee80 100644
--- a/tests/test_pagure_flask_api_project.py
+++ b/tests/test_pagure_flask_api_project.py
@@ -119,7 +119,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests):
self.assertEqual(repo.tags, [])
# Adding a tag
- output = pagure.lib.update_tags(
+ output, comment = pagure.lib.update_tags(
self.session, repo, 'infra', 'pingou',
ticketfolder=None)
self.assertEqual(output, ['Tag added: infra'])
@@ -317,7 +317,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests):
self.assertEqual(repo.tags, [])
# Adding a tag
- output = pagure.lib.update_tags(
+ output, comment = pagure.lib.update_tags(
self.session, repo, 'infra', 'pingou',
ticketfolder=None)
self.assertEqual(output, ['Tag added: infra'])
diff --git a/tests/test_pagure_flask_dump_load_ticket.py b/tests/test_pagure_flask_dump_load_ticket.py
index 3db09c5..1339a6b 100644
--- a/tests/test_pagure_flask_dump_load_ticket.py
+++ b/tests/test_pagure_flask_dump_load_ticket.py
@@ -123,7 +123,7 @@ class PagureFlaskDumpLoadTicketTests(tests.Modeltests):
self.session.commit()
self.assertEqual(msg, 'Comment added')
# Assign the ticket to someone
- msg = pagure.lib.add_issue_assignee(
+ msg, comment = pagure.lib.add_issue_assignee(
session=self.session,
issue=issue,
assignee='pingou',
diff --git a/tests/test_pagure_flask_ui_app.py b/tests/test_pagure_flask_ui_app.py
index 581c4a0..e3b3461 100644
--- a/tests/test_pagure_flask_ui_app.py
+++ b/tests/test_pagure_flask_ui_app.py
@@ -1145,7 +1145,7 @@ class PagureFlaskApptests(tests.Modeltests):
self.session.commit()
self.assertEqual(msg.title, 'Test issue #3')
- msg = pagure.lib.add_issue_assignee(
+ msg, comment = pagure.lib.add_issue_assignee(
session=self.session,
issue=msg,
assignee='pingou',
diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py
index f8c3c77..d992119 100644
--- a/tests/test_pagure_flask_ui_issues.py
+++ b/tests/test_pagure_flask_ui_issues.py
@@ -541,7 +541,7 @@ class PagureFlaskIssuestests(tests.Modeltests):
# Add a non-ascii milestone to the issue but project has no milestone
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
- message = pagure.lib.edit_issue(
+ message, comment = pagure.lib.edit_issue(
self.session,
issue=issue,
milestone=b'käpy'.decode('utf-8'),
@@ -682,9 +682,9 @@ class PagureFlaskIssuestests(tests.Modeltests):
''
in output.data)
self.assertIn(
- ' '
- '@pingou changed the status to Closed
'
- '
'.format(
+ '@pingou updated metadata
\nClosed '
+ 'as changed from ""
to Fixed'
+ .format(
app_url=pagure.APP.config['APP_URL'].rstrip('/')),
output.data)
@@ -1953,8 +1953,8 @@ class PagureFlaskIssuestests(tests.Modeltests):
user = tests.FakeUser(username='foo')
with tests.user_set(pagure.APP, user):
data = {
- 'csrf_token' : csrf_token,
- 'comment' : 'Nevermind figured it out',
+ 'csrf_token': csrf_token,
+ 'comment': 'Nevermind figured it out',
'status': 'Closed',
'close_status': 'Invalid'
}
@@ -1978,8 +1978,8 @@ class PagureFlaskIssuestests(tests.Modeltests):
)
data = {
- 'csrf_token' : csrf_token,
- 'comment' : 'Nevermind figured it out',
+ 'csrf_token': csrf_token,
+ 'comment': 'Nevermind figured it out',
'status': 'Closed',
'close_status': 'Invalid'
}
@@ -2007,14 +2007,14 @@ class PagureFlaskIssuestests(tests.Modeltests):
self.assertEqual(len(issue.comments), 2)
self.assertEqual(issue.status, 'Open')
- # Ticket #2 has one more comment and is closed
+ # Ticket #2 has one less comment and is closed
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
- self.assertEqual(len(issue.comments), 2)
+ self.assertEqual(len(issue.comments), 1)
self.assertEqual(issue.status, 'Closed')
@patch('pagure.lib.git.update_git')
@patch('pagure.lib.notify.send_email')
- def test_git_urls(self, p_send_email, p_ugt):
+ def test_git_urls(self, p_send_email, p_ugt):
""" Check that the url to the git repo for issues is present/absent when
it should.
"""
diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py
index 9bfb92e..aeee490 100644
--- a/tests/test_pagure_lib.py
+++ b/tests/test_pagure_lib.py
@@ -232,15 +232,15 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(repo.open_tickets_public, 2)
# Edit the issue
- msg = pagure.lib.edit_issue(
+ msg, comment = pagure.lib.edit_issue(
session=self.session,
issue=issue,
user='pingou',
ticketfolder=None)
self.session.commit()
- self.assertEqual(msg, None)
+ self.assertEqual(msg, None or '')
- msg = pagure.lib.edit_issue(
+ msg, comment = pagure.lib.edit_issue(
session=self.session,
issue=issue,
user='pingou',
@@ -250,9 +250,9 @@ class PagureLibtests(tests.Modeltests):
status='Open',
)
self.session.commit()
- self.assertEqual(msg, None)
+ self.assertEqual(msg, None or '')
- msg = pagure.lib.edit_issue(
+ msg, comment = pagure.lib.edit_issue(
session=self.session,
issue=issue,
user='pingou',
@@ -273,7 +273,7 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(repo.issues[1].close_status, 'Invalid')
# Edit the status: re-open the ticket
- msg = pagure.lib.edit_issue(
+ msg, comment = pagure.lib.edit_issue(
session=self.session,
issue=issue,
user='pingou',
@@ -293,7 +293,7 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(repo.open_tickets_public, 1)
# Edit the status: re-close the ticket
- msg = pagure.lib.edit_issue(
+ msg, comment = pagure.lib.edit_issue(
session=self.session,
issue=issue,
user='pingou',
@@ -685,7 +685,7 @@ class PagureLibtests(tests.Modeltests):
)
# Set the assignee by its email
- msg = pagure.lib.add_issue_assignee(
+ msg, comment = pagure.lib.add_issue_assignee(
session=self.session,
issue=issue,
assignee='foo@bar.com',
@@ -695,7 +695,7 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(msg, 'Issue assigned')
# Change the assignee to someone else by its username
- msg = pagure.lib.add_issue_assignee(
+ msg, comment = pagure.lib.add_issue_assignee(
session=self.session,
issue=issue,
assignee='pingou',
@@ -732,7 +732,7 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(issues[0].tags, [])
# Reset the assignee to no-one
- msg = pagure.lib.add_issue_assignee(
+ msg, comment = pagure.lib.add_issue_assignee(
session=self.session,
issue=issue,
assignee=None,
@@ -766,7 +766,7 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(len(issue.comments), 0)
# Set the assignee by its email
- msg = pagure.lib.add_issue_assignee(
+ msg, comment = pagure.lib.add_issue_assignee(
session=self.session,
issue=issue,
assignee='foo@bar.com',
@@ -1979,7 +1979,7 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(repo.tags_colored, [])
self.assertEqual(issue.tags_text, [])
- messages = pagure.lib.update_tags(
+ messages, comment = pagure.lib.update_tags(
self.session, issue, 'tag', 'pingou', ticketfolder=None)
self.assertEqual(messages, ['Tag added: tag'])
@@ -1992,7 +1992,7 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(issue.tags_text, ['tag'])
# Replace the tag by two others
- messages = pagure.lib.update_tags(
+ messages, comment = pagure.lib.update_tags(
self.session, issue, ['tag2', 'tag3'], 'pingou',
ticketfolder=None)
self.assertEqual(
@@ -2043,10 +2043,10 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(issue.depends_text, [])
self.assertEqual(issue.blocks_text, [])
- messages = pagure.lib.update_dependency_issue(
+ messages, comment = pagure.lib.update_dependency_issue(
self.session, repo, issue, '2', 'pingou', ticketfolder=None)
self.assertEqual(messages, ['Dependency added'])
- messages = pagure.lib.update_dependency_issue(
+ messages, comment = pagure.lib.update_dependency_issue(
self.session, repo, issue, ['3', '4', 5], 'pingou',
ticketfolder=None)
self.assertEqual(
@@ -2086,10 +2086,10 @@ class PagureLibtests(tests.Modeltests):
self.assertEqual(issue.depends_text, [])
self.assertEqual(issue.blocks_text, [])
- messages = pagure.lib.update_blocked_issue(
+ messages, comment = pagure.lib.update_blocked_issue(
self.session, repo, issue, '2', 'pingou', ticketfolder=None)
self.assertEqual(messages, ['Dependency added'])
- messages = pagure.lib.update_blocked_issue(
+ messages, comment = pagure.lib.update_blocked_issue(
self.session, repo, issue, ['3', '4', 5], 'pingou',
ticketfolder=None)
self.assertEqual(