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)
created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False)
created_by = db.relationship('User')
version = db.Column(db.Integer)
version = db.Column(db.Integer, primary_key=True)
MMG_PROVIDER = "mmg"

View File

@@ -172,17 +172,11 @@ class TemplateSchema(BaseTemplateSchema):
class TemplateHistorySchema(BaseSchema):
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_by = fields.Nested(UserSchema, only=['id', 'name', 'email_address'], 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 Meta:
model = models.TemplateHistory
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
@service.route('/<uuid:service_id>/history', methods=['GET'])
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 (
service_history_schema,
api_key_history_schema,

View File

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

View File

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