diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index e7751f5..a127c3c 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -1274,6 +1274,11 @@ def update_priorities(repo, username=None, namespace=None): priorities[''] = '' try: repo.priorities = priorities + if repo.default_priority not in priorities.values(): + flask.flash( + 'Default priority reset as it is no longer one of ' + 'set priorities.') + repo.default_priority = None SESSION.add(repo) SESSION.commit() flask.flash('Priorities updated') diff --git a/tests/test_pagure_flask_ui_priorities.py b/tests/test_pagure_flask_ui_priorities.py index 493c8f0..e47e8f7 100644 --- a/tests/test_pagure_flask_ui_priorities.py +++ b/tests/test_pagure_flask_ui_priorities.py @@ -578,6 +578,100 @@ class PagureFlaskPrioritiestests(tests.Modeltests): '/test/update/default_priority', data=data) self.assertEqual(output.status_code, 403) + @patch('pagure.lib.git.update_git', MagicMock(return_value=True)) + @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) + def test_default_priority_reset_when_updating_priorities(self): + """ Test updating the default priority of a repo when updating the + priorities. + """ + tests.create_projects(self.session) + tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True) + + # Check the default priorities + repo = pagure.get_authorized_project(self.session, 'test') + self.assertEqual(repo.priorities, {}) + self.assertEqual(repo.default_priority, None) + + user = tests.FakeUser() + user.username = 'pingou' + with tests.user_set(pagure.APP, user): + + csrf_token = self.get_csrf() + + # Set some priorities + data = { + 'priority_weigth': [1, 2, 3], + 'priority_title': ['High', 'Normal', 'Low'], + 'csrf_token': csrf_token, + } + output = self.app.post( + '/test/update/priorities', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + # Check the redirect + self.assertIn( + 'Settings - test - Pagure', output.data) + self.assertIn('

Settings for test

', output.data) + # Check the ordering + self.assertTrue( + output.data.find('High') < output.data.find('Normal')) + self.assertTrue( + output.data.find('Normal') < output.data.find('Low')) + # Check the result of the action -- Priority recorded + repo = pagure.get_authorized_project(self.session, 'test') + self.assertEqual( + repo.priorities, + {u'': u'', u'1': u'High', u'2': u'Normal', u'3': u'Low'} + ) + + # Try setting the default priority + data = {'priority': 'High', 'csrf_token': csrf_token} + output = self.app.post( + '/test/update/default_priority', data=data, + follow_redirects=True) + self.assertEqual(output.status_code, 200) + # Check the redirect + self.assertIn( + 'Settings - test - Pagure', output.data) + self.assertIn('

Settings for test

', output.data) + self.assertIn( + '\n Default priority set ' + 'to High', output.data) + # Check the result of the action -- default_priority no change + repo = pagure.get_authorized_project(self.session, 'test') + self.assertEqual(repo.default_priority, 'High') + + # Remove the Hight priority + data = { + 'priority_weigth': [1, 2], + 'priority_title': ['Normal', 'Low'], + 'csrf_token': csrf_token, + } + output = self.app.post( + '/test/update/priorities', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + # Check the redirect + self.assertIn( + 'Settings - test - Pagure', output.data) + self.assertIn('

Settings for test

', output.data) + self.assertIn( + '\n Priorities updated', + output.data) + self.assertIn( + '\n Default priority reset ' + 'as it is no longer one of set priorities.', + output.data) + # Check the ordering + self.assertTrue( + output.data.find('Normal') < output.data.find('Low')) + # Check the result of the action -- Priority recorded + repo = pagure.get_authorized_project(self.session, 'test') + self.assertEqual( + repo.priorities, + {u'': u'', u'1': u'Normal', u'2': u'Low'} + ) + # Default priority is now None + self.assertIsNone(repo.default_priority) + if __name__ == '__main__': unittest.main(verbosity=2)