diff --git a/trojstenid/schools/templates/settings/school_create.html b/trojstenid/schools/templates/settings/school_create.html index 2fb91e2..cc568ad 100644 --- a/trojstenid/schools/templates/settings/school_create.html +++ b/trojstenid/schools/templates/settings/school_create.html @@ -41,10 +41,28 @@

Nový záznam o škole

{% endif %} - {% form form %} -
- -
+ {% if confirmation %} +
+ Podľa zadaných údajov navštevuješ tento školský rok + {{ current_year }} na škole {{ school }}. + Je to správne? +
+ + + {% for field in form %} + {{ field.as_hidden }} + {% endfor %} + +
+ + +
+ {% else %} + {% form form %} +
+ +
+ {% endif %} {% endif %} diff --git a/trojstenid/schools/views.py b/trojstenid/schools/views.py index 7c74c05..5432991 100644 --- a/trojstenid/schools/views.py +++ b/trojstenid/schools/views.py @@ -6,6 +6,7 @@ from django.db.models import QuerySet from django.http import HttpResponseRedirect from django.urls import reverse +from django.utils import timezone from django.utils.functional import cached_property from django.views.generic import FormView, ListView, TemplateView @@ -49,23 +50,32 @@ def get_context_data(self, **kwargs: Any) -> dict[str, Any]: ctx["school"] = self.school return ctx - @transaction.atomic - def form_valid(self, form: SchoolRecordForm): # pyright: ignore - assert isinstance(self.request.user, User) - + def build_record(self, form: SchoolRecordForm) -> UserSchoolRecord: type_id, year = form.cleaned_data["start_year"].split(":") - start_date = form.cleaned_data["start_date"] - end_date = form.cleaned_data["end_date"] - - UserSchoolRecord.objects.end_active(self.request.user, start_date) - record = UserSchoolRecord( + return UserSchoolRecord( user=self.request.user, school=self.school, - start_date=start_date, - end_date=end_date, + start_date=form.cleaned_data["start_date"], + end_date=form.cleaned_data["end_date"], school_type_id=type_id, - start_year=year, + start_year=int(year), ) + + def form_valid(self, form: SchoolRecordForm): # pyright: ignore + record = self.build_record(form) + if not self.request.POST.get("confirmed"): + ctx = self.get_context_data(form=form) + ctx["confirmation"] = True + current_year = record.get_current_year_display(timezone.now().date()) + ctx["current_year"] = f"{current_year} ({record.school_type.short})" + return self.render_to_response(ctx) + + return self.save_record(form, record) + + @transaction.atomic + def save_record(self, form: SchoolRecordForm, record: UserSchoolRecord): + assert isinstance(self.request.user, User) + UserSchoolRecord.objects.end_active(self.request.user, record.start_date) try: record.full_clean() except ValidationError as e: