from django.contrib import admin from .models import BaseModel, ModelLog, DataAccess from django.utils import timezone class AutoUpdateAdmin(admin.ModelAdmin): def save_model(self, request, obj, form, change): if isinstance(obj, BaseModel): obj.last_updated_by = request.user obj.last_update = timezone.now() super().save_model(request, obj, form, change) class ModelLogAdmin(admin.ModelAdmin): list_display = ['get_users', 'date', 'operation', 'model_id', 'model_name'] list_filter = ['users'] ordering = ['-date'] @admin.display(description='Users') def get_users(self, obj): return ", ".join([str(item) for item in obj.users.all()]) class DataAccessAdmin(AutoUpdateAdmin): list_display = ['owner', 'get_shared_users', 'model_name', 'model_id'] list_filter = ['owner', 'shared_with'] ordering = ['-granted_at'] @admin.display(description='Shared with') def get_shared_users(self, obj): return ", ".join([str(item) for item in obj.shared_with.all()]) # Register your models here. admin.site.register(ModelLog, ModelLogAdmin) admin.site.register(DataAccess, DataAccessAdmin)