Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions trojstenid/schools/templates/settings/school_create.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,28 @@ <h2 class="text-xl font-bold text-gray-900">Nový záznam o škole</h2>
</div>
{% endif %}
</div>
{% form form %}
<div>
<button class="btn btn-blue" type="submit">Uložiť</button>
</div>
{% if confirmation %}
<div class="rounded-md bg-blue-50 p-4 text-blue-900">
Podľa zadaných údajov navštevuješ tento školský rok
<strong>{{ current_year }}</strong> na škole <strong>{{ school }}</strong>.
Je to správne?
Comment thread
gardenerik marked this conversation as resolved.
</div>

<input type="hidden" name="confirmed" value="1">
{% for field in form %}
{{ field.as_hidden }}
{% endfor %}

<div class="flex gap-2">
<button class="btn btn-blue" type="submit">Áno, uložiť</button>
<button class="btn btn-black" type="button" onclick="history.back()">Nie, upraviť</button>
</div>
{% else %}
{% form form %}
<div>
<button class="btn btn-blue" type="submit">Pokračovať</button>
</div>
{% endif %}
</form>
{% endif %}
</div>
Expand Down
34 changes: 22 additions & 12 deletions trojstenid/schools/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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:
Expand Down
Loading