Add user details to template schema dump.

This commit is contained in:
Nicholas Staples
2016-05-10 14:55:59 +01:00
parent b8017dcf02
commit 083d3d75ae
3 changed files with 27 additions and 10 deletions

View File

@@ -123,9 +123,19 @@ class TemplateSchema(BaseTemplateSchema):
raise ValidationError('Invalid template subject', 'subject')
class TemplateHistorySchema(BaseTemplateSchema):
class TemplateHistorySchema(BaseSchema):
created_by = field_for(models.Template, 'created_by', required=True)
class Meta:
# Use the base model class that the history class is created from
model = models.Template
# We have to use a method here because the relationship field on the
# history object is not created.
created_by = fields.Method("populate_created_by", dump_only=True)
created_at = field_for(models.Template, 'created_at', format='%Y-%m-%d %H:%M:%S.%f')
def populate_created_by(self, data):
usr = models.User.query.filter_by(id=data.created_by_id).one()
return {'id': str(usr.id), 'name': usr.name, 'email_address': usr.email_address}
class NotificationsStatisticsSchema(BaseSchema):

View File

@@ -99,12 +99,13 @@ def get_template_by_id_and_service_id(service_id, template_id):
@template.route('/<uuid:template_id>/version/<int:version>')
def get_template_version(service_id, template_id, version):
fetched_template = dao_get_template_by_id_and_service_id(
data, errors = template_history_schema.dump(
dao_get_template_by_id_and_service_id(
template_id=template_id,
service_id=service_id,
version=version
)
data, errors = template_history_schema.dump(fetched_template)
)
if errors:
return json_resp(result='error', message=errors), 400
return jsonify(data=data)
@@ -112,8 +113,10 @@ def get_template_version(service_id, template_id, version):
@template.route('/<uuid:template_id>/version')
def get_template_versions(service_id, template_id):
fetched_templates = dao_get_template_versions(service_id, template_id)
data, errors = template_history_schema.dump(fetched_templates, many=True)
data, errors = template_history_schema.dump(
dao_get_template_versions(service_id, template_id),
many=True
)
if errors:
return json_resp(result='error', message=errors), 400
return jsonify(data=data)

View File

@@ -1,11 +1,13 @@
import json
from datetime import (datetime, date)
from flask import url_for
from app.models import Template
from freezegun import freeze_time
from app.dao.templates_dao import dao_update_template
from tests import create_authorization_header
def test_template_history_version(notify_api, sample_template):
def test_template_history_version(notify_api, sample_user, sample_template):
with notify_api.test_request_context():
with notify_api.test_client() as client:
auth_header = create_authorization_header()
@@ -23,6 +25,8 @@ def test_template_history_version(notify_api, sample_template):
assert json_resp['data']['id'] == str(sample_template.id)
assert json_resp['data']['content'] == sample_template.content
assert json_resp['data']['version'] == 1
assert json_resp['data']['created_by']['name'] == sample_user.name
assert datetime.strptime(json_resp['data']['created_at'], '%Y-%m-%d %H:%M:%S.%f').date() == date.today()
def test_previous_template_history_version(notify_api, sample_template):