fix schema and primary key

* version is an additional primary key so we need to indicate that
* schema no longer relies on Template model, and uses nested user
This commit is contained in:
Leo Hemsted
2016-08-08 16:57:39 +01:00
parent 049514d4b2
commit c820938ced
5 changed files with 18 additions and 19 deletions

View File

@@ -249,7 +249,7 @@ class TemplateHistory(db.Model):
subject = db.Column(db.Text) subject = db.Column(db.Text)
created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False) created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False)
created_by = db.relationship('User') created_by = db.relationship('User')
version = db.Column(db.Integer) version = db.Column(db.Integer, primary_key=True)
MMG_PROVIDER = "mmg" MMG_PROVIDER = "mmg"

View File

@@ -172,17 +172,11 @@ class TemplateSchema(BaseTemplateSchema):
class TemplateHistorySchema(BaseSchema): class TemplateHistorySchema(BaseSchema):
class Meta: created_by = fields.Nested(UserSchema, only=['id', 'name', 'email_address'], dump_only=True)
# 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') created_at = field_for(models.Template, 'created_at', format='%Y-%m-%d %H:%M:%S.%f')
def populate_created_by(self, data): class Meta:
usr = models.User.query.filter_by(id=data.created_by_id).one() model = models.TemplateHistory
return {'id': str(usr.id), 'name': usr.name, 'email_address': usr.email_address}
class NotificationsStatisticsSchema(BaseSchema): class NotificationsStatisticsSchema(BaseSchema):

View File

@@ -176,7 +176,7 @@ def get_service_provider_aggregate_statistics(service_id):
# tables. This is so product owner can pass stories as done # tables. This is so product owner can pass stories as done
@service.route('/<uuid:service_id>/history', methods=['GET']) @service.route('/<uuid:service_id>/history', methods=['GET'])
def get_service_history(service_id): def get_service_history(service_id):
from app.models import (Service, ApiKey, Template, Event) from app.models import (Service, ApiKey, Template, TemplateHistory, Event)
from app.schemas import ( from app.schemas import (
service_history_schema, service_history_schema,
api_key_history_schema, api_key_history_schema,

View File

@@ -29,6 +29,7 @@ from app.models import (
VerifyCode, VerifyCode,
ApiKey, ApiKey,
Template, Template,
TemplateHistory,
Job, Job,
Notification, Notification,
NotificationHistory, NotificationHistory,

View File

@@ -6,7 +6,7 @@ from app.dao.templates_dao import (
dao_update_template, dao_update_template,
dao_get_template_versions) dao_get_template_versions)
from tests.app.conftest import sample_template as create_sample_template from tests.app.conftest import sample_template as create_sample_template
from app.models import Template from app.models import Template, TemplateHistory
import pytest import pytest
@@ -261,12 +261,16 @@ def test_get_template_versions(sample_template):
sample_template.content = 'new version' sample_template.content = 'new version'
dao_update_template(sample_template) dao_update_template(sample_template)
versions = dao_get_template_versions(service_id=sample_template.service_id, template_id=sample_template.id) versions = dao_get_template_versions(service_id=sample_template.service_id, template_id=sample_template.id)
assert versions.__len__() == 2 assert len(versions) == 2
for x in versions: versions = sorted(versions, key=lambda x: x.version)
if x.version == 2: assert versions[0].content == original_content
assert x.content == 'new version' assert versions[1].content == 'new version'
else:
assert x.content == original_content assert versions[0].created_at == versions[1].created_at
assert versions[0].updated_at is None
assert versions[1].updated_at is not None
from app.schemas import template_history_schema from app.schemas import template_history_schema
v = template_history_schema.load(versions, many=True) v = template_history_schema.load(versions, many=True)
assert v.__len__() == 2 assert len(v) == 2