From afe47547c8e0b3b5e9bafeffeb431175b30e345b Mon Sep 17 00:00:00 2001 From: Clement Verna Date: Jan 11 2018 09:06:04 +0000 Subject: Use issue tracker decorator in ui/repo.py This commit adds the decorators to ui/repo.py and also move out the decorator module out of the lib folder. --- diff --git a/pagure/decorators.py b/pagure/decorators.py new file mode 100644 index 0000000..dac2c8a --- /dev/null +++ b/pagure/decorators.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +""" + (c) 2018 - Copyright Red Hat Inc + + Authors: + Clement Verna + +""" +import flask +from pagure.flask_app import admin_session_timedout +from functools import wraps + + +def has_issue_tracker(function): + """ + Decorator that checks if the current pagure project has the + issue tracker active + If not active returns a 404 page + """ + @wraps(function) + def check_issue_tracker(*args, **kwargs): + repo = flask.g.repo + if not repo.settings.get('issue_tracker', True): + flask.abort(404, 'No issue tracker found for this project') + return function(*args, **kwargs) + + return check_issue_tracker + + +def is_repo_admin(function): + """ + Decorator that checks if the current user is the admin of + the project. + If not active returns a 403 page + """ + @wraps(function) + def check_repo_admin(*args, **kwargs): + if not flask.g.repo_admin: + flask.abort(403, 'You are not allowed to change the ' + 'settings for this project') + return function(*args, **kwargs) + return check_repo_admin + + +def is_admin_sess_timedout(function): + """ + Decorator that checks if the admin session has timeout. + If not true redirect to the login page + """ + @wraps(function) + def check_session_timeout(*args, **kwargs): + if admin_session_timedout(): + if flask.request.method == 'POST': + flask.flash('Action canceled, try it again', 'error') + return flask.redirect( + flask.url_for('auth_login', next=flask.request.url)) + return function(*args, **kwargs) + return check_session_timeout diff --git a/pagure/lib/decorators.py b/pagure/lib/decorators.py deleted file mode 100644 index 4ed0615..0000000 --- a/pagure/lib/decorators.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- - -""" - (c) 2017 - Copyright Red Hat Inc - - Authors: - Clement Verna - -""" -import flask -from pagure import admin_session_timedout -from functools import wraps - - -def has_issue_tracker(function): - """ - Decorator that checks if the current pagure project has the - issue tracker active - If not active returns a 404 page - """ - @wraps(function) - def check_issue_tracker(*args, **kwargs): - repo = flask.g.repo - if not repo.settings.get('issue_tracker', True): - flask.abort(404, 'No issue tracker found for this project') - return function(*args, **kwargs) - - return check_issue_tracker - - -def is_repo_admin(function): - """ - Decorator that checks if the current user is the admin of - the project. - If not active returns a 403 page - """ - @wraps(function) - def check_repo_admin(*args, **kwargs): - if not flask.g.repo_admin: - flask.abort(403, 'You are not allowed to change the \ - settings for this project') - return function(*args, **kwargs) - return check_repo_admin - - -def is_admin_sess_timedout(function): - """ - Decorator that checks if the admin session has timeout. - If not true redirect to the login page - """ - @wraps(function) - def check_session_timeout(*args, **kwargs): - if admin_session_timedout(): - if flask.request.method == 'POST': - flask.flash('Action canceled, try it again', 'error') - return flask.redirect( - flask.url_for('auth_login', next=flask.request.url)) - return function(*args, **kwargs) - return check_session_timeout diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index 6fc6e32..c53f87d 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -31,7 +31,7 @@ import pagure.doc_utils import pagure.exceptions import pagure.lib import pagure.lib.mimetype -from pagure.lib.decorators import has_issue_tracker, is_repo_admin +from pagure.decorators import has_issue_tracker, is_repo_admin import pagure.forms from pagure.config import config as pagure_config from pagure.ui import UI_NS @@ -386,7 +386,6 @@ def edit_tag(repo, tag, username=None, namespace=None): """ repo = flask.g.repo - tags = pagure.lib.get_tags_of_project(flask.g.session, repo) if not tags: flask.abort(404, 'Project has no tags to edit') diff --git a/pagure/ui/plugins.py b/pagure/ui/plugins.py index fc61ed1..bc0207a 100644 --- a/pagure/ui/plugins.py +++ b/pagure/ui/plugins.py @@ -23,7 +23,7 @@ import pagure.forms from pagure.exceptions import FileNotFoundException from pagure.ui import UI_NS from pagure.utils import login_required -from pagure.lib.decorators import is_repo_admin +from pagure.decorators import is_repo_admin _log = logging.getLogger(__name__) diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index 65be22c..625eec0 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -56,8 +56,10 @@ from pagure.utils import ( authenticated, login_required, ) -from pagure.lib.decorators import is_repo_admin, is_admin_sess_timedout - +from pagure.decorators import ( + is_repo_admin, + is_admin_sess_timedout, + has_issue_tracker) _log = logging.getLogger(__name__) @@ -1160,6 +1162,7 @@ def update_project(repo, username=None, namespace=None): '/fork////update/priorities', methods=['POST']) @login_required +@has_issue_tracker @is_admin_sess_timedout @is_repo_admin def update_priorities(repo, username=None, namespace=None): @@ -1168,9 +1171,6 @@ def update_priorities(repo, username=None, namespace=None): repo = flask.g.repo - if not repo.settings.get('issue_tracker', True): - flask.abort(404, 'No issue tracker found for this project') - form = pagure.forms.ConfirmationForm() error = False @@ -1252,6 +1252,7 @@ def update_priorities(repo, username=None, namespace=None): '/fork////update/default_priority', methods=['POST']) @login_required +@has_issue_tracker @is_admin_sess_timedout @is_repo_admin def default_priority(repo, username=None, namespace=None): @@ -1260,9 +1261,6 @@ def default_priority(repo, username=None, namespace=None): repo = flask.g.repo - if not repo.settings.get('issue_tracker', True): - flask.abort(404, 'No issue tracker found for this project') - form = pagure.forms.DefaultPriorityForm( priorities=repo.priorities.values()) @@ -1293,6 +1291,7 @@ def default_priority(repo, username=None, namespace=None): '/fork////update/milestones', methods=['POST']) @login_required +@has_issue_tracker @is_admin_sess_timedout @is_repo_admin def update_milestones(repo, username=None, namespace=None): @@ -1301,9 +1300,6 @@ def update_milestones(repo, username=None, namespace=None): repo = flask.g.repo - if not repo.settings.get('issue_tracker', True): - flask.abort(404, 'No issue tracker found for this project') - form = pagure.forms.ConfirmationForm() error = False @@ -1451,7 +1447,7 @@ def new_repo_hook_token(repo, username=None, namespace=None): if not pagure_config.get('WEBHOOK', False): flask.abort(404) - repo = flask.g.repo + repo = flask.g.repo form = pagure.forms.ConfirmationForm() if not form.validate_on_submit(): @@ -2332,6 +2328,7 @@ def update_public_notifications(repo, username=None, namespace=None): '/fork////update/close_status', methods=['POST']) @login_required +@has_issue_tracker @is_admin_sess_timedout @is_repo_admin def update_close_status(repo, username=None, namespace=None): @@ -2340,9 +2337,6 @@ def update_close_status(repo, username=None, namespace=None): repo = flask.g.repo - if not repo.settings.get('issue_tracker', True): - flask.abort(404, 'No issue tracker found for this project') - form = pagure.forms.ConfirmationForm() if form.validate_on_submit(): @@ -2371,6 +2365,7 @@ def update_close_status(repo, username=None, namespace=None): '/fork////update/quick_replies', methods=['POST']) @login_required +@has_issue_tracker @is_admin_sess_timedout @is_repo_admin def update_quick_replies(repo, username=None, namespace=None): @@ -2379,11 +2374,8 @@ def update_quick_replies(repo, username=None, namespace=None): repo = flask.g.repo - if (not repo.settings.get('issue_tracker', True) and - not repo.settings.get('pull_requests', True)): - flask.abort( - 404, - 'Issue tracker and pull requests are disabled for this project') + if (not repo.settings.get('pull_requests', True)): + flask.abort(404, 'Pull requests are disabled for this project') form = pagure.forms.ConfirmationForm() @@ -2413,6 +2405,7 @@ def update_quick_replies(repo, username=None, namespace=None): '/fork////update/custom_keys', methods=['POST']) @login_required +@has_issue_tracker @is_admin_sess_timedout @is_repo_admin def update_custom_keys(repo, username=None, namespace=None): @@ -2421,9 +2414,6 @@ def update_custom_keys(repo, username=None, namespace=None): repo = flask.g.repo - if not repo.settings.get('issue_tracker', True): - flask.abort(404, 'No issue tracker found for this project') - form = pagure.forms.ConfirmationForm() if form.validate_on_submit(): @@ -2465,6 +2455,7 @@ def update_custom_keys(repo, username=None, namespace=None): '/fork////delete/report', methods=['POST']) @login_required +@has_issue_tracker @is_admin_sess_timedout @is_repo_admin def delete_report(repo, username=None, namespace=None): @@ -2473,9 +2464,6 @@ def delete_report(repo, username=None, namespace=None): repo = flask.g.repo - if not repo.settings.get('issue_tracker', True): - flask.abort(404, 'No issue tracker found for this project') - form = pagure.forms.ConfirmationForm() if form.validate_on_submit(): diff --git a/tests/test_pagure_flask_api_ui_private_repo.py b/tests/test_pagure_flask_api_ui_private_repo.py index 339214c..af0c242 100644 --- a/tests/test_pagure_flask_api_ui_private_repo.py +++ b/tests/test_pagure_flask_api_ui_private_repo.py @@ -537,7 +537,7 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual( output.get_data(as_text=True).count('
'), 6) - @patch('pagure.ui.repo.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_private_settings_ui(self, ast): """ Test UI for private repo""" ast.return_value = False @@ -588,7 +588,7 @@ class PagurePrivateRepotest(tests.Modeltests): '', output.get_data(as_text=True)) - @patch('pagure.ui.repo.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_private_settings_ui_update_privacy_false(self, ast): """ Test UI for private repo""" ast.return_value = False @@ -644,7 +644,7 @@ class PagurePrivateRepotest(tests.Modeltests): repo = pagure.lib._get_project(self.session, 'test4') self.assertFalse(repo.private) - @patch('pagure.ui.repo.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_private_settings_ui_update_privacy_true(self, ast): """ Test UI for private repo""" ast.return_value = False diff --git a/tests/test_pagure_flask_ui_repo.py b/tests/test_pagure_flask_ui_repo.py index e5ae12e..f53aaa9 100644 --- a/tests/test_pagure_flask_ui_repo.py +++ b/tests/test_pagure_flask_ui_repo.py @@ -45,7 +45,7 @@ class PagureFlaskRepotests(tests.Modeltests): pagure.config.config['UPLOAD_FOLDER_PATH'] = os.path.join( self.path, 'releases') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_add_user_when_user_mngt_off(self, ast): """ Test the add_user endpoint when user management is turned off in the pagure instance """ @@ -97,7 +97,7 @@ class PagureFlaskRepotests(tests.Modeltests): pagure.config.config['ENABLE_USER_MNGT'] = True - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_add_deploykey(self, ast): """ Test the add_deploykey endpoint. """ ast.return_value = False @@ -199,7 +199,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertIn('Deploy key added', output.data) self.assertIn('PUSH ACCESS', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') @patch.dict('pagure.config.config', {'DEPLOY_KEY': False}) def test_add_deploykey_disabled(self, ast): """ Test the add_deploykey endpoint when it's disabled in the config. @@ -216,7 +216,7 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/adddeploykey') self.assertEqual(output.status_code, 404) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') @patch('pagure.lib.notify.log') def test_add_user(self, mock_log, ast): """ Test the add_user endpoint. """ @@ -312,7 +312,7 @@ class PagureFlaskRepotests(tests.Modeltests): mock_log.assert_called_with(ANY, topic='project.user.added', msg=ANY, redis=ANY) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_add_group_project_when_user_mngt_off(self, ast): """ Test the add_group_project endpoint when user management is turned off in the pagure instance""" @@ -372,7 +372,7 @@ class PagureFlaskRepotests(tests.Modeltests): pagure.config.config['ENABLE_USER_MNGT'] = True @patch.dict('pagure.config.config', {'ENABLE_GROUP_MNGT': False}) - @patch('pagure.ui.repo.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_add_group_project_grp_mngt_off(self, ast): """ Test the add_group_project endpoint when group management is turned off in the pagure instance""" @@ -397,7 +397,7 @@ class PagureFlaskRepotests(tests.Modeltests): output.data) self.assertIn(u'No group ralph found.', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_add_group_project(self, ast): """ Test the add_group_project endpoint. """ ast.return_value = False @@ -488,7 +488,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertIn( '\n Group added', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_remove_user_when_user_mngt_off(self, ast): """ Test the remove_user endpoint when user management is turned off in the pagure instance""" @@ -541,7 +541,7 @@ class PagureFlaskRepotests(tests.Modeltests): pagure.config.config['ENABLE_USER_MNGT'] = True - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_remove_deploykey(self, ast): """ Test the remove_deploykey endpoint. """ ast.return_value = False @@ -616,7 +616,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertIn('

Settings for test

', output.data) self.assertIn('Deploy key removed', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') @patch.dict('pagure.config.config', {'DEPLOY_KEY': False}) def test_remove_deploykey_disabled(self, ast): """ Test the remove_deploykey endpoint when it's disabled in the @@ -631,7 +631,7 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/dropdeploykey/1') self.assertEqual(output.status_code, 404) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') @patch('pagure.lib.notify.log') def test_remove_user(self, mock_log, ast): """ Test the remove_user endpoint. """ @@ -722,7 +722,7 @@ class PagureFlaskRepotests(tests.Modeltests): mock_log.assert_called_with(ANY, topic='project.user.removed', msg=ANY) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_remove_group_project_when_user_mngt_off(self, ast): """ Test the remove_group_project endpoint when user management is turned off in the pagure instance""" @@ -790,7 +790,7 @@ class PagureFlaskRepotests(tests.Modeltests): pagure.config.config['ENABLE_USER_MNGT'] = True - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_remove_group_project(self, ast): """ Test the remove_group_project endpoint. """ ast.return_value = False @@ -896,7 +896,7 @@ class PagureFlaskRepotests(tests.Modeltests): repo = pagure.lib.get_authorized_project(self.session, 'test') self.assertEqual(len(repo.groups), 0) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_update_project(self, ast): """ Test the update_project endpoint. """ ast.return_value = True @@ -992,7 +992,7 @@ class PagureFlaskRepotests(tests.Modeltests): '\n Project updated', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_update_project_update_tag(self, ast): """ Test the view_settings endpoint when updating the project's tags. @@ -1069,7 +1069,7 @@ class PagureFlaskRepotests(tests.Modeltests): '\n Project updated', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_view_settings(self, ast): """ Test the view_settings endpoint. """ ast.return_value = False @@ -1195,7 +1195,7 @@ class PagureFlaskRepotests(tests.Modeltests): 'name="issue_tracker" checked=""/>', output.data) @patch('pagure.lib.git.generate_gitolite_acls') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_view_settings_pr_only(self, ast, gen_acl): """ Test the view_settings endpoint when turning on PR only. """ ast.return_value = False @@ -1254,7 +1254,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(args[1].keys(), ['project']) self.assertEqual(args[1]['project'].fullname, 'test') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_fields_in_view_settings(self, ast): """ Test the default fields in view_settings endpoint. """ ast.return_value = False @@ -2757,7 +2757,7 @@ index 0000000..fb7093d @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch('pagure.lib.notify.send_email') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_delete_repo_when_turned_off(self, ast, send_email): """ Test the delete_repo endpoint when deletion of a repo is turned off in the pagure instance """ @@ -2975,7 +2975,7 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 404) @patch('pagure.lib.notify.send_email') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_delete_read_only_repo(self, ast, send_email): """ Test the delete_repo endpoint when the repo is read_only """ ast.return_value = False @@ -3025,7 +3025,7 @@ index 0000000..fb7093d output.data) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_delete_repo(self, ast): """ Test the delete_repo endpoint. """ ast.return_value = False @@ -3294,7 +3294,7 @@ index 0000000..fb7093d @patch.dict('pagure.config.config', {'TICKETS_FOLDER': None}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.lib.decorators.admin_session_timedout', MagicMock(return_value=False)) + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_repo_no_ticket(self): """ Test the delete_repo endpoint when tickets aren't enabled in this pagure instance. """ @@ -3333,7 +3333,7 @@ index 0000000..fb7093d output.data) @patch('pagure.lib.notify.send_email') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_delete_repo_with_users(self, ast, send_email): """ Test the delete_repo endpoint. """ ast.return_value = False @@ -3421,7 +3421,7 @@ index 0000000..fb7093d self.assertEqual(repo, None) @patch('pagure.lib.notify.send_email') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_delete_repo_with_group(self, ast, send_email): """ Test the delete_repo endpoint. """ ast.return_value = False @@ -3523,7 +3523,7 @@ index 0000000..fb7093d self.assertEqual(repo, None) @patch('pagure.lib.notify.send_email') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_delete_repo_with_coloredtag(self, ast, send_email): """ Test the delete_repo endpoint. """ ast.return_value = False @@ -3617,7 +3617,7 @@ index 0000000..fb7093d repo = pagure.lib.get_authorized_project(self.session, 'test2') self.assertEqual(repo, None) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_new_repo_hook_token(self, ast): """ Test the new_repo_hook_token endpoint. """ ast.return_value = False @@ -3677,7 +3677,7 @@ index 0000000..fb7093d self.assertNotEqual(repo.hook_token, 'aaabbbccc') @patch('pagure.lib.notify.send_email') - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') @patch('pagure.lib.git.update_git') def test_regenerate_git(self, upgit, ast, sendmail): """ Test the regenerate_git endpoint. """ @@ -3987,7 +3987,7 @@ index 0000000..fb7093d self.assertIn( '

No content found

', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_change_ref_head(self,ast): """ Test the change_ref_head endpoint. """ ast.return_value = True @@ -4187,7 +4187,7 @@ index 0000000..fb7093d 'been uploaded', output.data) self.assertIn('This project has not been tagged.', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_add_token_all_tokens(self, ast): """ Test the add_token endpoint. """ ast.return_value = False @@ -4206,7 +4206,7 @@ index 0000000..fb7093d ) @patch.dict('pagure.config.config', {'USER_ACLS': ['create_project']}) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_add_token_one_token(self, ast): """ Test the add_token endpoint. """ ast.return_value = False @@ -4224,7 +4224,7 @@ index 0000000..fb7093d 1 ) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_add_token(self, ast): """ Test the add_token endpoint. """ ast.return_value = False @@ -4298,7 +4298,7 @@ index 0000000..fb7093d 'Valid until: ', output.data) - @patch('pagure.lib.decorators.admin_session_timedout') + @patch('pagure.decorators.admin_session_timedout') def test_revoke_api_token(self, ast): """ Test the revoke_api_token endpoint. """ ast.return_value = False diff --git a/tests/test_pagure_flask_ui_repo_delete_project.py b/tests/test_pagure_flask_ui_repo_delete_project.py index 838da74..0301aab 100644 --- a/tests/test_pagure_flask_ui_repo_delete_project.py +++ b/tests/test_pagure_flask_ui_repo_delete_project.py @@ -70,7 +70,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_repo_when_turned_off(self): """ Test the delete_repo endpoint for a fork when only deleting main @@ -86,7 +86,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): self.assertEqual(len(projects), 4) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_button_present(self): """ Test that the delete button is present when deletions are @@ -105,7 +105,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_button_absent(self): """ Test that the delete button is absent when deletions are not @@ -125,7 +125,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch.dict('pagure.config.config', {'ENABLE_DEL_FORKS': True}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_fork_when_project_off_refreshing(self): """ Test the delete_repo endpoint for a fork when only deleting main @@ -156,7 +156,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch.dict('pagure.config.config', {'ENABLE_DEL_FORKS': True}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_fork_when_project_off(self): """ Test the delete_repo endpoint for a fork when only deleting main @@ -182,7 +182,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch.dict('pagure.config.config', {'ENABLE_DEL_FORKS': False}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_fork_when_fork_and_project_off(self): """ Test the delete_repo endpoint for a fork when deleting fork and @@ -201,7 +201,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch.dict('pagure.config.config', {'ENABLE_DEL_FORKS': False}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_fork_button_absent(self): """ Test that the delete button is absent when deletions are not @@ -223,7 +223,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch.dict('pagure.config.config', {'ENABLE_DEL_FORKS': True}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_fork_button_fork_del_allowed(self): """ Test that the delete button is present when deletions of projects @@ -253,7 +253,7 @@ class PagureFlaskDeleteRepotests(tests.Modeltests): @patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False}) @patch.dict('pagure.config.config', {'ENABLE_DEL_FORKS': True}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) - @patch('pagure.ui.repo.admin_session_timedout', + @patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False)) def test_delete_fork_button_fork_del_allowed_read_only(self): """ Test that the delete button is absent when deletions of projects