diff --git a/server/app/apis/competitions.py b/server/app/apis/competitions.py index eeea67bb49fb117186f9b8ee3383bac313732677..3c71f8c2a208add14d778f434d0be032941dc51a 100644 --- a/server/app/apis/competitions.py +++ b/server/app/apis/competitions.py @@ -25,7 +25,7 @@ class CompetitionsList(Resource): item = dbc.add.competition(**args) # Add default slide - dbc.add.slide(item) + dbc.add.slide(item.id) return item_response(schema.dump(item)) diff --git a/server/app/apis/components.py b/server/app/apis/components.py index c712a4e6518d8b878595a98cc38d1d3ad5d9cd81..c895f02322d16c8f603b97c7c60644db4ea36233 100644 --- a/server/app/apis/components.py +++ b/server/app/apis/components.py @@ -46,6 +46,5 @@ class ComponentList(Resource): @check_jwt(editor=True) def post(self, competition_id, slide_id): args = component_create_parser.parse_args() - item_slide = dbc.get.slide(competition_id, slide_id) - item = dbc.add.component(item_slide=item_slide, **args) + item = dbc.add.component(slide_id=slide_id, **args) return item_response(schema.dump(item)) diff --git a/server/app/apis/questions.py b/server/app/apis/questions.py index 9b519e5f91f6c9495cc9bd27f07d717948b0b24b..5797872a9865bd693989eb0322d8a9818796e86b 100644 --- a/server/app/apis/questions.py +++ b/server/app/apis/questions.py @@ -30,10 +30,9 @@ class QuestionListForSlide(Resource): return list_response(list_schema.dump(items)) @check_jwt(editor=True) - def post(self, slide_id, competition_id): + def post(self, competition_id, slide_id): args = question_parser.parse_args(strict=True) - item_slide = dbc.get.slide(competition_id, slide_id) - item = dbc.add.question(item_slide=item_slide, **args) + item = dbc.add.question(slide_id=slide_id, **args) return item_response(schema.dump(item)) diff --git a/server/app/apis/slides.py b/server/app/apis/slides.py index fffdff0bec150c3458ee73f5462855bfb6480e7e..72562480a49fa82d04bd7a5ff154a70560fb42da 100644 --- a/server/app/apis/slides.py +++ b/server/app/apis/slides.py @@ -22,11 +22,9 @@ class SlidesList(Resource): @check_jwt(editor=True) def post(self, competition_id): - item_comp = dbc.get.one(Competition, competition_id) - item_slide = dbc.add.slide(item_comp) - dbc.add.question(f"Fråga {item_slide.order + 1}", 10, 0, item_slide) - dbc.utils.refresh(item_comp) - return list_response(list_schema.dump(item_comp.slides)) + item_slide = dbc.add.slide(competition_id) + dbc.add.question(f"Fråga {item_slide.order + 1}", 10, 0, item_slide.id) + return item_response(schema.dump(item_slide)) @api.route("/<slide_id>") diff --git a/server/app/apis/teams.py b/server/app/apis/teams.py index 535de69560b7fccc85fed442419a725ca84be7a5..6596244c9085b850106e567a6974ced5428413aa 100644 --- a/server/app/apis/teams.py +++ b/server/app/apis/teams.py @@ -23,8 +23,7 @@ class TeamsList(Resource): @check_jwt(editor=True) def post(self, competition_id): args = team_parser.parse_args(strict=True) - item_comp = dbc.get.one(Competition, competition_id) - item_team = dbc.add.team(args["name"], item_comp) + item_team = dbc.add.team(args["name"], competition_id) return item_response(schema.dump(item_team)) diff --git a/server/app/database/controller/add.py b/server/app/database/controller/add.py index 7b77732bc409f9158df50742c234d56f676bcd36..732790568bad300538728903e7f0a3a23d5292a9 100644 --- a/server/app/database/controller/add.py +++ b/server/app/database/controller/add.py @@ -91,13 +91,13 @@ def city(name): return db_add(City(name)) -def component(type_id, item_slide, data, x=0, y=0, w=0, h=0): +def component(type_id, slide_id, data, x=0, y=0, w=0, h=0): """ Adds a component to the slide at the specified coordinates with the provided size and data . """ - return db_add(Component(item_slide.id, type_id, data, x, y, w, h)) + return db_add(Component(slide_id, type_id, data, x, y, w, h)) def image(filename, user_id): @@ -114,12 +114,12 @@ def user(email, password, role_id, city_id, name=None): return db_add(User(email, password, role_id, city_id, name)) -def question(name, total_score, type_id, item_slide): +def question(name, total_score, type_id, slide_id): """ Adds a question to the specified slide using the provided arguments. """ - return db_add(Question(name, total_score, type_id, item_slide.id)) + return db_add(Question(name, total_score, type_id, slide_id)) def question_alternative(text, value, question_id): @@ -137,10 +137,10 @@ def code(pointer, view_type_id): return db_add(Code(code_string, pointer, view_type_id)) -def team(name, item_competition): +def team(name, competition_id): """ Adds a team with the specified name to the provided competition. """ - item = db_add(Team(name, item_competition.id)) + item = db_add(Team(name, competition_id)) # Add code for the team code(item.id, 1) @@ -148,11 +148,11 @@ def team(name, item_competition): return item -def slide(item_competition): +def slide(competition_id): """ Adds a slide to the provided competition. """ - order = Slide.query.filter(Slide.competition_id == item_competition.id).count() # first element has index 0 - return db_add(Slide(order, item_competition.id)) + order = Slide.query.filter(Slide.competition_id == competition_id).count() # first element has index 0 + return db_add(Slide(order, competition_id)) def competition(name, year, city_id): @@ -164,7 +164,7 @@ def competition(name, year, city_id): item_competition = _competition(name, year, city_id) # Add one slide for the competition - slide(item_competition) + slide(item_competition.id) # TODO: Add two teams diff --git a/server/app/database/controller/copy.py b/server/app/database/controller/copy.py index a6b408ec301e093d6e47bca359968c052ac62aa1..cd6bbd77e8d201e187a2443ea86afd1eda693a67 100644 --- a/server/app/database/controller/copy.py +++ b/server/app/database/controller/copy.py @@ -40,7 +40,7 @@ def _component(item_component, item_slide_new): add.component( item_component.type_id, - item_slide_new, + item_slide_new.id, item_component.data, item_component.x, item_component.y, @@ -66,7 +66,7 @@ def slide_to_competition(item_slide_old, item_competition): Does not copy team, question answers. """ - item_slide_new = add.slide(item_competition) + item_slide_new = add.slide(item_competition.id) # Copy all fields item_slide_new.title = item_slide_old.title diff --git a/server/populate.py b/server/populate.py index c9813b401e9ed3be376924ae2d382b714490ec95..d842671e8f983fcd87dd2ce6c01f2758008d1363 100644 --- a/server/populate.py +++ b/server/populate.py @@ -50,8 +50,8 @@ def _add_items(): dbc.edit.default(item_comp.slides[0], timer=5, title="test-slide-title") # Add two more slides to competition - dbc.add.slide(item_comp) - dbc.add.slide(item_comp) + dbc.add.slide(item_comp.id) + dbc.add.slide(item_comp.id) # Add slides for j, item_slide in enumerate(item_comp.slides): @@ -67,7 +67,7 @@ def _add_items(): name=f"Question {j}: {question_types_items[j].name}", total_score=j, type_id=question_types_items[j].id, - item_slide=item_slide, + slide_id=item_slide.id, ) for i in range(3): @@ -80,7 +80,7 @@ def _add_items(): y = random.randrange(1, 500) w = random.randrange(150, 400) h = random.randrange(150, 400) - dbc.add.component(1, item_slide, {"text": f"hej{k}"}, x, y, w, h) + dbc.add.component(1, item_slide.id, {"text": f"hej{k}"}, x, y, w, h) # TODO: Remove comments when slide without questions is fixed # item_slide = dbc.add.slide(item_comp) @@ -92,7 +92,7 @@ def _add_items(): # Add teams for name in teams: - dbc.add.team(f"{name}{i}", item_comp) + dbc.add.team(f"{name}{i}", item_comp.id) if __name__ == "__main__": diff --git a/server/tests/test_app.py b/server/tests/test_app.py index 48e74c5a606fb9c2a04d66eb782f8ed1eba2a68c..b268f3e5472e3dfc652c8ceea5c0aa92ce601444 100644 --- a/server/tests/test_app.py +++ b/server/tests/test_app.py @@ -258,6 +258,8 @@ def test_slide_api(client): # Add slide response, body = post(client, f"/api/competitions/{CID}/slides", headers=headers) assert response.status_code == codes.OK + + response, body = get(client, f"/api/competitions/{CID}/slides", headers=headers) assert body["count"] == 4 # Get slide diff --git a/server/tests/test_helpers.py b/server/tests/test_helpers.py index 190e248c0ad358b077889df8b9e5052b16489a35..a90574bb8b5db708f4b8e378b1138eac36096b66 100644 --- a/server/tests/test_helpers.py +++ b/server/tests/test_helpers.py @@ -43,8 +43,8 @@ def add_default_values(): for j in range(2): item_comp = dbc.add.competition(f"Tävling {j}", 2012, item_city.id) # Add two more slides to competition - dbc.add.slide(item_comp) - dbc.add.slide(item_comp) + dbc.add.slide(item_comp.id) + dbc.add.slide(item_comp.id) # Add slides for i, item_slide in enumerate(item_comp.slides): @@ -56,10 +56,10 @@ def add_default_values(): dbc.utils.commit_and_refresh(item_slide) # Add question to competition - dbc.add.question(name=f"Q{i+1}", total_score=i + 1, type_id=1, item_slide=item_slide) + dbc.add.question(name=f"Q{i+1}", total_score=i + 1, type_id=1, slide_id=item_slide.id) # Add text component - dbc.add.component(1, item_slide, {"text": "Text"}, i, 2 * i, 3 * i, 4 * i) + dbc.add.component(1, item_slide.id, {"text": "Text"}, i, 2 * i, 3 * i, 4 * i) def get_body(response):