62 lines
2.3 KiB
Python
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'
|