65 lines
2.1 KiB
Python
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",) |