You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.2 KiB
33 lines
1.2 KiB
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)
|
|
|