116 lines
4.4 KiB
Python
116 lines
4.4 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
|
|
from django.shortcuts import redirect
|
|
from django.contrib import messages
|
|
# importate para função ou no filtro
|
|
from django.db.models import Q
|
|
|
|
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/Detail.html'
|
|
permission_required = 'Client.view_client'
|
|
def post(self, request, *args, **kwargs):
|
|
self.object = self.get_object()
|
|
|
|
if request.POST.get('double_workload') == 'double_workload':
|
|
self.object.double_workload = not self.object.double_workload
|
|
|
|
if request.POST.get('late') == 'late':
|
|
self.object.late = not self.object.late
|
|
|
|
if request.POST.get('feed_back') == 'feed_back':
|
|
self.object.feed_back = not self.object.feed_back
|
|
|
|
if request.POST.get('msg_3_months') == 'msg_3_months':
|
|
self.object.msg_3_months = not self.object.msg_3_months
|
|
|
|
if request.POST.get('msg_6_months') == 'msg_6_months':
|
|
self.object.msg_6_months = not self.object.msg_6_months
|
|
|
|
if request.POST.get('msg_12_months') == 'msg_12_months':
|
|
self.object.msg_12_months = not self.object.msg_12_months
|
|
|
|
self.object.save()
|
|
return redirect('ClientDetailView', pk=self.object.id)
|
|
|
|
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 ClientUpdateResponsableView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
|
|
model = models.Client
|
|
template_name = 'Client/Update_responsable.html'
|
|
form_class = FormsClient.FormsClient
|
|
permission_required = 'Client.change_client'
|
|
|
|
def get_success_url(self):
|
|
return redirect('ClientDetailView', pk=self.object.pk)['Location']
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
search_term = self.request.GET.get('Client')
|
|
|
|
if search_term:
|
|
filter_client = models.Client.objects.filter(
|
|
Q(first_name__icontains=search_term) |
|
|
Q(last_name__icontains=search_term)
|
|
)
|
|
else:
|
|
filter_client = models.Client.objects.none()
|
|
|
|
context['Clients'] = filter_client
|
|
return context
|
|
|
|
def form_valid(self, form):
|
|
print(self.request)
|
|
form.instance.created_by = self.request.user
|
|
messages.success(self.request, 'Registro realizado com sucesso!')
|
|
return super().form_valid(form)
|
|
|
|
def form_invalid(self, form):
|
|
print(self.request)
|
|
errors = form.errors.as_text()
|
|
messages.error(self.request, f'Verifique os dados: {errors}')
|
|
return super().form_invalid(form)
|
|
|
|
class ClientDeleteView(LoginRequiredMixin, PermissionRequiredMixin, DeleteView):
|
|
model = models.Client
|
|
template_name = 'Client/Delete.html'
|
|
success_url = reverse_lazy('ClientListView')
|
|
permission_required = 'Client.delete_client'
|