diff --git a/app/models.py b/app/models.py index 445977251..3fa042d98 100644 --- a/app/models.py +++ b/app/models.py @@ -123,6 +123,7 @@ class Service(db.Model, Versioned): backref=db.backref('user_to_service', lazy='dynamic')) restricted = db.Column(db.Boolean, index=False, unique=False, nullable=False) research_mode = db.Column(db.Boolean, index=False, unique=False, nullable=False, default=False) + can_send_letters = db.Column(db.Boolean, nullable=False, default=False) email_from = db.Column(db.Text, index=False, unique=True, nullable=False) created_by = db.relationship('User') created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False) diff --git a/migrations/versions/0058_add_letters_flag.py b/migrations/versions/0058_add_letters_flag.py new file mode 100644 index 000000000..3e7e5fcac --- /dev/null +++ b/migrations/versions/0058_add_letters_flag.py @@ -0,0 +1,24 @@ +"""empty message + +Revision ID: 0058_add_letters_flag +Revises: 0057_change_email_template +Create Date: 2016-10-25 17:37:27.660723 + +""" + +# revision identifiers, used by Alembic. +revision = '0058_add_letters_flag' +down_revision = '0057_change_email_template' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + op.add_column('services', sa.Column('can_send_letters', sa.Boolean(), nullable=False, server_default=sa.false())) + op.add_column('services_history', sa.Column('can_send_letters', sa.Boolean(), nullable=False, server_default=sa.false())) + + +def downgrade(): + op.drop_column('services_history', 'can_send_letters') + op.drop_column('services', 'can_send_letters') diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 69e382c4e..3959e401d 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -193,6 +193,7 @@ def test_create_service(notify_api, sample_user): json_resp = json.loads(resp.get_data(as_text=True)) assert json_resp['data']['name'] == 'created service' assert not json_resp['data']['research_mode'] + assert not json_resp['data']['can_send_letters'] def test_should_not_create_service_with_missing_user_id_field(notify_api, fake_uuid): @@ -376,7 +377,7 @@ def test_update_service(notify_api, notify_db, sample_service): assert result['data']['organisation'] == str(org.id) -def test_update_service_research_mode(notify_api, sample_service): +def test_update_service_flags(notify_api, sample_service): with notify_api.test_request_context(): with notify_api.test_client() as client: auth_header = create_authorization_header() @@ -387,10 +388,12 @@ def test_update_service_research_mode(notify_api, sample_service): json_resp = json.loads(resp.get_data(as_text=True)) assert resp.status_code == 200 assert json_resp['data']['name'] == sample_service.name - assert not json_resp['data']['research_mode'] + assert json_resp['data']['research_mode'] is False + assert json_resp['data']['can_send_letters'] is False data = { - 'research_mode': True + 'research_mode': True, + 'can_send_letters': True } auth_header = create_authorization_header() @@ -402,7 +405,8 @@ def test_update_service_research_mode(notify_api, sample_service): ) result = json.loads(resp.get_data(as_text=True)) assert resp.status_code == 200 - assert result['data']['research_mode'] + assert result['data']['research_mode'] is True + assert result['data']['can_send_letters'] is True def test_update_service_research_mode_throws_validation_error(notify_api, sample_service):