From b27bcc1d80594bfa0a246d4f6f0a45071818a5ca Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Fri, 1 Mar 2019 13:53:02 +0000 Subject: [PATCH] Make `consent_to_research` nullable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It should be nullable so we can tell whether someone has answered the question already or not. No real users have entered data into this column yet, so it’s fine to wipe it. --- app/models.py | 2 +- .../versions/0277_consent_to_research_null.py | 71 +++++++++++++++++++ tests/app/service/test_rest.py | 4 +- 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 migrations/versions/0277_consent_to_research_null.py diff --git a/app/models.py b/app/models.py index eaf73396c..b9c7799bd 100644 --- a/app/models.py +++ b/app/models.py @@ -374,7 +374,7 @@ class Service(db.Model, Versioned): volume_sms = db.Column(db.Integer(), nullable=True, unique=False) volume_email = db.Column(db.Integer(), nullable=True, unique=False) volume_letter = db.Column(db.Integer(), nullable=True, unique=False) - consent_to_research = db.Column(db.Boolean, nullable=False, default=False) + consent_to_research = db.Column(db.Boolean, nullable=True) organisation = db.relationship( 'Organisation', diff --git a/migrations/versions/0277_consent_to_research_null.py b/migrations/versions/0277_consent_to_research_null.py new file mode 100644 index 000000000..bd439dcd9 --- /dev/null +++ b/migrations/versions/0277_consent_to_research_null.py @@ -0,0 +1,71 @@ +""" + +Revision ID: 0277_consent_to_research_null +Revises: 0266_user_folder_perms_table +Create Date: 2019-03-01 13:47:15.720238 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0277_consent_to_research_null' +down_revision = '0266_user_folder_perms_table' + + +def upgrade(): + op.alter_column( + 'services', + 'consent_to_research', + existing_type=sa.BOOLEAN(), + nullable=True, + server_default=sa.null(), + ) + op.alter_column( + 'services_history', + 'consent_to_research', + existing_type=sa.BOOLEAN(), + nullable=True, + server_default=sa.null(), + ) + op.execute(""" + UPDATE + services + SET + consent_to_research = null + """) + op.execute(""" + UPDATE + services_history + SET + consent_to_research = null + """) + + +def downgrade(): + op.execute(""" + UPDATE + services + SET + consent_to_research = false + """) + op.execute(""" + UPDATE + services_history + SET + consent_to_research = false + """) + op.alter_column( + 'services_history', + 'consent_to_research', + existing_type=sa.BOOLEAN(), + nullable=False, + server_default=sa.false(), + ) + op.alter_column( + 'services', + 'consent_to_research', + existing_type=sa.BOOLEAN(), + nullable=False, + server_default=sa.false(), + ) diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 610c01015..22208dd52 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -647,7 +647,7 @@ def test_update_service_sets_volumes( @pytest.mark.parametrize('value, expected_status, expected_persisted', ( (True, 200, True), (False, 200, False), - ('Yes', 400, False), + ('Yes', 400, None), )) def test_update_service_sets_research_consent( admin_request, @@ -656,7 +656,7 @@ def test_update_service_sets_research_consent( expected_status, expected_persisted, ): - assert sample_service.consent_to_research is False + assert sample_service.consent_to_research is None admin_request.post( 'service.update_service', service_id=sample_service.id,