Newer
Older
"""
This module contains schemas used to convert database objects into
dictionaries.
"""
from marshmallow.decorators import pre_load
from marshmallow.decorators import pre_dump, post_dump
from app.core import ma
from marshmallow_sqlalchemy import fields
class BaseSchema(ma.SQLAlchemySchema):
class Meta:
strict = True
load_instance = False
include_relationships = False
class IdNameSchema(BaseSchema):
id = fields.fields.Integer()
name = fields.fields.String()
class QuestionTypeSchema(IdNameSchema):
class Meta(BaseSchema.Meta):
model = models.QuestionType
class MediaTypeSchema(IdNameSchema):
class Meta(BaseSchema.Meta):
model = models.MediaType
class ComponentTypeSchema(IdNameSchema):
class Meta(BaseSchema.Meta):
model = models.ComponentType
class CodeSchema(IdNameSchema):
class Meta(BaseSchema.Meta):
model = models.Code
code = ma.auto_field()
view_type_id = ma.auto_field()
competition_id = fields.fields.Integer()
team_id = fields.fields.Integer()
class ViewTypeSchema(IdNameSchema):
class Meta(BaseSchema.Meta):
model = models.ViewType
class QuestionSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.Question
id = ma.auto_field()
name = ma.auto_field()
total_score = ma.auto_field()
type_id = ma.auto_field()
slide_id = ma.auto_field()
correcting_instructions = ma.auto_field()
class QuestionAnswerSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.QuestionAnswer
id = ma.auto_field()
score = ma.auto_field()
question_id = ma.auto_field()
team_id = ma.auto_field()
class QuestionAlternativeSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.QuestionAlternative
id = ma.auto_field()
text = ma.auto_field()
value = ma.auto_field()
question_id = ma.auto_field()
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
class RoleSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.Role
id = ma.auto_field()
name = ma.auto_field()
class CitySchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.City
id = ma.auto_field()
name = ma.auto_field()
class MediaSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.Media
id = ma.auto_field()
filename = ma.auto_field()
type_id = ma.auto_field()
upload_by_id = ma.auto_field()
class SlideSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.Slide
id = ma.auto_field()
order = ma.auto_field()
title = ma.auto_field()
timer = ma.auto_field()
competition_id = ma.auto_field()
background_image = fields.Nested(MediaSchema, many=False)
class TeamSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.Team
id = ma.auto_field()
name = ma.auto_field()
competition_id = ma.auto_field()
class UserSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.User
id = ma.auto_field()
name = ma.auto_field()
email = ma.auto_field()
role_id = ma.auto_field()
city_id = ma.auto_field()
class CompetitionSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.Competition
id = ma.auto_field()
name = ma.auto_field()
year = ma.auto_field()
city_id = ma.auto_field()
background_image = fields.Nested(MediaSchema, many=False)
class ComponentSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = models.Component
id = ma.auto_field()
x = ma.auto_field()
y = ma.auto_field()
w = ma.auto_field()
h = ma.auto_field()
slide_id = ma.auto_field()
type_id = ma.auto_field()
media = fields.Nested(MediaSchema, many=False)