diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 6dfb438..d672be1 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -788,6 +788,13 @@ def update_request_from_git( user=user.username, notify=False, ) + + # Add/update tags: + tags = json_data.get("tags") or [] + if tags: + user = get_user_from_json(session, json_data) + pagure.lib.query.add_tag_obj(session, request, tags, user.username) + session.commit() diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 060c7b7..7dd8b33 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -2144,6 +2144,7 @@ class PullRequest(BASE): "initial_comment": self.initial_comment, "cached_merge_status": self.merge_status or "unknown", "threshold_reached": self.threshold_reached, + "tags": self.tags_text, } comments = [] diff --git a/tests/test_pagure_flask_api_fork.py b/tests/test_pagure_flask_api_fork.py index 4aceb60..6e9592a 100644 --- a/tests/test_pagure_flask_api_fork.py +++ b/tests/test_pagure_flask_api_fork.py @@ -472,6 +472,7 @@ class PagureFlaskApiForktests(tests.Modeltests): } }, "status": "Open", + "tags": [], "threshold_reached": None, "title": "test pull-request", "uid": "1431414800", @@ -691,6 +692,7 @@ class PagureFlaskApiForktests(tests.Modeltests): } }, "status": "Open", + "tags": [], "threshold_reached": None, "title": "test pull-request", "uid": "1431414800", @@ -852,6 +854,7 @@ class PagureFlaskApiForktests(tests.Modeltests): } }, "status": "Open", + "tags": [], "threshold_reached": None, "title": "test pull-request", "uid": uid, @@ -2746,6 +2749,7 @@ class PagureFlaskApiForktests(tests.Modeltests): 'url_path': 'test', 'user': {'fullname': 'PY C', 'name': 'pingou'}}, 'status': 'Open', + "tags": [], 'threshold_reached': None, 'title': 'Test PR', 'uid': 'e8b68df8711648deac67c3afed15a798', @@ -2859,6 +2863,7 @@ class PagureFlaskApiForktests(tests.Modeltests): 'url_path': 'test', 'user': {'fullname': 'PY C', 'name': 'pingou'}}, 'status': 'Open', + "tags": [], 'threshold_reached': None, 'title': 'Test PR', 'uid': 'e8b68df8711648deac67c3afed15a798', @@ -3183,6 +3188,7 @@ class PagureApiThresholdReachedTests(tests.Modeltests): 'url_path': 'test', 'user': {'fullname': 'PY C', 'name': 'pingou'}}, 'status': 'Open', + "tags": [], 'threshold_reached': None, 'title': 'Test PR', 'uid': 'e8b68df8711648deac67c3afed15a798', diff --git a/tests/test_pagure_flask_api_ui_private_repo.py b/tests/test_pagure_flask_api_ui_private_repo.py index aa8933b..166f678 100644 --- a/tests/test_pagure_flask_api_ui_private_repo.py +++ b/tests/test_pagure_flask_api_ui_private_repo.py @@ -1599,6 +1599,7 @@ class PagurePrivateRepotest(tests.Modeltests): } }, "status": "Open", + "tags": [], "threshold_reached": None, "title": "test pull-request", "uid": "1431414800", @@ -1729,6 +1730,7 @@ class PagurePrivateRepotest(tests.Modeltests): } }, "status": "Open", + "tags": [], "threshold_reached": None, "title": "test pull-request", "uid": "1431414800", diff --git a/tests/test_pagure_lib_git.py b/tests/test_pagure_lib_git.py index e740c59..efcb79a 100644 --- a/tests/test_pagure_lib_git.py +++ b/tests/test_pagure_lib_git.py @@ -1696,7 +1696,7 @@ new file mode 100644 index 0000000..60f7480 --- /dev/null +++ b/456 -@@ -0,0 +1,146 @@ +@@ -0,0 +1,147 @@ +{ + "assignee": null, + "branch": "master", @@ -1829,6 +1829,7 @@ index 0000000..60f7480 + } + }, + "status": "Open", ++ "tags": [], + "threshold_reached": null, + "title": "test PR", + "uid": "foobar", @@ -2573,6 +2574,124 @@ index 0000000..60f7480 'test request to namespaced repo' ) + def test_update_request_from_git(self): + """ Test the update_request_from_git method from pagure.lib.git. """ + tests.create_projects(self.session) + tests.create_projects_git(os.path.join(self.path, 'repos')) + + repo = pagure.lib.query._get_project(self.session, 'test') + namespaced_repo = pagure.lib.query._get_project(self.session, 'test3', namespace='somenamespace') + + # Before + self.assertEqual(len(repo.requests), 0) + self.assertEqual(repo.requests, []) + self.assertEqual(len(namespaced_repo.requests), 0) + self.assertEqual(namespaced_repo.requests, []) + + data = { + "status": True, + "uid": "d4182a2ac2d541d884742d3037c26e57", + "project": { + "parent": None, + "name": "test", + "custom_keys": [], + "date_created": "1426500194", + "tags": [], + "user": { + "fullname": "Pierre-YvesChibon", + "name": "pingou", + "default_email": "pingou@fedoraproject.org", + "emails": [ + "pingou@fedoraproject.org" + ] + }, + "settings": { + "issue_tracker": True, + "project_documentation": True, + "pull_requests": True, + }, + "id": 1, + "description": "test project" + }, + "commit_stop": "eface8e13bc2a08a3fb22af9a72a8c90e36b8b89", + "user": { + "fullname": "Pierre-YvesChibon", + "name": "pingou", + "default_email": "pingou@fedoraproject.org", + "emails": ["pingou@fedoraproject.org"] + }, + "id": 4, + "comments": [], + "branch_from": "master", + "title": "test request #2", + "commit_start": "788efeaaf86bde8618f594a8181abb402e1dd904", + "repo_from": { + "parent": { + "parent": None, + "name": "test", + "custom_keys": [], + "date_created": "1426500194", + "tags": [], + "user": { + "fullname": "Pierre-YvesChibon", + "name": "pingou", + "default_email": "pingou@fedoraproject.org", + "emails": [ + "pingou@fedoraproject.org" + ] + }, + "settings": { + "issue_tracker": True, + "project_documentation": True, + "pull_requests": True, + }, + "id": 1, + "description": "test project" + }, + "settings": { + "issue_tracker": True, + "project_documentation": True, + "pull_requests": True, + }, + "name": "test", + "date_created": "1426843440", + "custom_keys": [], + "tags": [], + "user": { + "fullname": "fake user", + "name": "fake", + "default_email": "fake@fedoraproject.org", + "emails": [ + "fake@fedoraproject.org" + ] + }, + "project_docs": True, + "id": 6, + "description": "test project" + }, + "branch": "master", + "date_created": "1426843745", + "tags": ["WIP", "core"], + } + + pagure.lib.git.update_request_from_git( + self.session, + reponame='test', + namespace=None, + username=None, + request_uid='d4182a2ac2d541d884742d3037c26e57', + json_data=data, + ) + self.session.commit() + + # After insertion + self.assertEqual(repo.requests[0].id, 4) + self.assertEqual( + repo.requests[0].uid, 'd4182a2ac2d541d884742d3037c26e57') + self.assertEqual(repo.requests[0].title, 'test request #2') + self.assertEqual(len(repo.requests[0].comments), 0) + self.assertEqual(repo.requests[0].tags_text, ['WIP', 'core']) + def test_read_git_lines(self): """ Test the read_git_lines method of pagure.lib.git. """ self.test_update_git()