Files
CenterPes/Client/viewsClient.py
2025-11-01 18:10:39 -03:00

62 lines
2.3 KiB
Python

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'