172 lines
8.1 KiB
Python
172 lines
8.1 KiB
Python
from django import forms
|
|
from django.urls import reverse,reverse_lazy
|
|
from django.contrib.auth.mixins import LoginRequiredMixin,UserPassesTestMixin
|
|
from django.views.generic import DeleteView
|
|
from django.views.generic.list import ListView
|
|
from django.views.generic.edit import CreateView,UpdateView
|
|
from django.contrib import messages
|
|
from .models import Suspension_Modulos_Permisos_Cliente, SuspensionModulo, SuspensionPermiso,Modulo
|
|
from .forms import SuspensionModulosPermisosClienteForm, SuspensionPermisoFormSet,SuspensionModuloFormSet,SuspensionModuloFormSet2,SuspensionPermisoFormSetCreate
|
|
import time
|
|
|
|
class SuspensionPermisosClienteListView(LoginRequiredMixin,UserPassesTestMixin, ListView):
|
|
model= Suspension_Modulos_Permisos_Cliente
|
|
|
|
template_name='IMMEX/modulos/modulos_clientes.html'
|
|
def test_func(self):
|
|
res = self.request.user.groups.filter(name= 'admin_soft')
|
|
if not res:
|
|
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
|
return res
|
|
|
|
class SuspensionPermisosCliente_DeleteView(LoginRequiredMixin,UserPassesTestMixin, DeleteView):
|
|
model = Suspension_Modulos_Permisos_Cliente
|
|
success_url = reverse_lazy('permisos-clientesModulos')
|
|
def test_func(self):
|
|
res = self.request.user.groups.filter(name= 'admin_soft')
|
|
if not res:
|
|
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
|
return res
|
|
|
|
class SuspensionPermisosClienteCreateView(LoginRequiredMixin,UserPassesTestMixin, CreateView):
|
|
model = Suspension_Modulos_Permisos_Cliente
|
|
form_class = SuspensionModulosPermisosClienteForm
|
|
#success_url = '/IMMEX/permisos-clientes/'
|
|
template_name ='IMMEX/modulos/modulo-create.html'
|
|
def test_func(self):
|
|
res = self.request.user.groups.filter(name= 'admin_soft')
|
|
if not res:
|
|
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
|
return res
|
|
|
|
def get_success_url(self):
|
|
# Después de crear el objeto, redirige a la UpdateView correspondiente
|
|
return reverse('permisos-clientesModulos-update', kwargs={'pk': self.object.pk})
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
if self.request.POST:
|
|
context['modulo_formset'] = SuspensionModuloFormSet(self.request.POST, instance=self.object)
|
|
context['permiso_formset'] = SuspensionPermisoFormSetCreate(self.request.POST, instance=self.object)
|
|
else:
|
|
context['modulo_formset'] = SuspensionModuloFormSet(instance=self.object)
|
|
context['permiso_formset'] = SuspensionPermisoFormSetCreate(instance=self.object)
|
|
|
|
for form in context['permiso_formset'].forms:
|
|
form.fields['modulo_extra'].widget = forms.HiddenInput()
|
|
form.fields['modulo_extra'].queryset = SuspensionModulo.objects.none()
|
|
form.fields['suspension_modulo'].queryset = Modulo.objects.all()
|
|
form.fields['suspension_modulo'].widget = forms.HiddenInput()
|
|
|
|
return context
|
|
|
|
def form_valid(self, form):
|
|
context = self.get_context_data()
|
|
modulo_formset = context['modulo_formset']
|
|
permiso_formset = context['permiso_formset']
|
|
|
|
|
|
if modulo_formset.is_valid() and permiso_formset.is_valid():
|
|
self.object = form.save() # Guardamos el objeto principal
|
|
|
|
# Guardar SuspensionModulo
|
|
modulo_formset.instance = self.object
|
|
modulo_formset.save()
|
|
|
|
for modulo in self.object.suspensionmodulo_set.all():
|
|
for permiso in modulo.modulo.permisos.all():
|
|
permObj,created=SuspensionPermiso.objects.get_or_create(
|
|
supension_modPermP=self.object,
|
|
suspension_modulo=modulo.modulo,
|
|
permiso=permiso,
|
|
)
|
|
|
|
# permiso_formset.instance= self.object
|
|
# permiso_formset.save()
|
|
|
|
# for permiso in self.object.suspensionpermiso_set.all():
|
|
# # print(permiso.permiso,'iud',permiso.supension_modPermP.id)
|
|
# # print(permiso.supension_modPermP,permiso.suspension_modulo)
|
|
# suspension_modulo = self.object.suspensionmodulo_set.filter(
|
|
# supension_modPerm_id=self.object,
|
|
# # suspension_modulo = SuspensionModulo.objects.filter(supension_modPerm_id=self.object,
|
|
# modulo__permisos__in=[permiso.permiso]
|
|
# ).first()
|
|
# #print('suspMod',(suspension_modulo))
|
|
|
|
# permiso.suspension_modulo=suspension_modulo.modulo
|
|
# permiso.save()
|
|
|
|
|
|
return super().form_valid(form)
|
|
else:
|
|
return self.render_to_response(self.get_context_data(form=form))
|
|
|
|
class SuspensionPermisosCliente_UpdateView(LoginRequiredMixin,UserPassesTestMixin, UpdateView):
|
|
model = Suspension_Modulos_Permisos_Cliente
|
|
form_class = SuspensionModulosPermisosClienteForm
|
|
success_url = '/IMMEX/permisos-clientes/'
|
|
template_name ='IMMEX/modulos/edit_permisos.html'
|
|
|
|
def test_func(self):
|
|
res = self.request.user.groups.filter(name= 'admin_soft')
|
|
if not res:
|
|
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
|
return res
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
if self.request.POST:
|
|
context['modulo_formset'] = SuspensionModuloFormSet(self.request.POST, instance=self.object)
|
|
context['permiso_formset'] = SuspensionPermisoFormSet(self.request.POST,instance=self.object)
|
|
|
|
|
|
else:
|
|
context['modulo_formset'] = SuspensionModuloFormSet2(instance=self.object)
|
|
|
|
|
|
context['permiso_formset'] = SuspensionPermisoFormSet(instance=self.object)
|
|
for form in context['permiso_formset'].forms:
|
|
form.fields['modulo_extra'].widget = forms.HiddenInput()
|
|
form.fields['modulo_extra'].queryset = SuspensionModulo.objects.none()
|
|
form.fields['suspension_modulo'].queryset = Modulo.objects.all()
|
|
#form.fields['suspension_modulo'].widget = forms.HiddenInput()
|
|
#form.fields['permiso'].widget.attrs['disabled'] = True
|
|
|
|
return context
|
|
|
|
def form_valid(self, form):
|
|
context = self.get_context_data()
|
|
modulo_formset = context['modulo_formset']
|
|
permiso_formset = context['permiso_formset']
|
|
print('permiupdate',permiso_formset.is_valid())
|
|
if form.is_valid() and modulo_formset.is_valid() and permiso_formset.is_valid():
|
|
self.object = form.save()
|
|
modulo_formset.instance = self.object
|
|
|
|
modulo_formset.save()
|
|
print('MODULOS',self.object.suspensionmodulo_set.all().values())
|
|
|
|
permiso_formset.instance= self.object
|
|
permiso_formset.save()
|
|
for permiso in self.object.suspensionpermiso_set.all():
|
|
print('permiso:',permiso.permiso,'iud',permiso.supension_modPermP.id)
|
|
print('MODULO PERMISO:',permiso.suspension_modulo)
|
|
suspension_modulo = self.object.suspensionmodulo_set.filter(
|
|
supension_modPerm_id=self.object,
|
|
# suspension_modulo = SuspensionModulo.objects.filter(supension_modPerm_id=self.object,
|
|
modulo__permisos__in=[permiso.permiso]
|
|
).first()
|
|
if not suspension_modulo == None:
|
|
print('suspMod',(suspension_modulo))
|
|
print()
|
|
permiso.suspension_modulo=suspension_modulo.modulo
|
|
permiso.save()
|
|
else:
|
|
permiso.delete()
|
|
|
|
|
|
return super().form_valid(form)
|
|
else:
|
|
return self.render_to_response(self.get_context_data(form=form)) |