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'