rename template.serialize to serialize_for_v2

make it clear that this is for the public api, and we shouldn't add
fields to it without considering impacts

also add the broadcast_messages relationship on service and template to
the exclude from the marshmallow schemas, so it's not included elsewhere
This commit is contained in:
Leo Hemsted
2020-07-06 16:41:53 +01:00
parent 5f337f7914
commit 0282a76bf7
7 changed files with 10 additions and 10 deletions

View File

@@ -991,7 +991,7 @@ class TemplateBase(db.Model):
template.values = values template.values = values
return template return template
def serialize(self): def serialize_for_v2(self):
serialized = { serialized = {
"id": str(self.id), "id": str(self.id),
"type": self.template_type, "type": self.template_type,
@@ -1009,7 +1009,6 @@ class TemplateBase(db.Model):
for key in self._as_utils_template().placeholders for key in self._as_utils_template().placeholders
}, },
"postage": self.postage, "postage": self.postage,
"broadcast_data": self.broadcast_data
} }
return serialized return serialized

View File

@@ -260,6 +260,7 @@ class ServiceSchema(BaseSchema, UUIDsAsStringsMixin):
'users', 'users',
'version', 'version',
'whitelist', 'whitelist',
'broadcast_messages',
) )
strict = True strict = True
@@ -326,6 +327,7 @@ class DetailedServiceSchema(BaseSchema):
'users', 'users',
'version', 'version',
'whitelist', 'whitelist',
'broadcast_messages',
) )
@@ -350,7 +352,7 @@ class BaseTemplateSchema(BaseSchema):
class Meta: class Meta:
model = models.Template model = models.Template
exclude = ("service_id", "jobs", "service_letter_contact_id") exclude = ("service_id", "jobs", "service_letter_contact_id", "broadcast_messages")
strict = True strict = True

View File

@@ -18,4 +18,4 @@ def get_template_by_id(template_id, version=None):
template = templates_dao.dao_get_template_by_id_and_service_id( template = templates_dao.dao_get_template_by_id_and_service_id(
template_id, authenticated_service.id, data.get('version')) template_id, authenticated_service.id, data.get('version'))
return jsonify(template.serialize()), 200 return jsonify(template.serialize_for_v2()), 200

View File

@@ -14,5 +14,5 @@ def get_templates():
templates = templates_dao.dao_get_all_templates_for_service(authenticated_service.id, data.get('type')) templates = templates_dao.dao_get_all_templates_for_service(authenticated_service.id, data.get('type'))
return jsonify( return jsonify(
templates=[template.serialize() for template in templates] templates=[template.serialize_for_v2() for template in templates]
), 200 ), 200

View File

@@ -214,17 +214,17 @@ def test_notification_serializes_created_by_name_with_created_by_id(client, samp
def test_sms_notification_serializes_without_subject(client, sample_template): def test_sms_notification_serializes_without_subject(client, sample_template):
res = sample_template.serialize() res = sample_template.serialize_for_v2()
assert res['subject'] is None assert res['subject'] is None
def test_email_notification_serializes_with_subject(client, sample_email_template): def test_email_notification_serializes_with_subject(client, sample_email_template):
res = sample_email_template.serialize() res = sample_email_template.serialize_for_v2()
assert res['subject'] == 'Email Subject' assert res['subject'] == 'Email Subject'
def test_letter_notification_serializes_with_subject(client, sample_letter_template): def test_letter_notification_serializes_with_subject(client, sample_letter_template):
res = sample_letter_template.serialize() res = sample_letter_template.serialize_for_v2()
assert res['subject'] == 'Template subject' assert res['subject'] == 'Template subject'

View File

@@ -44,7 +44,6 @@ def test_get_template_by_id_returns_200(
'name': expected_name, 'name': expected_name,
'personalisation': {}, 'personalisation': {},
'postage': postage, 'postage': postage,
'broadcast_data': None,
} }
assert json_response == expected_response assert json_response == expected_response

View File

@@ -2,7 +2,7 @@ import pytest
from flask import json from flask import json
from app.models import EMAIL_TYPE, LETTER_TYPE, SMS_TYPE, TEMPLATE_TYPES from app.models import EMAIL_TYPE, LETTER_TYPE, TEMPLATE_TYPES
from tests import create_authorization_header from tests import create_authorization_header
from tests.app.db import create_template from tests.app.db import create_template