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

View File

@@ -260,6 +260,7 @@ class ServiceSchema(BaseSchema, UUIDsAsStringsMixin):
'users',
'version',
'whitelist',
'broadcast_messages',
)
strict = True
@@ -326,6 +327,7 @@ class DetailedServiceSchema(BaseSchema):
'users',
'version',
'whitelist',
'broadcast_messages',
)
@@ -350,7 +352,7 @@ class BaseTemplateSchema(BaseSchema):
class Meta:
model = models.Template
exclude = ("service_id", "jobs", "service_letter_contact_id")
exclude = ("service_id", "jobs", "service_letter_contact_id", "broadcast_messages")
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_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'))
return jsonify(
templates=[template.serialize() for template in templates]
templates=[template.serialize_for_v2() for template in templates]
), 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):
res = sample_template.serialize()
res = sample_template.serialize_for_v2()
assert res['subject'] is None
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'
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'

View File

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

View File

@@ -2,7 +2,7 @@ import pytest
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.app.db import create_template