from app.enums import TemplateType from app.schema_validation.definitions import personalisation, uuid get_template_by_id_request = { "$schema": "http://json-schema.org/draft-07/schema#", "description": "schema for parameters allowed when getting template by id", "type": "object", "properties": {"id": uuid, "version": {"type": ["integer", "null"], "minimum": 1}}, "required": ["id"], "additionalProperties": False, } get_template_by_id_response = { "$schema": "http://json-schema.org/draft-07/schema#", "description": "GET template by id schema response", "type": "object", "title": "reponse v2/template", "properties": { "id": uuid, "type": {"enum": list(TemplateType)}, "created_at": { "format": "date-time", "type": "string", "description": "Date+time created", }, "updated_at": { "format": "date-time", "type": ["string", "null"], "description": "Date+time updated", }, "created_by": {"type": "string"}, "version": {"type": "integer"}, "body": {"type": "string"}, "subject": {"type": ["string", "null"]}, "name": {"type": "string"}, }, "required": [ "id", "type", "created_at", "updated_at", "version", "created_by", "body", "name", ], } post_template_preview_request = { "$schema": "http://json-schema.org/draft-07/schema#", "description": "POST template schema", "type": "object", "title": "POST v2/template/{id}/preview", "properties": {"id": uuid, "personalisation": personalisation}, "required": ["id"], } post_template_preview_response = { "$schema": "http://json-schema.org/draft-07/schema#", "description": "POST template preview schema response", "type": "object", "title": "reponse v2/template/{id}/preview", "properties": { "id": uuid, "type": {"enum": list(TemplateType)}, "version": {"type": "integer"}, "body": {"type": "string"}, "subject": {"type": ["string", "null"]}, "html": {"type": ["string", "null"]}, }, "required": ["id", "type", "version", "body"], "additionalProperties": False, } def create_post_template_preview_response(template, template_object): return { "id": template.id, "type": template.template_type, "version": template.version, "body": template_object.content_with_placeholders_filled_in, "html": getattr(template_object, "html_body", None), "subject": getattr(template_object, "subject", None), }