From 29c8b7d957362542e45c3fd9cd96a74d99c8cdf3 Mon Sep 17 00:00:00 2001 From: didayolo Date: Thu, 1 Jun 2023 16:58:05 +0200 Subject: [PATCH 1/3] Save leaderboard during manual creation of benchmark --- src/apps/api/views/competitions.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/apps/api/views/competitions.py b/src/apps/api/views/competitions.py index bb7eeec7b..56601503a 100644 --- a/src/apps/api/views/competitions.py +++ b/src/apps/api/views/competitions.py @@ -156,6 +156,22 @@ def create(self, request, *args, **kwargs): for index in range(len(phase['tasks'])): phase['tasks'][index] = phase['tasks'][index]['task'] + # save leaderboard individually, then pass pk to each phase + print(f"{request.data['leaderboards']}") + data = request.data + if 'leaderboards' in data: + leaderboard_data = data['leaderboards'][0] + if(leaderboard_data['id']): + leaderboard_instance = Leaderboard.objects.get(id=leaderboard_data['id']) + leaderboard = LeaderboardSerializer(leaderboard_instance, data=data['leaderboards'][0]) + else: + leaderboard = LeaderboardSerializer(data=data['leaderboards'][0]) + leaderboard.is_valid() + leaderboard.save() + leaderboard_id = leaderboard["id"].value + for phase in data['phases']: + phase['leaderboard'] = leaderboard_id + serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) From 7541f6fc2deb74a1b838acbb84ddf0979fea7bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Pav=C3=A3o?= Date: Thu, 1 Jun 2023 17:14:47 +0200 Subject: [PATCH 2/3] Update competitions.py --- src/apps/api/views/competitions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps/api/views/competitions.py b/src/apps/api/views/competitions.py index 56601503a..12a40cf6e 100644 --- a/src/apps/api/views/competitions.py +++ b/src/apps/api/views/competitions.py @@ -156,6 +156,7 @@ def create(self, request, *args, **kwargs): for index in range(len(phase['tasks'])): phase['tasks'][index] = phase['tasks'][index]['task'] + # TODO - This is Temporary. Need to change Leaderboard to Phase connect to M2M and handle this correctly. # save leaderboard individually, then pass pk to each phase print(f"{request.data['leaderboards']}") data = request.data From 9477612432d46623384d5f6d42f89354b26853f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Pav=C3=A3o?= Date: Thu, 1 Jun 2023 17:22:53 +0200 Subject: [PATCH 3/3] Fix the test: precision should be a number --- src/tests/functional/test_competitions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/functional/test_competitions.py b/src/tests/functional/test_competitions.py index 7a1e2cc48..0bd8e3d8b 100644 --- a/src/tests/functional/test_competitions.py +++ b/src/tests/functional/test_competitions.py @@ -137,7 +137,7 @@ def test_manual_competition_creation(self): self.find('div[selenium="add-column"]').click() sleep(LONG_WAIT) self.find('input[selenium="column-key"]').send_keys('cOlUmN kEy') - self.find('input[selenium="column-precision"]').send_keys('cOlUmN pReCiSiOn') + self.find('input[selenium="column-precision"]').send_keys('3') self.find('input[selenium="hidden"]').click() self.find('div[selenium="save3"]').click() sleep(LONG_WAIT)