FossilRepo
| 4ce269c… | ragelink | 1 | from django.contrib import admin |
| 4ce269c… | ragelink | 2 | from import_export.admin import ImportExportMixin |
| 4ce269c… | ragelink | 3 | |
| 4ce269c… | ragelink | 4 | |
| 4ce269c… | ragelink | 5 | class BaseCoreAdmin(ImportExportMixin, admin.ModelAdmin): |
| 4ce269c… | ragelink | 6 | """Base admin class for all Fossilrepo models. Provides audit field handling and import/export.""" |
| c588255… | ragelink | 7 | |
| c588255… | ragelink | 8 | def get_queryset(self, request): |
| c588255… | ragelink | 9 | if hasattr(self.model, "all_objects"): |
| c588255… | ragelink | 10 | return self.model.all_objects.all() |
| c588255… | ragelink | 11 | return super().get_queryset(request) |
| 4ce269c… | ragelink | 12 | |
| 4ce269c… | ragelink | 13 | def get_readonly_fields(self, request, obj=None): |
| 4ce269c… | ragelink | 14 | base = tuple(self.readonly_fields or ()) |
| 4ce269c… | ragelink | 15 | return base + ("version", "created_at", "created_by", "updated_at", "updated_by", "deleted_at", "deleted_by") |
| 4ce269c… | ragelink | 16 | |
| 4ce269c… | ragelink | 17 | def get_raw_id_fields(self, request): |
| 4ce269c… | ragelink | 18 | base = tuple(self.raw_id_fields or ()) |
| 4ce269c… | ragelink | 19 | return base + ("created_by", "updated_by", "deleted_by") |
| 4ce269c… | ragelink | 20 | |
| 4ce269c… | ragelink | 21 | def save_model(self, request, obj, form, change): |
| 4ce269c… | ragelink | 22 | if hasattr(obj, "created_by") and not obj.created_by: |
| 4ce269c… | ragelink | 23 | obj.created_by = request.user |
| 4ce269c… | ragelink | 24 | if hasattr(obj, "updated_by"): |
| 4ce269c… | ragelink | 25 | obj.updated_by = request.user |
| 4ce269c… | ragelink | 26 | super().save_model(request, obj, form, change) |