From 2937b9741b5c70dff041fa9d8c7323bff38fbbc6 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 17 2017 15:00:41 +0000 Subject: [PATCH 1/4] This should fix removing the tag of a project --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index cba4f41..fb8106d 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -698,7 +698,11 @@ def remove_tags_obj(session, obj, tags, ticketfolder, user): tags = [tags] removed_tags = [] - for objtag in obj.tags_issues_colored: + if obj.isa == 'project': + objtags = obj.tags + else: + objtags = obj.tags_issues_colored + for objtag in objtags: if objtag.tag.tag in tags: tag = objtag.tag.tag removed_tags.append(tag) From 389bad51ff678c20ccbf6073521f8a61671a4eb1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 17 2017 15:00:41 +0000 Subject: [PATCH 2/4] Use two different block section for project and issues --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index fb8106d..65c61bf 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -699,14 +699,17 @@ def remove_tags_obj(session, obj, tags, ticketfolder, user): removed_tags = [] if obj.isa == 'project': - objtags = obj.tags + for objtag in obj.tags: + if objtag.tag in tags: + tag = objtag.tag + removed_tags.append(tag) + session.delete(objtag) else: - objtags = obj.tags_issues_colored - for objtag in objtags: - if objtag.tag.tag in tags: - tag = objtag.tag.tag - removed_tags.append(tag) - session.delete(objtag) + for objtag in obj.tags_issues_colored: + if objtag.tag.tag in tags: + tag = objtag.tag.tag + removed_tags.append(tag) + session.delete(objtag) if isinstance(obj, model.Issue): pagure.lib.git.update_git( From 4a1b725730b725eb189d9961705e5b19678936c6 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 17 2017 15:00:41 +0000 Subject: [PATCH 3/4] Add unit-tests for adding/removing tags of a project --- diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index e3d1114..663c9a3 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -447,6 +447,43 @@ class PagureLibtests(tests.Modeltests): @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') + def test_remove_tags_obj_from_project(self, p_send_email, p_ugt): + """ Test the remove_tags_obj of pagure.lib from a project. """ + p_send_email.return_value = True + p_ugt.return_value = True + + tests.create_projects(self.session) + + # Add a tag to the project + repo = pagure.lib.get_project(self.session, 'test') + msg = pagure.lib.add_tag_obj( + self.session, repo, + tags=['pagure', 'test'], + user='pingou', + ticketfolder=None) + self.assertEqual(msg, 'Tag added: pagure, test') + self.session.commit() + + # Check the tags + repo = pagure.lib.get_project(self.session, 'test') + self.assertEqual(repo.tags_text, ['pagure', 'test']) + + # Remote one of the the tag + msgs = pagure.lib.remove_tags_obj( + session=self.session, + obj=repo, + tags='test', + user='pingou', + ticketfolder=None) + self.assertEqual(msgs, 'Removed tag: test') + self.session.commit() + + # Check the tags + repo = pagure.lib.get_project(self.session, 'test') + self.assertEqual(repo.tags_text, ['pagure']) + + @patch('pagure.lib.git.update_git') + @patch('pagure.lib.notify.send_email') def test_edit_issue_tags(self, p_send_email, p_ugt): """ Test the edit_issue_tags of pagure.lib. """ p_send_email.return_value = True From 4719e4bdb2327dff76038341b9877cddf5209bec Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 17 2017 15:00:41 +0000 Subject: [PATCH 4/4] Fix typo in the doc of the tests --- diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 663c9a3..b73ad40 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -468,7 +468,7 @@ class PagureLibtests(tests.Modeltests): repo = pagure.lib.get_project(self.session, 'test') self.assertEqual(repo.tags_text, ['pagure', 'test']) - # Remote one of the the tag + # Remove one of the the tag msgs = pagure.lib.remove_tags_obj( session=self.session, obj=repo,