from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin from Movement.Forms import FormsCalendar from Movement import models from Client.models import Client from django.urls import reverse_lazy from django.contrib import messages class CalendarCreateCustomView(LoginRequiredMixin, PermissionRequiredMixin, CreateView): model = models.Calendar template_name = 'Calendar/Create/index.html' form_class = FormsCalendar.FormsCalendar success_url = reverse_lazy('MovCalendarListView') permission_required = 'Base.add_' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # if self.request.GET.get('Client'): # filter_client = Client.objects.filter( # id=self.request.GET.get('Client') or '' # ) # else: filter_client = Client.objects.none() # context['Client'] = filter_client return context def get_form(self, form_class=None): form = super().get_form(form_class) client_id = self.request.GET.get('Client') or self.request.POST.get('client') if client_id: filter_client = Client.objects.filter(id=client_id) else: filter_client = Client.objects.none() form.fields['client'].queryset = filter_client.all() return form def form_valid(self, form): gross_value = form.instance.service.value net_value = gross_value - ((gross_value * form.instance.pay_method.percentage) / 100) value_cash = ((100 - form.instance.professional.percentage) * net_value) / 100 prof_money = (form.instance.professional.percentage * net_value) / 100 # form.instance.gross_value = gross_value form.instance.net_value = net_value form.instance.value_cash = value_cash form.instance.prof_money = prof_money 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): errors = form.errors.as_text() messages.error(self.request, f'Verifique os dados: {errors}') return super().form_invalid(form)