From 414a464b6899c2eb18ff2220fa96c524ab180559 Mon Sep 17 00:00:00 2001 From: bebra_dev Date: Fri, 17 Jan 2025 13:19:57 +0300 Subject: [PATCH] fix: copy from previous semester --- adminpage/adminpage/settings.py | 2 ++ adminpage/sport/admin/utils.py | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/adminpage/adminpage/settings.py b/adminpage/adminpage/settings.py index 879bc063..c90e2041 100644 --- a/adminpage/adminpage/settings.py +++ b/adminpage/adminpage/settings.py @@ -64,6 +64,8 @@ def compose_base_url(schema, hostname, port) -> str: EXTRA_EVENTS_GROUP_NAME = "Extra sport events" MEDICAL_LEAVE_GROUP_NAME = "Medical leave" OTHER_SPORT_NAME = "Other" +# Groups that should not be duplicated when copying all sport groups from previous semester +NOT_COPYABLE_GROUPS = [SELF_TRAINING_GROUP_NAME, EXTRA_EVENTS_GROUP_NAME, MEDICAL_LEAVE_GROUP_NAME] TRAINING_EDITABLE_INTERVAL = timedelta( days=3 diff --git a/adminpage/sport/admin/utils.py b/adminpage/sport/admin/utils.py index f91f79cd..aa8a54a2 100644 --- a/adminpage/sport/admin/utils.py +++ b/adminpage/sport/admin/utils.py @@ -13,6 +13,7 @@ from api.crud import get_ongoing_semester from sport.models import Schedule, Semester, Group +from adminpage.settings import NOT_COPYABLE_GROUPS class DurationWidget(forms.TimeInput): @@ -258,11 +259,13 @@ def queryset(self, request, queryset): def copy_sport_groups_and_schedule_from_previous_semester(semester: Semester) -> None: - Semester.objects.bulk_create([semester]) + semester.save() prev_semester = Semester.objects.filter(start__lt=semester.start).order_by('-start').first() sport_groups = Group.objects.filter(semester__pk=prev_semester.pk).prefetch_related('trainers', 'allowed_medical_groups', 'schedule').select_related('trainer').order_by('pk') new_sport_groups = [] for group in sport_groups: + if group.name in NOT_COPYABLE_GROUPS: + continue new_group = Group( semester=semester, sport=group.sport,