Files
Axia4/django_app/core/admin.py

65 lines
2.1 KiB
Python

from django.contrib import admin
from .forms import UserAdminForm, UserOrgAdminForm
from .models import Config, Invitation, Organization, User, UserOrg, UserSession, generate_short_uuid
admin.site.site_header = "Axia4 Django Admin"
admin.site.site_title = "Axia4 Admin"
admin.site.index_title = "Panel interno de administracion"
@admin.register(Config)
class ConfigAdmin(admin.ModelAdmin):
list_display = ("key", "value")
search_fields = ("key", "value")
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
form = UserAdminForm
list_display = ("username", "display_name", "email", "google_auth", "created_at")
search_fields = ("username", "display_name", "email")
list_filter = ("google_auth",)
@admin.register(Organization)
class OrganizationAdmin(admin.ModelAdmin):
list_display = ("org_id", "org_name", "created_at")
search_fields = ("org_id", "org_name")
def get_changeform_initial_data(self, request):
initial = super().get_changeform_initial_data(request)
initial.setdefault("org_id", generate_short_uuid())
return initial
def save_model(self, request, obj, form, change):
if not obj.org_id:
obj.org_id = generate_short_uuid()
super().save_model(request, obj, form, change)
@admin.register(UserOrg)
class UserOrgAdmin(admin.ModelAdmin):
form = UserOrgAdminForm
list_display = ("user", "org", "permissions_badge")
search_fields = ("user__username", "org__org_id", "role")
autocomplete_fields = ("user", "org")
@admin.display(description="Permisos")
def permissions_badge(self, obj):
return obj.permissions_display or "Sin permisos"
@admin.register(UserSession)
class UserSessionAdmin(admin.ModelAdmin):
list_display = ("username", "ip_address", "created_at", "last_active")
search_fields = ("username", "ip_address", "user_agent")
readonly_fields = ("session_token", "remember_token_hash")
@admin.register(Invitation)
class InvitationAdmin(admin.ModelAdmin):
list_display = ("code", "active", "single_use", "created_at")
list_filter = ("active", "single_use")
search_fields = ("code",)