from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView from django.contrib.auth.mixins import LoginRequiredMixin , PermissionRequiredMixin from Movement.Forms import FormsExpense from Movement import models from Base.models import ChartOfAccount from django.urls import reverse_lazy from django.contrib import messages from django.utils import timezone class ExpenseListView(LoginRequiredMixin, PermissionRequiredMixin, ListView): model = models.Expense template_name = 'Expense/List.html' context_object_name = 'Expenses' paginate_by = 10 permission_required = 'Base.view_professional' def get_queryset(self): queryset = super().get_queryset() date = self.request.GET.get('date') if date: queryset = queryset.filter(date__icontains=date) else: queryset = queryset.filter( date__icontains=timezone.localtime(timezone.now()).month ) return queryset class ExpenseCreateView(LoginRequiredMixin,PermissionRequiredMixin, CreateView): model = models.Expense template_name = 'Expense/Create.html' form_class = FormsExpense.FormsExpense success_url = reverse_lazy('MovExpenseListView') permission_required = 'Base.add_professional' class ExpenseDetailView(LoginRequiredMixin,PermissionRequiredMixin, DetailView): model = models.Expense template_name = 'Expense/Detail.html' permission_required = 'Base.view_professional' class ExpenseUpdateView(LoginRequiredMixin,PermissionRequiredMixin, UpdateView): model = models.Expense template_name = 'Expense/Update.html' form_class = FormsExpense.FormsExpense success_url = reverse_lazy('ExpenseListView') permission_required = 'Base.change_professional' class ExpenseDeleteView(LoginRequiredMixin,PermissionRequiredMixin, DeleteView): model = models.Expense template_name = 'Expense/Delete.html' success_url = reverse_lazy('MovExpenseListView') permission_required = 'Base.delete_professional' class ExpenseFirmCreateView(LoginRequiredMixin,PermissionRequiredMixin, CreateView): model = models.Expense template_name = 'Expense/CreateFirm.html' form_class = FormsExpense.FormsExpense success_url = reverse_lazy('MovExpenseListView') permission_required = 'Base.add_professional' def get_form(self, form_class=None): form = super().get_form(form_class) form.fields['chart_of_account'].queryset = ChartOfAccount.objects.filter( firm=True, debit=True, ) return form def form_valid(self, form): form.instance.firm = True 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) class ExpenseProfCreateView(LoginRequiredMixin,PermissionRequiredMixin, CreateView): model = models.Expense template_name = 'Expense/CreateProf.html' form_class = FormsExpense.FormsExpense success_url = reverse_lazy('MovExpenseListView') permission_required = 'Base.add_professional' def get_form(self, form_class=None): form = super().get_form(form_class) form.fields['chart_of_account'].queryset = ChartOfAccount.objects.filter( firm=False, debit=True, ) return form def form_valid(self, form): form.instance.firm = False 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)