From 25b77b9df34e7c171a325404b0d50b25c047fbf1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 21 2018 09:57:59 +0000 Subject: [PATCH 1/2] When editing tags, redirect the user to the same section of the settings Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index 0e3d29a..aecbee6 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -606,7 +606,7 @@ def update_tags(repo, username=None, namespace=None): return flask.redirect(flask.url_for( 'ui_ns.view_settings', username=username, repo=repo.name, - namespace=namespace)) + namespace=namespace) + '#projecttags-tab') @UI_NS.route('//droptag/', methods=['POST']) From fc14654f17c0270bbb7182c0f8098cf03e93ed57 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 21 2018 09:57:59 +0000 Subject: [PATCH 2/2] Properly inform the user if they are introducing a duplicated tag Fixes https://pagure.io/pagure/issue/3251 Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index aecbee6..e4ff8cd 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -590,7 +590,11 @@ def update_tags(repo, username=None, namespace=None): flask.flash(error_message, 'error') if not error: + known_tags = [tag.tag for tag in repo.tags_colored] for idx, tag in enumerate(tags): + if tag in known_tags: + flask.flash('Duplicated tag: %s' % tag, 'error') + break try: pagure.lib.new_tag( flask.g.session, diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py index 02018a8..658e689 100644 --- a/tests/test_pagure_flask_ui_issues.py +++ b/tests/test_pagure_flask_ui_issues.py @@ -3523,7 +3523,7 @@ class PagureFlaskIssuestests(tests.Modeltests): # Valid query data = { - 'tag': ['red', 'green'], + 'tag': ['red1', 'green'], 'tag_description': ['lorem ipsum', 'sample description'], 'tag_color': ['#ff0000', '#00ff00'], 'csrf_token': csrf_token, @@ -3544,7 +3544,7 @@ class PagureFlaskIssuestests(tests.Modeltests): output_text) self.assertIn( 'red\n' + 'style="background-color:#ff0000">red1\n' '  ' 'lorem ipsum', output_text) self.assertIn( @@ -3581,11 +3581,44 @@ class PagureFlaskIssuestests(tests.Modeltests): '', output_text) + # Invalid query - Tag already known + data = { + 'tag': ['red2'], + 'tag_color': ['#000'], + 'tag_description': [''], + 'csrf_token': csrf_token, + } + output = self.app.post( + '/test/update/tags', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Settings - test - Pagure', output_text) + self.assertIn( + 'red2\n' + '  ' + '', output_text) + self.assertIn( + '', + output_text) + self.assertIn( + 'red3\n' + '  ' + '', output_text) + self.assertIn( + '', + output_text) + self.assertIn( + '\n Duplicated tag: red2', + output_text) + # After update, list tags tags = pagure.lib.get_tags_of_project(self.session, repo) self.assertEqual( sorted([tag.tag for tag in tags]), - ['blue', 'green', 'red', 'red2', 'red3']) + ['blue', 'green', 'red', 'red1', 'red2', 'red3']) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email')