diff --git a/server/app/core/rich_schemas.py b/server/app/core/rich_schemas.py index 9696f68e29d8ed091cd1b460bba16f8eca6a9729..1b21e5b5feba0bd52983d649c646282fbd1c2bd2 100644 --- a/server/app/core/rich_schemas.py +++ b/server/app/core/rich_schemas.py @@ -14,6 +14,7 @@ class RichSchema(ma.SQLAlchemySchema): strict = True load_instance = True include_relationships = True + ordered = False class QuestionSchemaRich(RichSchema): diff --git a/server/app/core/schemas.py b/server/app/core/schemas.py index 10c1dfc1c697c81e15b25085133cdabb4151cd59..ae32121d7a42557ab9757433816506f88bc17eb0 100644 --- a/server/app/core/schemas.py +++ b/server/app/core/schemas.py @@ -13,6 +13,7 @@ class BaseSchema(ma.SQLAlchemySchema): strict = True load_instance = False include_relationships = False + ordered = False class IdNameSchema(BaseSchema): diff --git a/server/app/database/controller/get.py b/server/app/database/controller/get.py index ac59cd231eca130375b0990513d91beb65f2f904..2b85abed30e143c28e7ec7fe319eb08384236296 100644 --- a/server/app/database/controller/get.py +++ b/server/app/database/controller/get.py @@ -19,7 +19,7 @@ from app.database.models import ( User, ) from sqlalchemy import func -from sqlalchemy.orm import joinedload +from sqlalchemy.orm import joinedload, subqueryload from sqlalchemy.orm.util import with_polymorphic @@ -311,15 +311,15 @@ def component_list(competition_id, slide_id): def competition(competition_id): """ Get Competition and all it's sub-entities. """ - os1 = joinedload(Competition.slides).joinedload(Slide.components) - os2 = joinedload(Competition.slides).joinedload(Slide.questions).joinedload(Question.alternatives) - ot = joinedload(Competition.teams).joinedload(Team.question_alternative_answers) - ot1 = joinedload(Competition.teams).joinedload(Team.question_scores) + join_component = joinedload(Competition.slides).subqueryload(Slide.components) + join_alternatives = joinedload(Competition.slides).joinedload(Slide.questions).joinedload(Question.alternatives) + join_question_alternative_answer = joinedload(Competition.teams).joinedload(Team.question_alternative_answers) + join_question_score = joinedload(Competition.teams).joinedload(Team.question_scores) return ( Competition.query.filter(Competition.id == competition_id) - .options(os1) - .options(os2) - .options(ot) - .options(ot1) + .options(join_component) + .options(join_alternatives) + .options(join_question_alternative_answer) + .options(join_question_score) .first() ) diff --git a/server/configmodule.py b/server/configmodule.py index e38c4e04cf1b90ffff4edbe0cbcffffb347c5b4a..25978d378ee2e027730f91b7f025bb0080768e38 100644 --- a/server/configmodule.py +++ b/server/configmodule.py @@ -19,6 +19,7 @@ class Config: SQLALCHEMY_ECHO = False USER_LOGIN_LOCKED_ATTEMPTS = 12 USER_LOGIN_LOCKED_EXPIRES = timedelta(hours=3) + JSON_SORT_KEYS = False class DevelopmentConfig(Config):