Skip to content

Commit 3046ac5

Browse files
committed
Add issue.remove_field_value()
Complements the existing add_field_value()
1 parent eb0ec90 commit 3046ac5

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

jira/resources.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,17 @@ def add_field_value(self, field: str, value: str):
882882
"""
883883
super().update(fields={"update": {field: [{"add": value}]}})
884884

885+
def remove_field_value(self, field: str, value: str):
886+
"""Remove a value from a field that supports multiple values, without resetting the existing values.
887+
888+
This should work with: labels, multiple checkbox lists, multiple select
889+
890+
Args:
891+
field (str): The field name
892+
value (str): The field's value
893+
"""
894+
super().update(fields={"update": {field: [{"remove": value}]}})
895+
885896
def delete(self, deleteSubtasks=False):
886897
"""Delete this issue from the server.
887898

tests/resources/test_issue.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,29 @@ def test_update_with_fielddict(self):
323323
self.assertEqual(issue.fields.priority.name, "High")
324324
issue.delete()
325325

326+
def test_add_remove_field_values(self):
327+
issue = self.jira.create_issue(
328+
summary="Test issue for updating labels",
329+
project=self.project_b,
330+
description="Label testing",
331+
issuetype=self.test_manager.CI_JIRA_ISSUE,
332+
)
333+
334+
labelarray = ["testLabel1"]
335+
fields = {"labels": labelarray}
336+
337+
issue.update(fields=fields)
338+
self.assertEqual(issue.fields.labels, ["testLabel1"])
339+
340+
issue.add_field_value("labels", "testLabel2")
341+
self.assertEqual(issue.fields.labels, ["testLabel1", "testLabel2"])
342+
343+
issue.remove_field_value("labels", "testLabel1")
344+
self.assertEqual(issue.fields.labels, ["testLabel2"])
345+
346+
issue.delete()
347+
348+
326349
def test_update_with_label(self):
327350
issue = self.jira.create_issue(
328351
summary="Test issue for updating labels",

0 commit comments

Comments
 (0)