mirror of
https://github.com/GSA/notifications-api.git
synced 2026-09-11 18:38:14 -04:00
Revert "[#151837054] Add new column free_sms_fragment_limit in the Services table"
This commit is contained in:
@@ -305,27 +305,3 @@ class PopulateServiceLetterContact(Command):
|
||||
db.session.commit()
|
||||
|
||||
print("Populated letter contacts for {} services".format(result.rowcount))
|
||||
|
||||
|
||||
class PopulateServiceAndServiceHistoryFreeSmsFragmentLimit(Command):
|
||||
|
||||
def run(self):
|
||||
services_to_update = """
|
||||
UPDATE services
|
||||
SET free_sms_fragment_limit = 250000
|
||||
WHERE free_sms_fragment_limit IS NULL
|
||||
"""
|
||||
|
||||
services_history_to_update = """
|
||||
UPDATE services_history
|
||||
SET free_sms_fragment_limit = 250000
|
||||
WHERE free_sms_fragment_limit IS NULL
|
||||
"""
|
||||
|
||||
services_result = db.session.execute(services_to_update)
|
||||
services_history_result = db.session.execute(services_history_to_update)
|
||||
|
||||
db.session.commit()
|
||||
|
||||
print("Populated free sms fragment limits for {} services".format(services_result.rowcount))
|
||||
print("Populated free sms fragment limits for {} services history".format(services_history_result.rowcount))
|
||||
|
||||
+4
-1
@@ -211,7 +211,6 @@ class Service(db.Model, Versioned):
|
||||
_letter_contact_block = db.Column('letter_contact_block', db.Text, index=False, unique=False, nullable=True)
|
||||
sms_sender = db.Column(db.String(11), nullable=False, default=lambda: current_app.config['FROM_NUMBER'])
|
||||
organisation_id = db.Column(UUID(as_uuid=True), db.ForeignKey('organisation.id'), index=True, nullable=True)
|
||||
free_sms_fragment_limit = db.Column(db.BigInteger, index=False, unique=False, nullable=True)
|
||||
organisation = db.relationship('Organisation')
|
||||
dvla_organisation_id = db.Column(
|
||||
db.String,
|
||||
@@ -231,6 +230,10 @@ class Service(db.Model, Versioned):
|
||||
|
||||
association_proxy('permissions', 'service_permission_types')
|
||||
|
||||
@staticmethod
|
||||
def free_sms_fragment_limit():
|
||||
return current_app.config['FREE_SMS_TIER_FRAGMENT_COUNT']
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, data):
|
||||
"""
|
||||
|
||||
+10
-2
@@ -175,17 +175,20 @@ class ProviderDetailsHistorySchema(BaseSchema):
|
||||
|
||||
class ServiceSchema(BaseSchema):
|
||||
|
||||
free_sms_fragment_limit = fields.Method(method_name='get_free_sms_fragment_limit')
|
||||
created_by = field_for(models.Service, 'created_by', required=True)
|
||||
organisation = field_for(models.Service, 'organisation')
|
||||
branding = field_for(models.Service, 'branding')
|
||||
dvla_organisation = field_for(models.Service, 'dvla_organisation')
|
||||
free_sms_fragment_limit = field_for(models.Service, 'free_sms_fragment_limit')
|
||||
permissions = fields.Method("service_permissions")
|
||||
override_flag = False
|
||||
reply_to_email_address = fields.Method(method_name="get_reply_to_email_address")
|
||||
sms_sender = fields.Method(method_name="get_sms_sender")
|
||||
letter_contact_block = fields.Method(method_name="get_letter_contact")
|
||||
|
||||
def get_free_sms_fragment_limit(selfs, service):
|
||||
return service.free_sms_fragment_limit()
|
||||
|
||||
def service_permissions(self, service):
|
||||
return [p.permission for p in service.permissions]
|
||||
|
||||
@@ -200,7 +203,7 @@ class ServiceSchema(BaseSchema):
|
||||
|
||||
class Meta:
|
||||
model = models.Service
|
||||
dump_only = ['reply_to_email_address', 'letter_contact_block']
|
||||
dump_only = ['free_sms_fragment_limit', 'reply_to_email_address', 'letter_contact_block']
|
||||
exclude = (
|
||||
'updated_at',
|
||||
'created_at',
|
||||
@@ -249,6 +252,11 @@ class ServiceSchema(BaseSchema):
|
||||
class DetailedServiceSchema(BaseSchema):
|
||||
statistics = fields.Dict()
|
||||
|
||||
free_sms_fragment_limit = fields.Method(method_name='get_free_sms_fragment_limit')
|
||||
|
||||
def get_free_sms_fragment_limit(selfs, service):
|
||||
return service.free_sms_fragment_limit()
|
||||
|
||||
class Meta:
|
||||
model = models.Service
|
||||
exclude = (
|
||||
|
||||
@@ -138,10 +138,6 @@ def create_service():
|
||||
errors = {'user_id': ['Missing data for required field.']}
|
||||
raise InvalidRequest(errors, status_code=400)
|
||||
|
||||
# TODO: to be removed when front-end is updated
|
||||
if 'free_sms_fragment_limit' not in data:
|
||||
data['free_sms_fragment_limit'] = current_app.config['FREE_SMS_TIER_FRAGMENT_COUNT']
|
||||
|
||||
# validate json with marshmallow
|
||||
service_schema.load(request.get_json())
|
||||
|
||||
|
||||
@@ -21,8 +21,6 @@ manager.add_command('backfill_processing_time', commands.BackfillProcessingTime)
|
||||
manager.add_command('populate_service_email_reply_to', commands.PopulateServiceEmailReplyTo)
|
||||
manager.add_command('populate_service_sms_sender', commands.PopulateServiceSmsSender)
|
||||
manager.add_command('populate_service_letter_contact', commands.PopulateServiceLetterContact)
|
||||
manager.add_command('populate_service_and_service_history_free_sms_fragment_limit',
|
||||
commands.PopulateServiceAndServiceHistoryFreeSmsFragmentLimit)
|
||||
|
||||
|
||||
@manager.command
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
"""
|
||||
|
||||
Revision ID: 0124_add_free_sms_fragment_limit
|
||||
Revises: 0123_add_noti_to_email_reply
|
||||
Create Date: 2017-10-10 11:30:16.225980
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
revision = '0124_add_free_sms_fragment_limit'
|
||||
down_revision = '0123_add_noti_to_email_reply'
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('services_history', sa.Column('free_sms_fragment_limit', sa.BigInteger(), nullable=True))
|
||||
op.add_column('services', sa.Column('free_sms_fragment_limit', sa.BigInteger(), nullable=True))
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_column('services_history', 'free_sms_fragment_limit')
|
||||
op.drop_column('services', 'free_sms_fragment_limit')
|
||||
@@ -139,7 +139,6 @@ def sample_service(
|
||||
email_from=None,
|
||||
permissions=[SMS_TYPE, EMAIL_TYPE],
|
||||
research_mode=None,
|
||||
free_sms_fragment_limit=250000
|
||||
):
|
||||
if user is None:
|
||||
user = create_user()
|
||||
@@ -151,8 +150,7 @@ def sample_service(
|
||||
'message_limit': limit,
|
||||
'restricted': restricted,
|
||||
'email_from': email_from,
|
||||
'created_by': user,
|
||||
'free_sms_fragment_limit': free_sms_fragment_limit
|
||||
'created_by': user
|
||||
}
|
||||
service = Service.query.filter_by(name=service_name).first()
|
||||
if not service:
|
||||
|
||||
@@ -162,7 +162,7 @@ def test_get_service_by_id_returns_free_sms_limit(client, sample_service):
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
json_resp = json.loads(resp.get_data(as_text=True))
|
||||
assert json_resp['data']['free_sms_fragment_limit'] == current_app.config['FREE_SMS_TIER_FRAGMENT_COUNT']
|
||||
assert json_resp['data']['free_sms_fragment_limit'] == 250000
|
||||
|
||||
|
||||
def test_get_detailed_service_by_id_returns_free_sms_limit(client, sample_service):
|
||||
@@ -174,7 +174,7 @@ def test_get_detailed_service_by_id_returns_free_sms_limit(client, sample_servic
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
json_resp = json.loads(resp.get_data(as_text=True))
|
||||
assert json_resp['data']['free_sms_fragment_limit'] == current_app.config['FREE_SMS_TIER_FRAGMENT_COUNT']
|
||||
assert json_resp['data']['free_sms_fragment_limit'] == 250000
|
||||
|
||||
|
||||
def test_get_service_list_has_default_permissions(client, service_factory):
|
||||
@@ -272,7 +272,6 @@ def test_create_service(client, sample_user):
|
||||
assert not json_resp['data']['research_mode']
|
||||
assert json_resp['data']['dvla_organisation'] == '001'
|
||||
assert json_resp['data']['sms_sender'] == current_app.config['FROM_NUMBER']
|
||||
assert json_resp['data']['free_sms_fragment_limit'] == current_app.config['FREE_SMS_TIER_FRAGMENT_COUNT']
|
||||
|
||||
service_db = Service.query.get(json_resp['data']['id'])
|
||||
assert service_db.name == 'created service'
|
||||
@@ -317,49 +316,6 @@ def test_should_not_create_service_with_missing_user_id_field(notify_api, fake_u
|
||||
assert 'Missing data for required field.' in json_resp['message']['user_id']
|
||||
|
||||
|
||||
def test_create_service_free_sms_fragment_limit_is_optional(client, sample_user):
|
||||
data1 = {
|
||||
'name': 'service 1',
|
||||
'user_id': str(sample_user.id),
|
||||
'message_limit': 1000,
|
||||
'restricted': False,
|
||||
'active': False,
|
||||
'email_from': 'sample_user.email1',
|
||||
'created_by': str(sample_user.id),
|
||||
'free_sms_fragment_limit': 9999
|
||||
}
|
||||
|
||||
auth_header = create_authorization_header()
|
||||
headers = [('Content-Type', 'application/json'), auth_header]
|
||||
resp = client.post(
|
||||
'/service',
|
||||
data=json.dumps(data1),
|
||||
headers=headers)
|
||||
json_resp = json.loads(resp.get_data(as_text=True))
|
||||
assert resp.status_code == 201
|
||||
assert json_resp['data']['free_sms_fragment_limit'] == 9999
|
||||
|
||||
data2 = {
|
||||
'name': 'service 2',
|
||||
'user_id': str(sample_user.id),
|
||||
'message_limit': 1000,
|
||||
'restricted': False,
|
||||
'active': False,
|
||||
'email_from': 'sample_user.email2',
|
||||
'created_by': str(sample_user.id),
|
||||
}
|
||||
|
||||
auth_header = create_authorization_header()
|
||||
headers = [('Content-Type', 'application/json'), auth_header]
|
||||
resp = client.post(
|
||||
'/service',
|
||||
data=json.dumps(data2),
|
||||
headers=headers)
|
||||
json_resp = json.loads(resp.get_data(as_text=True))
|
||||
assert resp.status_code == 201
|
||||
assert json_resp['data']['free_sms_fragment_limit'] == current_app.config['FREE_SMS_TIER_FRAGMENT_COUNT']
|
||||
|
||||
|
||||
def test_should_error_if_created_by_missing(notify_api, sample_user):
|
||||
with notify_api.test_request_context():
|
||||
with notify_api.test_client() as client:
|
||||
@@ -594,36 +550,6 @@ def test_update_service_flags_will_remove_service_permissions(client, notify_db,
|
||||
assert set([p.permission for p in permissions]) == set([SMS_TYPE, EMAIL_TYPE])
|
||||
|
||||
|
||||
def test_update_service_free_sms_fragment_limit(client, notify_db, sample_service):
|
||||
org = Organisation(colour='#000000', logo='justice-league.png', name='Justice League')
|
||||
notify_db.session.add(org)
|
||||
notify_db.session.commit()
|
||||
|
||||
auth_header = create_authorization_header()
|
||||
resp = client.get(
|
||||
'/service/{}'.format(sample_service.id),
|
||||
headers=[auth_header]
|
||||
)
|
||||
json_resp = json.loads(resp.get_data(as_text=True))
|
||||
assert resp.status_code == 200
|
||||
assert json_resp['data']['free_sms_fragment_limit'] == current_app.config['FREE_SMS_TIER_FRAGMENT_COUNT']
|
||||
|
||||
data = {
|
||||
'free_sms_fragment_limit': 9999
|
||||
}
|
||||
|
||||
auth_header = create_authorization_header()
|
||||
|
||||
resp = client.post(
|
||||
'/service/{}'.format(sample_service.id),
|
||||
data=json.dumps(data),
|
||||
headers=[('Content-Type', 'application/json'), auth_header]
|
||||
)
|
||||
result = json.loads(resp.get_data(as_text=True))
|
||||
assert resp.status_code == 200
|
||||
assert result['data']['free_sms_fragment_limit'] == 9999
|
||||
|
||||
|
||||
def test_update_permissions_will_override_permission_flags(client, service_with_no_permissions):
|
||||
auth_header = create_authorization_header()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user