91 lines
2.4 KiB
Python
91 lines
2.4 KiB
Python
from django.contrib import admin
|
|
from django.contrib.auth import admin as auth_admin, get_user_model
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from vbv_lernwelt.core.models import JobLog, Organisation
|
|
from vbv_lernwelt.core.utils import pretty_print_json
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class LogAdmin(admin.ModelAdmin):
|
|
def has_add_permission(self, request):
|
|
return False
|
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
return False
|
|
|
|
def get_readonly_fields(self, request, obj=None):
|
|
# set all fields read only
|
|
return [field.name for field in self.opts.local_fields] + [
|
|
field.name for field in self.opts.local_many_to_many
|
|
]
|
|
|
|
def pretty_print_json(self, json_string):
|
|
return pretty_print_json(json_string)
|
|
|
|
|
|
@admin.register(User)
|
|
class UserAdmin(auth_admin.UserAdmin):
|
|
fieldsets = (
|
|
(None, {"fields": ("username", "password")}),
|
|
(_("Personal info"), {"fields": ("first_name", "last_name", "email")}),
|
|
(
|
|
_("Permissions"),
|
|
{
|
|
"fields": (
|
|
"is_active",
|
|
"is_staff",
|
|
"is_superuser",
|
|
"groups",
|
|
"user_permissions",
|
|
),
|
|
},
|
|
),
|
|
(_("Important dates"), {"fields": ("last_login", "date_joined")}),
|
|
(_("Additional data"), {"fields": ("additional_json_data",)}),
|
|
)
|
|
list_display = [
|
|
"username",
|
|
"first_name",
|
|
"last_name",
|
|
"is_active",
|
|
"is_superuser",
|
|
"sso_id",
|
|
]
|
|
search_fields = ["first_name", "last_name", "email", "username", "sso_id"]
|
|
|
|
|
|
@admin.register(JobLog)
|
|
class JobLogAdmin(LogAdmin):
|
|
date_hierarchy = "started"
|
|
list_display = (
|
|
"job_name",
|
|
"started",
|
|
"ended",
|
|
"runtime",
|
|
"success",
|
|
)
|
|
list_filter = ["job_name", "success"]
|
|
|
|
def json_data_pretty(self, instance):
|
|
return self.pretty_print_json(instance.json_data)
|
|
|
|
def get_readonly_fields(self, request, obj=None):
|
|
return super().get_readonly_fields(request, obj) + ["json_data_pretty"]
|
|
|
|
def runtime(self, obj):
|
|
if obj.ended:
|
|
return (obj.ended - obj.started).seconds // 60
|
|
return None
|
|
|
|
|
|
@admin.register(Organisation)
|
|
class OrganisationAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"organisation_id",
|
|
"name_de",
|
|
"name_fr",
|
|
"name_it",
|
|
)
|