def event_change_reservation(request, event_id): if not has_access(request): raise PermissionDenied context = _create_details_context(request, event_id) context["active_tab"] = "reservation" event = context["event"] if not event.is_attendance_event(): messages.error(request, _("Dette er ikke et påmeldingsarrangement.")) return redirect("dashboard_event_details_active", event_id=event.id, active_tab="details") if request.method == "POST": if not event.attendance_event.has_reservation: reservation = Reservation(attendance_event=event.attendance_event, seats=0) reservation.save() context[ "change_reservation_form"] = dashboard_forms.ChangeReservationForm( instance=reservation) else: form = dashboard_forms.ChangeReservationForm( request.POST, instance=event.attendance_event.reserved_seats) if form.is_valid(): messages.success(request, _("Reservasjonen ble lagret.")) form.save() context["change_reservation_form"] = form return render(request, "events/dashboard/details.html", context)
def _create_details_context(request, event_id): """ Prepare a context to be shared for all detail views. """ event = get_object_or_404(Event, pk=event_id) # Start with adding base context and the event itself context = get_base_context(request) context["event"] = event # Add forms context["change_event_form"] = dashboard_forms.ChangeEventForm( instance=event) if event.is_attendance_event(): context[ "change_attendance_form"] = dashboard_forms.ChangeAttendanceEventForm( instance=event.attendance_event) if event.attendance_event.has_reservation: context[ "change_reservation_form"] = dashboard_forms.ChangeReservationForm( instance=event.attendance_event.reserved_seats) seats = event.attendance_event.reserved_seats.seats ReserveeFormSet = modelformset_factory( Reservee, max_num=seats, extra=seats, fields=["name", "note", "allergies"], ) context["change_reservees_formset"] = ReserveeFormSet( queryset=event.attendance_event.reserved_seats.reservees.all()) return context