Added Cambios Permisos y Modulos
This commit is contained in:
157
IMMEX/admin.py
157
IMMEX/admin.py
@@ -1,9 +1,164 @@
|
||||
from typing import Any
|
||||
from django.contrib import admin
|
||||
from . models import Sistemas_por_cliente_A24, ClientesA24, DeviceA24
|
||||
from .models import *
|
||||
from django.contrib.sessions.models import Session
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
from django.db.models import Q
|
||||
class SessionAdmin(admin.ModelAdmin):
|
||||
list_display=['get_username','session_key','session_data','expire_date']
|
||||
readonly_fields = ['display_session_data', 'get_username']
|
||||
|
||||
def display_session_data(self,obj):
|
||||
session_data =obj.get_decoded()
|
||||
formatted_data = "\n".join([f"{key}: {value}" for key, value in session_data.items()])
|
||||
return formatted_data
|
||||
display_session_data.shoort_description= "Session Data"
|
||||
|
||||
def get_username(self,obj):
|
||||
session_data=obj.get_decoded()
|
||||
user_id=session_data.get('_auth_user_id')
|
||||
try:
|
||||
user=User.objects.get(id=user_id)
|
||||
return user.username
|
||||
except User.DoesNotExist:
|
||||
return "Usuario inexistente"
|
||||
get_username.short_description = 'Nombre Usuario'
|
||||
|
||||
def delete_expired_sessions(self,request,queryset):
|
||||
now =timezone.now()
|
||||
one_day_ago = now- timedelta(days=1)
|
||||
|
||||
expired_sessions = queryset.filter(expire_date__lte=one_day_ago)
|
||||
expired_sessions.delete()
|
||||
delete_expired_sessions.short_description = 'Eliminar Sessiones caducas'
|
||||
|
||||
def get_queryset(self,request):
|
||||
now =timezone.now()
|
||||
one_day_ago = now- timedelta(days=1)
|
||||
current_session = request.session.session_key
|
||||
|
||||
queryset = super().get_queryset(request)#.filter(expire_date__gte=one_day_ago)
|
||||
#queryset.exclude(session_key=current_session)
|
||||
|
||||
return queryset
|
||||
|
||||
|
||||
|
||||
|
||||
class Device_A24_Admin(admin.ModelAdmin):
|
||||
list_display = ['clienteA24', 'dataBase','username','sistema','MAC','deviceName']
|
||||
|
||||
|
||||
class ActiveTokenSession_Admin(admin.ModelAdmin):
|
||||
list_display = ['start_time', 'last_time', 'has_expired']
|
||||
|
||||
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)
|
||||
|
||||
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]
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
for modulo in obj.suspensionmodulo_set.all():
|
||||
for permiso in modulo.modulo.permisos.all():
|
||||
permObj,created=SuspensionPermiso.objects.get_or_create(
|
||||
suspension_modulo=modulo,
|
||||
permiso=permiso,
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
admin.site.register(Permisos_A24)
|
||||
admin.site.register(Modulo)
|
||||
admin.site.register(SuspensionModulo,SuspensionModuloAdmin)
|
||||
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(ClientesA24)
|
||||
admin.site.register(DeviceA24, Device_A24_Admin)
|
||||
|
||||
admin.site.register(ActiveTokenSession, ActiveTokenSession_Admin)
|
||||
admin.site.register(Session, SessionAdmin)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user