Skip to content

Commit d7f8676

Browse files
authored
Added new method: append value to a field. Updated docs. (#1379)
* Added new method: append value to a field. Updated docs. * Fix docs
1 parent 3f33de8 commit d7f8676

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

atlassian/jira.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,6 +1336,33 @@ def bulk_update_issue_field(self, key_list, fields="*all"):
13361336
return False
13371337
return True
13381338

1339+
def issue_field_value_append(self, issue_id_or_key, field, value, notify_users=True):
1340+
"""
1341+
Add value to a multiple value field
1342+
1343+
:param issue_id_or_key: str Issue id or issue key
1344+
:param field: str Field key ("customfield_10000")
1345+
:param value: str A value which need to append (use python value types)
1346+
:param notify_users: bool OPTIONAL if True, use project's default notification scheme to notify users via email.
1347+
if False, do not send any email notifications. (only works with admin privilege)
1348+
"""
1349+
base_url = self.resource_url("issue")
1350+
params = {"notifyUsers": True if notify_users else False}
1351+
current_value = self.issue_field_value(key=issue_id_or_key, field=field)
1352+
1353+
if current_value:
1354+
new_value = current_value + [value]
1355+
else:
1356+
new_value = [value]
1357+
1358+
fields = {'{}'.format(field): new_value}
1359+
1360+
return self.put(
1361+
"{base_url}/{key}".format(base_url=base_url, key=issue_id_or_key),
1362+
data={"fields": fields},
1363+
params=params,
1364+
)
1365+
13391366
def get_issue_labels(self, issue_key):
13401367
"""
13411368
Get issue labels.

docs/jira.rst

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ Manage projects
211211
212212
# Returns a list of active users who have browse permission for a project that matches the search string for username.
213213
# Using " " string (space) for username gives All the active users who have browse permission for a project
214-
jira.get_users_with_browse_permission_to_a_project(self, username, issue_key=None, project_key=None, start=0, limit=100)
214+
jira.get_users_with_browse_permission_to_a_project(username, issue_key=None, project_key=None, start=0, limit=100)
215215
216216
Manage issues
217217
-------------
@@ -228,8 +228,13 @@ Manage issues
228228
fields = {'summary': 'New summary'}
229229
jira.update_issue_field(key, fields, notify_users=True)
230230
231+
# Append value to issue field
232+
field = 'customfield_10000'
233+
value = {'name': 'username'}
234+
jira.issue_field_value_append(issue_id_or_key, field, value, notify_users=True)
235+
231236
# Get existing custom fields or find by filter
232-
jira.get_custom_fields(self, search=None, start=1, limit=50):
237+
jira.get_custom_fields(search=None, start=1, limit=50):
233238
234239
# Check issue exists
235240
jira.issue_exists(issue_key)
@@ -286,7 +291,7 @@ Manage issues
286291
jira.issue_createmeta_issuetypes(project, start=None, limit=None)
287292
288293
# Get create field metadata for a project and issue type id
289-
jira.issue_createmeta_fieldtypes(self, project, issue_type_id, start=None, limit=None)
294+
jira.issue_createmeta_fieldtypes(project, issue_type_id, start=None, limit=None)
290295
291296
# Create Issue Link
292297
data = {
@@ -467,7 +472,7 @@ Manage Sprints
467472
jira.get_all_issues_for_sprint_in_board(board_id, state=None, start=0, limit=50)
468473
469474
# Get all versions for sprint in board
470-
jira.get_all_versions_from_board(self, board_id, released="true", start=0, limit=50)
475+
jira.get_all_versions_from_board(board_id, released="true", start=0, limit=50)
471476
472477
# Create sprint
473478
jira.jira.create_sprint(sprint_name, origin_board_id, start_datetime, end_datetime, goal)

0 commit comments

Comments
 (0)