Skip to content

Feature group routing for submissions#2393

Merged
Didayolo merged 30 commits into
developfrom
feature/group_routing
Jun 16, 2026
Merged

Feature group routing for submissions#2393
Didayolo merged 30 commits into
developfrom
feature/group_routing

Conversation

@IdirLISN

@IdirLISN IdirLISN commented May 28, 2026

Copy link
Copy Markdown
Collaborator

Description

Adding button inside the edit section of competitions, participant page, to create groups of users linked to a queue.

In edit section of competition, we can now create groups for this specific competition, edit groups, add participant to groups and associate a queue to groups.

If a user is inside multiple groups when he submits, multiple child submission are created (1 per group).
Each child submission are displayed in lines inside of the leaderboard ordered by ranking.

Multitasking is supported.

Issues this PR resolves

Closes #2100

/!\ new migrations files. /!\

A checklist for hand testing

  • create at least two groups and assign your self to them.
  • check server status if the child submissions are redirected to the expected worker.
  • check UX/UI in edit page.
  • check leaderboard.

Checklist

  • Code review by me
  • Hand tested by me
  • I'm proud of my work
  • Code review by reviewer
  • Hand tested by reviewer
  • CircleCi tests are passing
  • Ready to merge

@ObadaS ObadaS mentioned this pull request May 28, 2026
11 tasks
@IdirLISN IdirLISN changed the title Feature/group routing Feature group routing for submissions May 28, 2026
@IdirLISN IdirLISN self-assigned this May 28, 2026
@Didayolo

Copy link
Copy Markdown
Member

This feature can't be considered ready while there are failures in the CircleCI tests:

=========================== short test summary info ============================
FAILED src/apps/api/tests/test_competitions.py::CompetitionTests::test_delete_own_competition - django.db.utils.ProgrammingError: relation "competitions_competition_partic...
FAILED src/apps/api/tests/test_leaderboards.py::CompetitionLeaderboardStressTests::test_getting_many_submissions_doesnt_cause_too_many_queries - AssertionError: 31 != 11 : 31 queries executed, 11 expected
FAILED src/apps/api/tests/test_phases.py::ReRunPhaseSubmissionTests::test_collab_can_re_run_whole_phase - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/api/tests/test_phases.py::ReRunPhaseSubmissionTests::test_comp_creator_can_re_run_whole_phase - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/api/tests/test_phases.py::ReRunPhaseSubmissionTests::test_normal_user_cannot_re_run_whole_phase - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/api/tests/test_phases.py::ReRunPhaseSubmissionTests::test_super_user_can_re_run_whole_phase - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/api/tests/test_queues.py::QueuesAPITestCase::test_organizer_can_perform_all_operations - django.db.utils.ProgrammingError: relation "profiles_customgroup" does not ...
FAILED src/apps/api/tests/test_submissions.py::OrganizationSubmissionTests::test_org_participant_can_make_submission_as_organization - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/api/tests/test_submissions.py::TaskSelectionTests::test_can_re_run_submissions_with_multiple_tasks - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/api/tests/test_submissions.py::TaskSelectionTests::test_can_re_run_submissions_with_specific_task_with_bot_user_without_original_submission_secret - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/api/tests/test_submissions.py::TaskSelectionTests::test_can_select_tasks_when_making_submissions - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/competitions/tests/test_submissions.py::SubmissionManagerTests::test_re_run_submission_creates_new_submission_with_same_data_owner_and_phase - django.db.utils.InternalError: current transaction is aborted, commands ign...
FAILED src/apps/competitions/tests/test_submissions.py::MultipleTasksPerPhaseTests::test_children_always_created_in_the_same_order - AssertionError: assert 0 == 2
FAILED src/apps/competitions/tests/test_submissions.py::MultipleTasksPerPhaseTests::test_making_submission_creates_parent_sub_and_additional_sub_per_task - AssertionError: assert 0 == 2
FAILED src/apps/competitions/tests/test_submissions.py::MultipleTasksPerPhaseTests::test_making_submission_to_phase_with_one_task_does_not_create_parents_or_children - AssertionError: assert 0 == 1
===== 15 failed, 222 passed, 2 skipped, 2285 warnings in 347.97s (0:05:47) =====

Exited with code exit status 1

@IdirLISN IdirLISN force-pushed the feature/group_routing branch from 5e3ff22 to 83be794 Compare June 15, 2026 08:32
@Didayolo

Didayolo commented Jun 15, 2026

Copy link
Copy Markdown
Member

I am not admin/collab of this queue so I should not be able to select it:

Capture d’écran 2026-06-15 à 16 17 15

@ObadaS

ObadaS commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

When someone makes a submission while a group, then add their submission to the leaderboard, the leaderboard correctly shows the name of the group.

However, if the person is removed from the group, the leaderboard will start showing the name of the Queue that the submission was made on instead, which could lead to confusion. If the person is put back into the group, the leaderboard will go back to showing the name of the group.

@Didayolo

Didayolo commented Jun 16, 2026

Copy link
Copy Markdown
Member

Approved.

Still TODO:

  • Documentation
  • Tests
  • Rename button "Edit" to "Save"

@Didayolo Didayolo merged commit ff23181 into develop Jun 16, 2026
1 check passed
@Didayolo Didayolo deleted the feature/group_routing branch June 16, 2026 12:16
IdirLISN added a commit that referenced this pull request Jun 16, 2026
* backend & frontend OK / TODO: site worker and leaderboad

* site worker sending submissions to group queue OK

* leaderboad group feature

* logs removed

* fix json leaderboard

* Clean up leaderboard ordering logic

* competition queue on groups with out queue

* some bugfix

* UI bugfix

* UI bugfix

* leaderboard groups format parentsubID_groupname

* fix conflicts issues

* resolve conflict

* clean site worker

* branch update and linter fix

* linter fix

* linter fix

* linter fix

* bugfix group form

* adding migrations files

* fix logic to fix tests problem

* fix logic to fix tests problem

* E2E test fixed

* E2E test fixed

* E2E test fixed

* E2E test fixed

* Fix queue name in server status

* fix queues visibility

* fix queue visibility for groups

* Flake8

---------

Co-authored-by: didayolo <adrien.pavao@gmail.com>
IdirLISN added a commit that referenced this pull request Jun 16, 2026
* backend & frontend OK / TODO: site worker and leaderboad

* site worker sending submissions to group queue OK

* leaderboad group feature

* logs removed

* fix json leaderboard

* Clean up leaderboard ordering logic

* competition queue on groups with out queue

* some bugfix

* UI bugfix

* UI bugfix

* leaderboard groups format parentsubID_groupname

* fix conflicts issues

* resolve conflict

* clean site worker

* branch update and linter fix

* linter fix

* linter fix

* linter fix

* bugfix group form

* adding migrations files

* fix logic to fix tests problem

* fix logic to fix tests problem

* E2E test fixed

* E2E test fixed

* E2E test fixed

* E2E test fixed

* Fix queue name in server status

* fix queues visibility

* fix queue visibility for groups

* Flake8

---------

Co-authored-by: didayolo <adrien.pavao@gmail.com>
@IdirLISN IdirLISN restored the feature/group_routing branch June 16, 2026 14:00
@IdirLISN IdirLISN deleted the feature/group_routing branch June 16, 2026 14:29
Didayolo added a commit that referenced this pull request Jun 19, 2026
* backend & frontend OK / TODO: site worker and leaderboad

* site worker sending submissions to group queue OK

* leaderboad group feature

* logs removed

* fix json leaderboard

* Clean up leaderboard ordering logic

* competition queue on groups with out queue

* some bugfix

* UI bugfix

* UI bugfix

* leaderboard groups format parentsubID_groupname

* fix conflicts issues

* resolve conflict

* clean site worker

* branch update and linter fix

* linter fix

* linter fix

* linter fix

* bugfix group form

* adding migrations files

* fix logic to fix tests problem

* fix logic to fix tests problem

* E2E test fixed

* E2E test fixed

* E2E test fixed

* E2E test fixed

* Fix queue name in server status

* fix queues visibility

* fix queue visibility for groups

* Flake8

---------

Co-authored-by: didayolo <adrien.pavao@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Participant groups in Competitions

3 participants