Files
AS_timbres/IMMEX/admin.py
2023-11-30 10:42:06 -06:00

120 lines
4.0 KiB
Python

from typing import Any
from django.contrib import admin
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 Suspension_Modulos_Permisos_ClienteAdmin(admin.ModelAdmin):
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(
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(SuspensionPermiso)
admin.site.register(Suspension_Modulos_Permisos_Cliente, Suspension_Modulos_Permisos_ClienteAdmin)
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)