From a2860f4ce4ff3a33525bb33c682678d775b78bcb Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 05 2016 17:08:54 +0000 Subject: [PATCH 1/5] Introduce an empty priority This will fix the current behavior where when you add priorities and suddenly editing the metadata of a ticket changes the priority as well since there is no option for empty priority --- diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index f91cf6c..cd2b1ef 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -1017,6 +1017,7 @@ def update_priorities(repo, username=None): priorities = {} for cnt in range(len(weights)): priorities[weights[cnt]] = titles[cnt] + priorities[''] = '' try: repo.priorities = priorities SESSION.add(repo) From 38d72a53a41b4cfaf6b3ae6f3cd888fe366eeedf Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 05 2016 17:08:54 +0000 Subject: [PATCH 2/5] Fix the ordering of the priorities by weight --- diff --git a/pagure/forms.py b/pagure/forms.py index 43132c4..007cc35 100644 --- a/pagure/forms.py +++ b/pagure/forms.py @@ -207,10 +207,12 @@ class UpdateIssueForm(wtf.Form): (status, status) for status in kwargs['status'] ] + self.priority.choices = [] if 'priorities' in kwargs: - self.priority.choices = [ - (key, val) for key, val in kwargs['priorities'].iteritems() - ] + for key in sorted(kwargs['priorities']): + self.priority.choices.append( + (key, kwargs['priorities'][key]) + ) class AddPullRequestCommentForm(wtf.Form): From e904e1658a8e3054648b607a1c61e532e4bc38d1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 05 2016 17:08:54 +0000 Subject: [PATCH 3/5] Fix the increment_largest_priority filter to work with the empty priority option --- diff --git a/pagure/ui/filters.py b/pagure/ui/filters.py index e3d7881..28357bd 100644 --- a/pagure/ui/filters.py +++ b/pagure/ui/filters.py @@ -400,11 +400,12 @@ def return_md5(text): m.update(text) return pagure.lib.clean_input(m.hexdigest()) + @APP.template_filter('increment_largest_priority') def text_wraps(dictionary): """ Template filter to return the largest priority +1 """ if dictionary: - return int(max(dictionary.keys(), key=int)) + 1 + return max([int(k) for k in dictionary if k]) + 1 else: return 1 From c63cca86d695f9393440f2ee7b5ae19ceb4e9555 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 05 2016 17:08:54 +0000 Subject: [PATCH 4/5] Adjust unit-tests for the empty priority --- diff --git a/tests/test_pagure_flask_ui_priorities.py b/tests/test_pagure_flask_ui_priorities.py index 963bafa..2e3de95 100644 --- a/tests/test_pagure_flask_ui_priorities.py +++ b/tests/test_pagure_flask_ui_priorities.py @@ -202,7 +202,7 @@ class PagureFlaskPrioritiestests(tests.Modeltests): self.assertIn('

Settings for test

', output.data) # Check the result of the action -- Priority recorded repo = pagure.lib.get_project(self.session, 'test') - self.assertEqual(repo.priorities, {u'1': u'High'}) + self.assertEqual(repo.priorities, {u'': u'', u'1': u'High'}) data = { 'priority_weigth': [1, 2, 3], @@ -220,7 +220,7 @@ class PagureFlaskPrioritiestests(tests.Modeltests): repo = pagure.lib.get_project(self.session, 'test') self.assertEqual( repo.priorities, - {u'1': u'High', u'2': u'Normal', u'3': u'Low'} + {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'} ) # Check error - less weigths than titles @@ -243,7 +243,7 @@ class PagureFlaskPrioritiestests(tests.Modeltests): repo = pagure.lib.get_project(self.session, 'test') self.assertEqual( repo.priorities, - {u'1': u'High', u'2': u'Normal', u'3': u'Low'} + {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'} ) # Check error - weigths must be integer @@ -267,7 +267,7 @@ class PagureFlaskPrioritiestests(tests.Modeltests): repo = pagure.lib.get_project(self.session, 'test') self.assertEqual( repo.priorities, - {u'1': u'High', u'2': u'Normal', u'3': u'Low'} + {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'} ) # Check error - Twice the same priority weigth @@ -291,7 +291,7 @@ class PagureFlaskPrioritiestests(tests.Modeltests): repo = pagure.lib.get_project(self.session, 'test') self.assertEqual( repo.priorities, - {u'1': u'High', u'2': u'Normal', u'3': u'Low'} + {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'} ) # Check error - Twice the same priority title @@ -315,7 +315,7 @@ class PagureFlaskPrioritiestests(tests.Modeltests): repo = pagure.lib.get_project(self.session, 'test') self.assertEqual( repo.priorities, - {u'1': u'High', u'2': u'Normal', u'3': u'Low'} + {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'} ) # Check the behavior if the project disabled the issue tracker From 6982a6b9475661e1e2fa1eb2d3d18201f2d52901 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 05 2016 17:15:33 +0000 Subject: [PATCH 5/5] Let the drop-down menu for the priorities select the current one --- diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index 37eb567..e70d8c2 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -580,6 +580,7 @@ def view_issue(repo, issueid, username=None): form = pagure.forms.UpdateIssueForm( status=status, priorities=repo.priorities) form.status.data = issue.status + form.priority.data = str(issue.priority) tag_list = pagure.lib.get_tags_of_project(SESSION, repo) return flask.render_template( 'issue.html',