import csv import json from django import http from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin from django.core.serializers.json import DjangoJSONEncoder from django.shortcuts import get_object_or_404, redirect from django.urls import reverse, reverse_lazy from django.utils import timezone from django.views import generic from django_weasyprint import WeasyTemplateResponseMixin from icalendar import Calendar, Event, vCalAddress, vText from la_chariotte.order.models import GroupedOrder from la_chariotte.order.views.mixins import UserIsOrgaMixin from ..forms import LieuForm from ..models import Lieu class IndexView(LoginRequiredMixin, generic.ListView): """View showing all the grouped orders managed by the authenticated user""" template_name = "lieu/index.html" context_object_name = "lieu_context" def get_queryset(self): lieux = Lieu.objects.filter(orga=self.request.user) commandes_par_lieu = dict() for lieu in lieux: orders = GroupedOrder.objects.all().filter(placekey=lieu) if orders: commandes_par_lieu[lieu.url] = orders return { "lieu_liste": lieux, "commandes": commandes_par_lieu, } class LieuDetailView(generic.DetailView): model = Lieu template_name = "lieu/lieu_detail.html" context_object_name = "lieu_context" form_class = LieuForm def get_object(self, queryset=None): return get_object_or_404(Lieu, url=self.kwargs.get("url")) def get_context_data(self, **kwargs): lieu = self.get_object() context = super().get_context_data(**kwargs) return context class LieuUpdateView(UserIsOrgaMixin, generic.UpdateView): model = Lieu template_name = "lieu/lieu_update.html" context_object_name = "lieu" form_class = LieuForm # Can't change URL after creation form_class.base_fields["url"].disabled = True def get_object(self, queryset=None): return get_object_or_404(Lieu, url=self.kwargs.get("url")) def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs["user"] = self.request.user return kwargs class LieuCreateView(LoginRequiredMixin, generic.CreateView): model = Lieu form_class = LieuForm template_name = "lieu/lieu_create.html" def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs["user"] = self.request.user return kwargs def form_valid(self, form): self.object = form.save() return super().form_valid(form)