diff --git a/docs/README.rst b/docs/README.rst index 9c34704..d4547bc 100644 --- a/docs/README.rst +++ b/docs/README.rst @@ -101,6 +101,10 @@ Tags Resource (monday.tags) account. Optionally takes a list containing tag ids (if you know them). Returns IDs, names, and colors. +- ``create_or_get_tag(tag_name)`` - Creates new tags or retrieves their data + if they already exist. After creating a tag, it only appears in + the UI after being used at least once. + Boards Resource (monday.boards) ------------------------------- diff --git a/monday/query_joins.py b/monday/query_joins.py index d64a1fa..d506989 100644 --- a/monday/query_joins.py +++ b/monday/query_joins.py @@ -455,6 +455,18 @@ def get_tags_query(tags): return query +def create_or_get_tag_query(tag_name): + query = """mutation { + create_or_get_tag( + tag_name: "%s" + ) { + id + } + }""" % tag_name + + return query + + # BOARD RESOURCE QUERIES def get_board_items_query( board_id: Union[str, int], diff --git a/monday/resources/tags.py b/monday/resources/tags.py index 9a7af17..9b69617 100644 --- a/monday/resources/tags.py +++ b/monday/resources/tags.py @@ -1,4 +1,4 @@ -from monday.query_joins import get_tags_query +from monday.query_joins import create_or_get_tag_query, get_tags_query from monday.resources.base import BaseResource @@ -7,3 +7,6 @@ def fetch_tags(self, tag_ids=None): query = get_tags_query(tag_ids) return self.client.execute(query) + def create_or_get_tag(self, tag_name): + query = create_or_get_tag_query(tag_name) + return self.client.execute(query) diff --git a/monday/tests/test_tag_resource.py b/monday/tests/test_tag_resource.py index de03715..169b65b 100644 --- a/monday/tests/test_tag_resource.py +++ b/monday/tests/test_tag_resource.py @@ -1,19 +1,37 @@ from monday.tests.test_case_resource import BaseTestCase -from monday.query_joins import get_tags_query +from monday.query_joins import create_or_get_tag_query, get_tags_query class TagTestCase(BaseTestCase): def setUp(self): super(TagTestCase, self).setUp() + self.tag_name = "My tag" def test_get_tags_query(self): query = get_tags_query(self.tags) self.assertIn(str(self.tags), query) - self.assertEqual('''query + self.assertEqual( + """query { tags (ids: [123, 456, 789]) { name, color, id } - }'''.replace(" ", ""), query.replace(" ", "")) + }""".replace(" ", ""), + query.replace(" ", ""), + ) + + def test_create_or_get_tag_query(self): + query = create_or_get_tag_query(self.tag_name) + self.assertIn(self.tag_name, query) + self.assertEqual( + """mutation { + create_or_get_tag( + tag_name: "My tag" + ) { + id + } + }""", + query, + )