from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView from django.contrib.auth.mixins import LoginRequiredMixin , PermissionRequiredMixin from Client import models, FormsClient from Movement.models import Calendar from django.urls import reverse_lazy # from django.core import serializers class ClientListView(LoginRequiredMixin, PermissionRequiredMixin, ListView): model = models.Client template_name = 'Client/List.html' context_object_name = 'Clients' # paginate_by = 5 permission_required = 'Client.view_client' def get_queryset(self): queryset = super().get_queryset() name = self.request.GET.get('name') number = self.request.GET.get('number') # all = self.request.GET.get('all') if name: queryset = queryset.filter(first_name__icontains=name) | queryset.filter(last_name__icontains=name) elif number: queryset = queryset.filter(phone__icontains=number) # elif all: # queryset = queryset.all() else: queryset = queryset.none() return queryset class ClientCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView): model = models.Client template_name = 'Client/Create.html' form_class = FormsClient.FormsClient success_url = reverse_lazy('ClientListView') permission_required = 'Client.add_client' class ClientDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView): model = models.Client template_name = 'Client/Detail.html' permission_required = 'Client.view_client' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['clients'] = Calendar.objects.filter( client__id=self.object.id ).order_by('-id').distinct()[:3] return context class ClientUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView): model = models.Client template_name = 'Client/Update.html' form_class = FormsClient.FormsClient success_url = reverse_lazy('ClientListView') permission_required = 'Client.change_client' class ClientDeleteView(LoginRequiredMixin, PermissionRequiredMixin, DeleteView): model = models.Client template_name = 'Client/Delete.html' success_url = reverse_lazy('ClientListView') permission_required = 'Client.delete_client'