From 310593b20d0b0d65bac6b20fb28837c88d8f3d11 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Dec 18 2017 16:33:19 +0000 Subject: [PATCH 1/3] Add an alembic revision dropping the pull_request_check constraints That constraints is making sure the pull-request is either coming from a fork or a remote git repository. Except that when we delete the fork, we still want to keep the pull-request records, so we can no longer enforce that constraint. Signed-off-by: Pierre-Yves Chibon --- diff --git a/alembic/versions/46df6466b8fa_drop_pull_request_check.py b/alembic/versions/46df6466b8fa_drop_pull_request_check.py new file mode 100644 index 0000000..95320dd --- /dev/null +++ b/alembic/versions/46df6466b8fa_drop_pull_request_check.py @@ -0,0 +1,36 @@ +"""drop pull_request_check + +Revision ID: 46df6466b8fa +Revises: 61ac23e35f86 +Create Date: 2017-12-18 12:37:44.833468 + +""" + +# revision identifiers, used by Alembic. +revision = '46df6466b8fa' +down_revision = '61ac23e35f86' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + """ Drop the pull_request_check constraint. """ + connection = op.get_bind() + connection.begin_nested() + try: + op.drop_constraint("pull_requests_check", "pull_requests") + except sa.exc.ProgrammingError: + connection.connection.connection.rollback() + print( + 'Ignoring the pull_requests_check ' + 'constraint if it does not exist') + + +def downgrade(): + """ Bring back the pull_request_check constraint. """ + op.create_check_constraint( + "pull_requests_check", + "pull_requests", + 'NOT(project_id_from IS NULL AND remote_git IS NULL)' + ) From 5f2c5123bbcc965ca058e2cd24a23f2a343aafa0 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Dec 18 2017 16:33:19 +0000 Subject: [PATCH 2/3] Flake8 fixes Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/lib/tasks.py b/pagure/lib/tasks.py index 6a170cd..3488453 100644 --- a/pagure/lib/tasks.py +++ b/pagure/lib/tasks.py @@ -89,7 +89,8 @@ def gc_clean(): @conn.task(queue=APP.config.get('GITOLITE_CELERY_QUEUE', None), bind=True) @set_status -def generate_gitolite_acls(self, namespace=None, name=None, user=None, group=None): +def generate_gitolite_acls( + self, namespace=None, name=None, user=None, group=None): """ Generate the gitolite configuration file either entirely or for a specific project. @@ -139,7 +140,8 @@ def generate_gitolite_acls(self, namespace=None, name=None, user=None, group=Non @conn.task(queue=APP.config.get('GITOLITE_CELERY_QUEUE', None), bind=True) @set_status -def delete_project(self, namespace=None, name=None, user=None, action_user=None): +def delete_project( + self, namespace=None, name=None, user=None, action_user=None): """ Delete a project in pagure. This is achieved in three steps: From 5a20a3e8b0f4c855cd234947efc9f8dc7a14deb8 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Dec 18 2017 16:33:19 +0000 Subject: [PATCH 3/3] Unit-test fixes due to the milestone links Signed-off-by: Pierre-Yves Chibon --- diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py index 2111f0b..2cedc81 100644 --- a/tests/test_pagure_flask_ui_issues.py +++ b/tests/test_pagure_flask_ui_issues.py @@ -538,8 +538,9 @@ class PagureFlaskIssuestests(tests.Modeltests): 'placeholder="username"\n value="foo" />', output.data) self.assertIn( - '
\n v2.0', - output.data) + '
\n ' + '\n ' + '\n v2.0\n', output.data) @patch('pagure.lib.git.update_git', MagicMock(return_value=True)) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) @@ -607,8 +608,9 @@ class PagureFlaskIssuestests(tests.Modeltests): 'placeholder="username"\n value="foo" />', output.data) self.assertNotIn( - '
\n v2.0', - output.data) + '
\n ' + '\n ' + '\n v2.0\n', output.data) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') diff --git a/tests/test_pagure_flask_ui_issues_acl_checks.py b/tests/test_pagure_flask_ui_issues_acl_checks.py index 7f3bdec..fe69efe 100644 --- a/tests/test_pagure_flask_ui_issues_acl_checks.py +++ b/tests/test_pagure_flask_ui_issues_acl_checks.py @@ -160,7 +160,7 @@ class PagureFlaskIssuesACLtests(tests.Modeltests): '', output.data) self.assertIn( - '77', + '\n 77', output.data) # but can't edit them self.assertNotIn( @@ -234,7 +234,7 @@ class PagureFlaskIssuesACLtests(tests.Modeltests): '', output.data) self.assertIn( - '77', + '\n 77', output.data) # but can't edit them @@ -424,7 +424,7 @@ class PagureFlaskIssuesACLtests(tests.Modeltests): '', output.data) self.assertIn( - '77', + '\n 77', output.data) # but can't edit them self.assertNotIn( @@ -494,7 +494,7 @@ class PagureFlaskIssuesACLtests(tests.Modeltests): '', output.data) self.assertIn( - '77', + '\n 77', output.data) # can edit them @@ -687,7 +687,7 @@ class PagureFlaskIssuesACLtests(tests.Modeltests): '', output.data) self.assertIn( - '77', + '\n 77', output.data) # but can't edit them self.assertNotIn( @@ -757,7 +757,7 @@ class PagureFlaskIssuesACLtests(tests.Modeltests): '', output.data) self.assertIn( - '77', + '\n 77', output.data) # can edit them @@ -949,7 +949,7 @@ class PagureFlaskIssuesACLtests(tests.Modeltests): '', output.data) self.assertIn( - '77', + '\n 77', output.data) # but can't edit them self.assertNotIn( @@ -1019,7 +1019,7 @@ class PagureFlaskIssuesACLtests(tests.Modeltests): '', output.data) self.assertIn( - '77', + '\n 77', output.data) # can edit them