diff --git a/server/app/apis/slides.py b/server/app/apis/slides.py index 02d0d3d699cf44a29acd5cee7e50fe3d4456c548..3d9ce6fedec13dc204edf995720cce1bff9bef25 100644 --- a/server/app/apis/slides.py +++ b/server/app/apis/slides.py @@ -83,3 +83,15 @@ class SlidesOrder(Resource): item_slide = dbc.edit.switch_order(item_slide, item_slide_order) return item_response(schema.dump(item_slide)) + + +@api.route("/<SOrder>/copy") +@api.param("CID,SOrder") +class SlidesOrder(Resource): + @check_jwt(editor=True) + def put(self, CID, SOrder): + item_slide = dbc.get.slide(CID, SOrder) + + item_slide_copy = dbc.copy.slide(item_slide) + + return item_response(schema.dump(item_slide_copy)) diff --git a/server/tests/test_app.py b/server/tests/test_app.py index 467fd0596269bbb875262c9b1be74f45807ed494..aa1758f9822bcc378220626fac30d854ae23b3f7 100644 --- a/server/tests/test_app.py +++ b/server/tests/test_app.py @@ -301,6 +301,11 @@ def test_slide_api(client): # Changes the order change_order_test(client, CID, slide_order, slide_order + 1, headers) + # Copies slide + for _ in range(10): + response, _ = put(client, f"/api/competitions/{CID}/slides/{slide_order}/copy", headers=headers) + assert response.status_code == codes.OK + def test_question_api(client): add_default_values()