mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 09:51:11 -05:00
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:
@@ -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"
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ from app.models import (
|
|||||||
VerifyCode,
|
VerifyCode,
|
||||||
ApiKey,
|
ApiKey,
|
||||||
Template,
|
Template,
|
||||||
|
TemplateHistory,
|
||||||
Job,
|
Job,
|
||||||
Notification,
|
Notification,
|
||||||
NotificationHistory,
|
NotificationHistory,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user