Sistemas Clientes modulos permisos finished

This commit is contained in:
fjrodriguez
2023-11-30 10:42:06 -06:00
parent 61cf354a79
commit 607790896b
16 changed files with 523 additions and 77 deletions

View File

@@ -145,10 +145,10 @@ else:
DATABASES={ DATABASES={
'default': { 'default': {
'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'django.db.backends.mysql',
'NAME': 'Aduanasoft$cfdi_as', 'NAME': 'fjrodriguez$default',
'USER': 'Aduanasoft', 'USER': 'fjrodriguez',
'PASSWORD':'Soluciones28@', 'PASSWORD':'Soluciones28@',
'HOST': 'Aduanasoft.mysql.pythonanywhere-services.com', 'HOST': 'fjrodriguez.mysql.pythonanywhere-services.com',
'PORT': '3306', 'PORT': '3306',
'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"}, 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
} }

View File

@@ -13,3 +13,8 @@ class TimbresSerializer(serializers.ModelSerializer):
model = Timbres model = Timbres
fields = ['uuid','rfcc','fecha','folio','serie','tipo','rfcp','modo'] fields = ['uuid','rfcc','fecha','folio','serie','tipo','rfcp','modo']
class CancelaSerializer(serializers.ModelSerializer):
class Meta:
model = Timbres
fields=['uuid','rfcc','rfcp']

View File

@@ -24,7 +24,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from .custom_decorators import is_staff_access, http_basic_auth from .custom_decorators import is_staff_access, http_basic_auth
from .models import Clientes,Timbres,saldoModel,ErroresTimbres from .models import Clientes,Timbres,saldoModel,ErroresTimbres
from Sistemas.models import BitacoraErrores from Sistemas.models import BitacoraErrores
from .serailizers import ClienteSerializer,TimbresSerializer from .serailizers import ClienteSerializer,TimbresSerializer,CancelaSerializer
from .forms import ClienteForm,EmailForm from .forms import ClienteForm,EmailForm
from rest_framework.views import APIView from rest_framework.views import APIView
@@ -439,6 +439,22 @@ class CancelaTimbre(APIView):
BitacoraErrores.objects.create(level=2, message=msn, traceback=traceback.format_exc(), view='Sistemas.CancelaTimbre') BitacoraErrores.objects.create(level=2, message=msn, traceback=traceback.format_exc(), view='Sistemas.CancelaTimbre')
return Response({'Error':f'{ex}','isError':True}) 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): class add_timbre(APIView):

View File

@@ -57,99 +57,54 @@ class ActiveTokenSession_Admin(admin.ModelAdmin):
class SuspensionPermisoInline(admin.TabularInline): class SuspensionPermisoInline(admin.TabularInline):
model = SuspensionPermiso model = SuspensionPermiso
extra = 1 extra = 1
def get_formset(self, request, obj=None, **kwargs): # def get_formset(self, request, obj=None, **kwargs):
# Utiliza el objeto 'obj' (el módulo actual) para filtrar el queryset # # Utiliza el objeto 'obj' (el módulo actual) para filtrar el queryset
formset = super().get_formset(request, obj, **kwargs) # formset = super().get_formset(request, obj, **kwargs)
if obj: # if obj:
print('SDL',obj.modulo.permisos.all()) # print('SDL',obj.modulo.permisos.all())
formset.form.base_fields['permiso'].queryset = obj.modulo.permisos.all() # formset.form.base_fields['permiso'].queryset = obj.modulo.permisos.all()
return formset # return formset
class SuspensionModuloInline(admin.TabularInline): class SuspensionModuloInline(admin.TabularInline):
model = SuspensionModulo model = SuspensionModulo
class SuspensionModuloAdmin(admin.ModelAdmin):
list_display = ['modulo','suspendido','supension_modPerm_id']
inlines=[SuspensionPermisoInline]
class Suspension_Modulos_Permisos_ClienteAdmin(admin.ModelAdmin): class Suspension_Modulos_Permisos_ClienteAdmin(admin.ModelAdmin):
inlines = [SuspensionModuloInline] inlines = [SuspensionModuloInline,SuspensionPermisoInline]
def save_model(self, request, obj, form, change): def save_model(self, request, obj, form, change):
super().save_model(request, obj, form, change) super().save_model(request, obj, form, change)
for modulo in obj.suspensionmodulo_set.all(): for modulo in obj.suspensionmodulo_set.all():
print(modulo, 'permisos',modulo.modulo.permisos.all())
for permiso in modulo.modulo.permisos.all(): for permiso in modulo.modulo.permisos.all():
print('borrar?',permiso.delete)
permObj,created=SuspensionPermiso.objects.get_or_create( permObj,created=SuspensionPermiso.objects.get_or_create(
suspension_modulo=modulo, supension_modPermP=obj,
suspension_modulo=modulo.modulo,
permiso=permiso, 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(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) 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) admin.site.register(Sistemas_por_cliente_A24)

View File

@@ -1,5 +1,6 @@
from django import forms 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 from datetime import datetime
class ClienteForm_IMMEX(forms.ModelForm): class ClienteForm_IMMEX(forms.ModelForm):
@@ -22,3 +23,54 @@ class ClienteForm_IMMEX(forms.ModelForm):
if Activo and fecha_baja: if Activo and fecha_baja:
self._errors['fecha_baja'] = self.error_class(["El parametro activo no puede estar seleccionado si hay fecha de 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,
)

View File

@@ -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,
),
]

View File

@@ -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'),
),
]

View File

@@ -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'),
),
]

View File

@@ -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'),
),
]

View File

@@ -105,12 +105,16 @@ class SuspensionModulo(models.Model):
class SuspensionPermiso(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) permiso = models.ForeignKey(Permisos_A24, on_delete=models.CASCADE)
suspendido = models.BooleanField(default=False) suspendido = models.BooleanField(default=False)
def __str__(self) -> str: def __str__(self) -> str:
return f'{self.permiso}' return f'{self.permiso}'
class Meta:
ordering=['suspension_modulo']

View File

@@ -1,5 +1,6 @@
from django.urls import path, include from django.urls import path, include
from . import views from . import views
from . import viewsPermisos
from rest_framework import routers from rest_framework import routers
router = routers.DefaultRouter() router = routers.DefaultRouter()
@@ -25,5 +26,10 @@ urlpatterns = [
path('api/admin/', include(router.urls)), path('api/admin/', include(router.urls)),
path('api/checar_permisos/',views.ChecarPermisos.as_view(), name='api_ChecarPermisos'), 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'),
] ]

View File

@@ -194,6 +194,8 @@ class RegistroUsuarios(APIView):
from_email='aduanasoftpruebas@gmail.com', from_email='aduanasoftpruebas@gmail.com',
recipient_list=[email], recipient_list=[email],
) )
class Check_IMMEX_RFC(APIView): class Check_IMMEX_RFC(APIView):
"""Verifica que el cliente pueda Timbrar""" """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}) return Response({'Error':f'check_RFC:{E} RFC:{rfc}','isError':True})
class RegisterIMMEX_Device_APIView(APIView): class RegisterIMMEX_Device_APIView(APIView):
"""Register IMMEX Devices """Register IMMEX Devices
se manda el siguiente JSON se manda el siguiente JSON

172
IMMEX/viewsPermisos.py Normal file
View 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))

View 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 %}

View 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 %}

View 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">&times;</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 %}