mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-13 14:44:29 -04:00
allow accessing admin change pages by .abid as well as .id
This commit is contained in:
parent
cbf2a8fdc3
commit
0c236b034b
3 changed files with 23 additions and 5 deletions
|
@ -108,6 +108,15 @@ class ABIDModelAdmin(admin.ModelAdmin):
|
||||||
|
|
||||||
def change_view(self, request, object_id, form_url="", extra_context=None):
|
def change_view(self, request, object_id, form_url="", extra_context=None):
|
||||||
self.request = request
|
self.request = request
|
||||||
|
|
||||||
|
if object_id:
|
||||||
|
try:
|
||||||
|
object_uuid = str(self.model.objects.only('pk').get(abid=self.model.abid_prefix + object_id.split('_', 1)[-1]).pk)
|
||||||
|
if object_id != object_uuid:
|
||||||
|
return redirect(self.request.path.replace(object_id, object_uuid), permanent=False)
|
||||||
|
except (self.model.DoesNotExist, ValidationError):
|
||||||
|
pass
|
||||||
|
|
||||||
return super().change_view(request, object_id, form_url, extra_context)
|
return super().change_view(request, object_id, form_url, extra_context)
|
||||||
|
|
||||||
def get_form(self, request, obj=None, **kwargs):
|
def get_form(self, request, obj=None, **kwargs):
|
||||||
|
@ -117,7 +126,9 @@ class ABIDModelAdmin(admin.ModelAdmin):
|
||||||
form.base_fields['created_by'].initial = request.user
|
form.base_fields['created_by'].initial = request.user
|
||||||
return form
|
return form
|
||||||
|
|
||||||
# def save_model(self, request, obj, form, change):
|
def save_model(self, request, obj, form, change):
|
||||||
# if getattr(obj, 'created_by_id', None) in (None, get_or_create_system_user_pk()):
|
old_abid = obj.abid
|
||||||
# obj.created_by = request.user
|
super().save_model(request, obj, form, change)
|
||||||
# obj.save()
|
new_abid = obj.abid
|
||||||
|
if new_abid != old_abid:
|
||||||
|
messages.warning(request, f"The object's ABID has been updated! {old_abid} -> {new_abid} (any references to the old ABID will need to be updated)")
|
||||||
|
|
|
@ -78,6 +78,9 @@ class MinimalArchiveResultSchema(Schema):
|
||||||
status: str
|
status: str
|
||||||
output: str
|
output: str
|
||||||
|
|
||||||
|
start_ts: Optional[datetime]
|
||||||
|
end_ts: Optional[datetime]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def resolve_created_by_id(obj):
|
def resolve_created_by_id(obj):
|
||||||
return str(obj.created_by_id)
|
return str(obj.created_by_id)
|
||||||
|
|
|
@ -21,6 +21,7 @@ from django.contrib.auth import get_user_model
|
||||||
from django.contrib.auth.admin import UserAdmin
|
from django.contrib.auth.admin import UserAdmin
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
from django.template import Template, RequestContext
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django import forms
|
from django import forms
|
||||||
|
|
||||||
|
@ -250,7 +251,10 @@ class ArchiveResultInline(admin.TabularInline):
|
||||||
|
|
||||||
def get_parent_object_from_request(self, request):
|
def get_parent_object_from_request(self, request):
|
||||||
resolved = resolve(request.path_info)
|
resolved = resolve(request.path_info)
|
||||||
return self.parent_model.objects.get(pk=resolved.kwargs['object_id'])
|
try:
|
||||||
|
return self.parent_model.objects.get(pk=resolved.kwargs['object_id'])
|
||||||
|
except (self.parent_model.DoesNotExist, ValidationError):
|
||||||
|
return self.parent_model.objects.get(abid=self.parent_model.abid_prefix + resolved.kwargs['object_id'].split('_', 1)[-1])
|
||||||
|
|
||||||
@admin.display(
|
@admin.display(
|
||||||
description='Completed',
|
description='Completed',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue