Sistemas Clientes modulos permisos finished
This commit is contained in:
@@ -145,10 +145,10 @@ else:
|
||||
DATABASES={
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.mysql',
|
||||
'NAME': 'Aduanasoft$cfdi_as',
|
||||
'USER': 'Aduanasoft',
|
||||
'NAME': 'fjrodriguez$default',
|
||||
'USER': 'fjrodriguez',
|
||||
'PASSWORD':'Soluciones28@',
|
||||
'HOST': 'Aduanasoft.mysql.pythonanywhere-services.com',
|
||||
'HOST': 'fjrodriguez.mysql.pythonanywhere-services.com',
|
||||
'PORT': '3306',
|
||||
'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
|
||||
}
|
||||
@@ -12,4 +12,9 @@ class TimbresSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Timbres
|
||||
fields = ['uuid','rfcc','fecha','folio','serie','tipo','rfcp','modo']
|
||||
|
||||
class CancelaSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Timbres
|
||||
fields=['uuid','rfcc','rfcp']
|
||||
|
||||
@@ -24,7 +24,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
from .custom_decorators import is_staff_access, http_basic_auth
|
||||
from .models import Clientes,Timbres,saldoModel,ErroresTimbres
|
||||
from Sistemas.models import BitacoraErrores
|
||||
from .serailizers import ClienteSerializer,TimbresSerializer
|
||||
from .serailizers import ClienteSerializer,TimbresSerializer,CancelaSerializer
|
||||
from .forms import ClienteForm,EmailForm
|
||||
|
||||
from rest_framework.views import APIView
|
||||
@@ -438,9 +438,25 @@ class CancelaTimbre(APIView):
|
||||
msn = f'UUID:{UUID} \nCliente:{rfcc} \n {str(ex)}'
|
||||
BitacoraErrores.objects.create(level=2, message=msn, traceback=traceback.format_exc(), view='Sistemas.CancelaTimbre')
|
||||
return Response({'Error':f'{ex}','isError':True})
|
||||
|
||||
def get(self,request,*args, **kwargs):
|
||||
uuid=request.query_params.get('uuid',None)
|
||||
tim=Timbres.objects.filter(uuid=uuid).first()
|
||||
if tim is not None:
|
||||
print(tim.rfcp)
|
||||
|
||||
return Response({"rfcp":tim.rfcp,"detail":""})
|
||||
|
||||
return Response({"rfcp":"",'detail':"404 not found uuid"})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class add_timbre(APIView):
|
||||
pass
|
||||
|
||||
|
||||
@@ -57,99 +57,54 @@ class ActiveTokenSession_Admin(admin.ModelAdmin):
|
||||
class SuspensionPermisoInline(admin.TabularInline):
|
||||
model = SuspensionPermiso
|
||||
extra = 1
|
||||
def get_formset(self, request, obj=None, **kwargs):
|
||||
# Utiliza el objeto 'obj' (el módulo actual) para filtrar el queryset
|
||||
formset = super().get_formset(request, obj, **kwargs)
|
||||
# def get_formset(self, request, obj=None, **kwargs):
|
||||
# # Utiliza el objeto 'obj' (el módulo actual) para filtrar el queryset
|
||||
# formset = super().get_formset(request, obj, **kwargs)
|
||||
|
||||
if obj:
|
||||
print('SDL',obj.modulo.permisos.all())
|
||||
formset.form.base_fields['permiso'].queryset = obj.modulo.permisos.all()
|
||||
return formset
|
||||
# if obj:
|
||||
# print('SDL',obj.modulo.permisos.all())
|
||||
# formset.form.base_fields['permiso'].queryset = obj.modulo.permisos.all()
|
||||
# return formset
|
||||
|
||||
class SuspensionModuloInline(admin.TabularInline):
|
||||
model = SuspensionModulo
|
||||
|
||||
|
||||
class SuspensionModuloAdmin(admin.ModelAdmin):
|
||||
list_display = ['modulo','suspendido','supension_modPerm_id']
|
||||
inlines=[SuspensionPermisoInline]
|
||||
|
||||
|
||||
class Suspension_Modulos_Permisos_ClienteAdmin(admin.ModelAdmin):
|
||||
inlines = [SuspensionModuloInline]
|
||||
inlines = [SuspensionModuloInline,SuspensionPermisoInline]
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
for modulo in obj.suspensionmodulo_set.all():
|
||||
print(modulo, 'permisos',modulo.modulo.permisos.all())
|
||||
for permiso in modulo.modulo.permisos.all():
|
||||
print('borrar?',permiso.delete)
|
||||
|
||||
permObj,created=SuspensionPermiso.objects.get_or_create(
|
||||
suspension_modulo=modulo,
|
||||
supension_modPermP=obj,
|
||||
suspension_modulo=modulo.modulo,
|
||||
permiso=permiso,
|
||||
)
|
||||
print(permObj,created)
|
||||
if permiso.delete:
|
||||
print('borrar')
|
||||
|
||||
|
||||
|
||||
class SuspensionPermisoInline2(admin.TabularInline):
|
||||
model = SuspensionPermiso
|
||||
|
||||
class SuspensionPemisoAdmin(admin.ModelAdmin):
|
||||
inlines=[SuspensionPermisoInline2]
|
||||
|
||||
admin.site.register(Modulo)
|
||||
|
||||
admin.site.register(Permisos_A24)
|
||||
admin.site.register(Modulo)
|
||||
admin.site.register(SuspensionModulo,SuspensionModuloAdmin)
|
||||
|
||||
admin.site.register(SuspensionPermiso)
|
||||
admin.site.register(Suspension_Modulos_Permisos_Cliente, Suspension_Modulos_Permisos_ClienteAdmin)
|
||||
# class Permisos_A24_Admin(admin.ModelAdmin):
|
||||
# list_display =['nombre']
|
||||
# search_fields = ['nombre']
|
||||
|
||||
# class Modulo_Admin(admin.ModelAdmin):
|
||||
# list_display=('nombre','sistema_cliente'
|
||||
# #,'lista_permisos'
|
||||
# )
|
||||
# filter_horizontal = ['permisos']
|
||||
|
||||
|
||||
# class SuspensionPermisoInline(admin.TabularInline):
|
||||
# model = SuspensionPermiso
|
||||
# extra = 1 # Puedes ajustar esto según tus necesidades
|
||||
|
||||
# class SuspensionModuloInline(admin.TabularInline):
|
||||
# model = SuspensionModulo
|
||||
# extra = 1 # Ajusta según tus necesidades
|
||||
|
||||
# class SuspensionModulo_Admin(admin.ModelAdmin):
|
||||
# list_display=['modulo','cliente_nombre','dispositivo','custom_suspendido']
|
||||
# search_fields = ['dispositivo__clienteA24__Nombre', 'dispositivo__clienteA24__RFC']
|
||||
|
||||
# def cliente_nombre(self, obj):
|
||||
# return f'{obj.dispositivo.clienteA24.Nombre}({obj.dispositivo.clienteA24.RFC})' \
|
||||
# if obj.dispositivo and obj.dispositivo.clienteA24 else "N/A"
|
||||
# cliente_nombre.short_description = 'Nombre del Cliente(RFC)' # Puedes personalizar el encabezado si lo deseas
|
||||
|
||||
# def custom_suspendido(self,obj):
|
||||
# return "Sí" if obj.suspendido else "No"
|
||||
|
||||
# custom_suspendido.short_description = 'Suspendido'
|
||||
|
||||
|
||||
# class ModuloInline(admin.TabularInline):
|
||||
# model = Modulo
|
||||
# extra =1
|
||||
# autocomplete_fields = ['permisos']
|
||||
|
||||
# class Sistema_x_ClienteAdmin(admin.ModelAdmin):
|
||||
# inlines = [ModuloInline]
|
||||
# search_fields = ['modulos__nombre', 'modulos__permisos__nombre']
|
||||
# list_filter =('modulo__permisos__nombre',)
|
||||
|
||||
# class Device_A24_Admin2(admin.ModelAdmin):
|
||||
# inlines = [SuspensionPermisoInline, SuspensionModuloInline]
|
||||
|
||||
|
||||
|
||||
# admin.site.register(SuspensionPermiso)
|
||||
# admin.site.register(SuspensionModulo,SuspensionModulo_Admin)
|
||||
|
||||
# admin.site.register(Permisos_A24,Permisos_A24_Admin)
|
||||
# admin.site.register(Modulo,Modulo_Admin)
|
||||
|
||||
|
||||
admin.site.register(Sistemas_por_cliente_A24)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from django import forms
|
||||
from .models import ClientesA24
|
||||
from django.forms import inlineformset_factory
|
||||
from .models import ClientesA24, Suspension_Modulos_Permisos_Cliente,SuspensionModulo,SuspensionPermiso,Modulo
|
||||
from datetime import datetime
|
||||
|
||||
class ClienteForm_IMMEX(forms.ModelForm):
|
||||
@@ -21,4 +22,55 @@ class ClienteForm_IMMEX(forms.ModelForm):
|
||||
|
||||
if Activo and fecha_baja:
|
||||
self._errors['fecha_baja'] = self.error_class(["El parametro activo no puede estar seleccionado si hay fecha de baja"])
|
||||
return self.cleaned_data
|
||||
return self.cleaned_data
|
||||
|
||||
class SuspensionModulosPermisosClienteForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Suspension_Modulos_Permisos_Cliente
|
||||
fields = '__all__'
|
||||
|
||||
class SuspensionPermisoForm(forms.ModelForm):
|
||||
modulo_extra = forms.ModelChoiceField(queryset=SuspensionModulo.objects.all(), required=False, label='Reasignar Modulo')
|
||||
class Meta:
|
||||
model = SuspensionPermiso
|
||||
fields = '__all__'
|
||||
|
||||
class SuspensionModuloForm(forms.ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = SuspensionModulo
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
SuspensionModuloFormSet = inlineformset_factory(
|
||||
Suspension_Modulos_Permisos_Cliente,
|
||||
SuspensionModulo,
|
||||
form=SuspensionModuloForm,
|
||||
extra=5,
|
||||
can_delete=False,
|
||||
)
|
||||
|
||||
#se usa "SuspensionModuloFormSet2" en el UpdateView para pasar el Extra igual a cero
|
||||
SuspensionModuloFormSet2 = inlineformset_factory(
|
||||
Suspension_Modulos_Permisos_Cliente,
|
||||
SuspensionModulo,
|
||||
form=SuspensionModuloForm,
|
||||
extra=1,
|
||||
can_delete=True,
|
||||
)
|
||||
|
||||
SuspensionPermisoFormSetCreate = inlineformset_factory(
|
||||
Suspension_Modulos_Permisos_Cliente, # Modelo padre
|
||||
SuspensionPermiso, # Modelo hijo
|
||||
form=SuspensionPermisoForm,
|
||||
extra=3,
|
||||
can_delete=True,
|
||||
)
|
||||
|
||||
SuspensionPermisoFormSet = inlineformset_factory(
|
||||
Suspension_Modulos_Permisos_Cliente, # Modelo padre
|
||||
SuspensionPermiso, # Modelo hijo
|
||||
form=SuspensionPermisoForm,
|
||||
extra=0,
|
||||
can_delete=True,
|
||||
)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 4.1.3 on 2023-11-23 05:26
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('IMMEX', '0006_remove_modulo_sistema_cliente'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='suspensionpermiso',
|
||||
name='supension_modPermP',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='IMMEX.suspension_modulos_permisos_cliente'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.1.3 on 2023-11-23 21:16
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('IMMEX', '0007_suspensionpermiso_supension_modpermp'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='suspensionpermiso',
|
||||
name='suspension_modulo',
|
||||
field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='IMMEX.suspensionmodulo'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.1.3 on 2023-11-23 21:38
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('IMMEX', '0008_alter_suspensionpermiso_suspension_modulo'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='suspensionpermiso',
|
||||
name='suspension_modulo',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='IMMEX.suspensionmodulo'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.1.3 on 2023-11-23 21:43
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('IMMEX', '0009_alter_suspensionpermiso_suspension_modulo'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='suspensionpermiso',
|
||||
name='suspension_modulo',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='IMMEX.modulo'),
|
||||
),
|
||||
]
|
||||
@@ -105,12 +105,16 @@ class SuspensionModulo(models.Model):
|
||||
|
||||
|
||||
class SuspensionPermiso(models.Model):
|
||||
suspension_modulo = models.ForeignKey(SuspensionModulo, on_delete=models.CASCADE)
|
||||
supension_modPermP = models.ForeignKey(Suspension_Modulos_Permisos_Cliente, on_delete=models.CASCADE)
|
||||
suspension_modulo = models.ForeignKey(Modulo, on_delete=models.CASCADE,blank=True,null=True)
|
||||
permiso = models.ForeignKey(Permisos_A24, on_delete=models.CASCADE)
|
||||
suspendido = models.BooleanField(default=False)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'{self.permiso}'
|
||||
|
||||
class Meta:
|
||||
ordering=['suspension_modulo']
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from django.urls import path, include
|
||||
from . import views
|
||||
from . import viewsPermisos
|
||||
from rest_framework import routers
|
||||
|
||||
router = routers.DefaultRouter()
|
||||
@@ -25,5 +26,10 @@ urlpatterns = [
|
||||
path('api/admin/', include(router.urls)),
|
||||
|
||||
path('api/checar_permisos/',views.ChecarPermisos.as_view(), name='api_ChecarPermisos'),
|
||||
path('permisos-clientes/',viewsPermisos.SuspensionPermisosClienteListView.as_view(),name='permisos-clientesModulos'),
|
||||
path('permisos-clientes-create/',viewsPermisos.SuspensionPermisosClienteCreateView.as_view(),name='permisos-clientesModulos-create'),
|
||||
path('permisos-clientes-update/<int:pk>/',viewsPermisos.SuspensionPermisosCliente_UpdateView.as_view(),name='permisos-clientesModulos-update'),
|
||||
path('permisos-clientes-delete/<int:pk>/',viewsPermisos.SuspensionPermisosCliente_DeleteView.as_view(),name='permisos-clientesModulos-delete'),
|
||||
|
||||
|
||||
]
|
||||
@@ -194,6 +194,8 @@ class RegistroUsuarios(APIView):
|
||||
from_email='aduanasoftpruebas@gmail.com',
|
||||
recipient_list=[email],
|
||||
)
|
||||
|
||||
|
||||
class Check_IMMEX_RFC(APIView):
|
||||
"""Verifica que el cliente pueda Timbrar"""
|
||||
|
||||
@@ -217,7 +219,6 @@ class Check_IMMEX_RFC(APIView):
|
||||
return Response({'Error':f'check_RFC:{E} RFC:{rfc}','isError':True})
|
||||
|
||||
|
||||
|
||||
class RegisterIMMEX_Device_APIView(APIView):
|
||||
"""Register IMMEX Devices
|
||||
se manda el siguiente JSON
|
||||
|
||||
172
IMMEX/viewsPermisos.py
Normal file
172
IMMEX/viewsPermisos.py
Normal file
@@ -0,0 +1,172 @@
|
||||
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))
|
||||
39
Templates/IMMEX/modulos/edit_permisos.html
Normal file
39
Templates/IMMEX/modulos/edit_permisos.html
Normal file
@@ -0,0 +1,39 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load widget_tweaks %}
|
||||
|
||||
{% block title %}Add Cliente IMMEX {% endblock title %}
|
||||
|
||||
{% block content %}
|
||||
<h2>Crear Módulo/Permisos</h2>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
|
||||
<h3>Selecciona Módulo</h3>
|
||||
{{ modulo_formset.management_form }}
|
||||
{% for form in modulo_formset.forms %}
|
||||
<div class="form-group">
|
||||
{{ form}}
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
<h3>Selecciona Permisos para modulo</h3>
|
||||
<div class="">
|
||||
|
||||
{{ permiso_formset.management_form }}
|
||||
{% for form in permiso_formset.forms %}
|
||||
<div class="form-group">
|
||||
{{ form }}
|
||||
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-outline-success">Guardar</button>
|
||||
</form>
|
||||
{% endblock %}
|
||||
36
Templates/IMMEX/modulos/modulo-create.html
Normal file
36
Templates/IMMEX/modulos/modulo-create.html
Normal file
@@ -0,0 +1,36 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load widget_tweaks %}
|
||||
|
||||
{% block title %}Add Cliente IMMEX {% endblock title %}
|
||||
|
||||
{% block content %}
|
||||
<h2>Crear Módulo/Permisos</h2>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
|
||||
<h3>Selecciona Módulo</h3>
|
||||
{{ modulo_formset.management_form }}
|
||||
{% for form in modulo_formset.forms %}
|
||||
{{ form.as_table }}
|
||||
|
||||
{% endfor %}
|
||||
|
||||
<h3>Selecciona Permisos para modulo</h3>
|
||||
<div class="">
|
||||
|
||||
{{ permiso_formset.management_form }}
|
||||
{% for form in permiso_formset.forms %}
|
||||
<div class="form-group">
|
||||
{{ form }}
|
||||
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-outline-success">Guardar</button>
|
||||
</form>
|
||||
{% endblock %}
|
||||
83
Templates/IMMEX/modulos/modulos_clientes.html
Normal file
83
Templates/IMMEX/modulos/modulos_clientes.html
Normal file
@@ -0,0 +1,83 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block title %}Add Modulos Por cliente {% endblock title %}
|
||||
|
||||
{% block content %}
|
||||
<table class="table">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Sistema-cliente</th>
|
||||
<th><a class="btn btn-info" href="{% url 'permisos-clientesModulos-create' %}">Agregar Modulos por cliente</a></th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for row in object_list %}
|
||||
<tr>
|
||||
<th>{{row.id}}</th>
|
||||
<th scope="row">{{row.sistema_cliente}}</th>
|
||||
<th>
|
||||
<div class="row ml-2">
|
||||
<div class="row-col mr-1">
|
||||
<a class="btn btn-outline-info" href="{% url 'permisos-clientesModulos-update' row.pk %}">Edit</a>
|
||||
</div>
|
||||
|
||||
<div class="row-col">
|
||||
<button type="button" class="btn btn-danger" onclick="llamarAction(`{% url 'permisos-clientesModulos-delete' row.pk %}`)">
|
||||
Eliminar
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
|
||||
|
||||
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<form id="delete-form" method="post" >
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="next" value="{% url 'permisos-clientesModulos' %}">
|
||||
Seguro que deseas borrar el registro ?
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
<button type="submmit" class="btn btn-danger">Eliminar</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
function addAction(url){
|
||||
var formulario = document.getElementById('delete-form');
|
||||
formulario.setAttribute('action',url);
|
||||
}
|
||||
function llamarAction(nuevaRuta) {
|
||||
console.log(nuevaRuta)
|
||||
addAction(nuevaRuta);
|
||||
|
||||
// Aquí puedes agregar cualquier otra lógica que desees realizar cuando se presiona el botón
|
||||
// Por ejemplo, mostrar el modal
|
||||
$('#exampleModal').modal('show');
|
||||
}
|
||||
</script>
|
||||
{% endblock content %}
|
||||
Reference in New Issue
Block a user