Skip to content
Snippets Groups Projects
rich_schemas.py 1.57 KiB
Newer Older
  • Learn to ignore specific revisions
  • import app.core.schemas as schemas
    
    import app.database.models as models
    
    from app.core import ma
    from marshmallow_sqlalchemy import fields
    
    
    class RichSchema(ma.SQLAlchemySchema):
        class Meta:
            strict = True
            load_instance = True
            include_relationships = True
    
    
    
    class QuestionSchemaRich(RichSchema):
        class Meta(RichSchema.Meta):
            model = models.Question
    
        id = ma.auto_field()
        name = ma.auto_field()
        total_score = ma.auto_field()
    
        slide_id = ma.auto_field()
    
        type_id = ma.auto_field()
    
        alternatives = fields.Nested(schemas.QuestionAlternativeSchema, many=True)
    
    
    
    class TeamSchemaRich(RichSchema):
        class Meta(RichSchema.Meta):
            model = models.Team
    
        id = ma.auto_field()
        name = ma.auto_field()
        competition_id = ma.auto_field()
        question_answers = fields.Nested(schemas.QuestionAnswerSchema, many=True)
    
    
    class SlideSchemaRich(RichSchema):
        class Meta(RichSchema.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()
        questions = fields.Nested(QuestionSchemaRich, many=True)
    
        components = fields.Nested(schemas.ComponentSchema, many=True)
    
    class CompetitionSchemaRich(RichSchema):
        class Meta(RichSchema.Meta):
            model = models.Competition
    
        id = ma.auto_field()
        name = ma.auto_field()
        year = ma.auto_field()
    
        city_id = ma.auto_field()
    
        slides = fields.Nested(
            SlideSchemaRich,
            many=True,
        )
        teams = fields.Nested(TeamSchemaRich, many=True)