def event_change_attendance(request, event_id): context = _create_details_context(request, event_id) context['active_tab'] = 'attendance' event = context['event'] if not event.is_attendance_event(): registration_start = datetime.combine( event.event_start - timedelta(days=7), time(12, 0, 0)) timezone.make_aware(registration_start, timezone.get_current_timezone()) unattend_deadline = registration_start + timedelta(days=5) registration_end = registration_start + timedelta(days=6) attendance_event = AttendanceEvent( event=event, max_capacity=0, registration_start=registration_start, unattend_deadline=unattend_deadline, registration_end=registration_end) attendance_event.save() context[ 'change_attendance_form'] = dashboard_forms.ChangeAttendanceEventForm( instance=event.attendance_event) else: if request.method == 'POST': form = dashboard_forms.ChangeAttendanceEventForm( request.POST, instance=event.attendance_event) if form.is_valid(): form.save() messages.success(request, _("Påmeldingsdetaljer ble lagret.")) context['change_attendance_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
def event_change_attendees(request, event_id, active_tab="attendees"): if not has_access(request): raise PermissionDenied context = _create_details_context(request, event_id) context["active_tab"] = "attendees" 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") # AJAX if request.method == "POST": if request.is_ajax and "action" in request.POST: if not event.is_attendance_event: return HttpResponse( _("Dette er ikke et påmeldingsarrangement."), status=400) return JsonResponse(event_ajax_handler(event, request)) # NON AJAX context = get_base_context(request) context["event"] = event context["active_tab"] = active_tab extras = {} if event.is_attendance_event() and event.attendance_event.extras: for extra in event.attendance_event.extras.all(): extras[extra] = { "type": extra, "attending": 0, "waits": 0, "allergics": [] } count_extras(extras, "attending", event.attendance_event.attending_attendees_qs) count_extras(extras, "waits", event.attendance_event.waitlist_qs) 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) prices = _payment_prices(event.attendance_event) context["payment_prices"] = prices[0] context["payment_price_summary"] = prices[1] context["extras"] = extras context["change_event_form"] = dashboard_forms.ChangeEventForm( instance=event) return render(request, "events/dashboard/details.html", context)