Skip to content

Commit 8819429

Browse files
rhavermjsir911
authored andcommitted
Collating snippets into derivable class
1 parent 39b44ac commit 8819429

File tree

1 file changed

+32
-29
lines changed

1 file changed

+32
-29
lines changed

simple_history/admin.py

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from django.conf import settings
44
from django.contrib import admin
55
from django.contrib.admin import helpers
6-
from django.contrib.admin.utils import unquote
6+
from django.contrib.admin.utils import unquote, quote
77
from django.contrib.auth import get_permission_codename
88
from django.core.exceptions import PermissionDenied
99
from django.shortcuts import get_object_or_404, render
@@ -286,37 +286,40 @@ def enforce_history_permissions(self):
286286
)
287287

288288

289-
class SimpleHistoryShowDeletedFilter(admin.SimpleListFilter):
289+
class SimpleHistoryWithDeletedAdmin(SimpleHistoryAdmin):
290+
class SimpleHistoryShowDeletedFilter(admin.SimpleListFilter):
290291
title = "Entries"
291292
parameter_name = "entries"
292293

293294
def lookups(self, request, model_admin):
294-
return (
295-
("deleted_only", "Only Deleted"),
296-
)
295+
return (
296+
("deleted_only", "Only Deleted"),
297+
)
297298

298299
def queryset(self, request, queryset):
299-
if self.value():
300-
return queryset.model.history.filter(history_type='-').distinct()
301-
return queryset
302-
303-
304-
class YourModelAdmin(SimpleHistoryAdmin):
305-
def get_changelist(self, request, **kwargs):
306-
def url_from_result_maker(history=False):
307-
def custom_url_for_result(self, result):
308-
pk = getattr(result, self.pk_attname)
309-
from django.urls import reverse
310-
from django.contrib.admin.utils import quote
311-
route_type = 'history' if history else 'change'
312-
route = f'{self.opts.app_label}_{self.opts.model_name}_{route_type}'
313-
return reverse(f'admin:{route}',
314-
args=(quote(pk),),
315-
current_app=self.model_admin.admin_site.name)
316-
return custom_url_for_result
317-
changelist = super().get_changelist(request, **kwargs)
318-
if request.GET.get('entries', None) == 'deleted_only':
319-
changelist.url_for_result = url_from_result_maker(history=True)
320-
else:
321-
changelist.url_for_result = url_from_result_maker(history=False)
322-
return changelist
300+
if self.value():
301+
return queryset.model.history.filter(history_type='-').distinct()
302+
return queryset
303+
304+
def get_changelist(self, request, **kwargs):
305+
def url_from_result_maker(history=False):
306+
def custom_url_for_result(self, result):
307+
pk = getattr(result, self.pk_attname)
308+
route_type = 'history' if history else 'change'
309+
route = f'{self.opts.app_label}_{self.opts.model_name}_{route_type}'
310+
return reverse(f'admin:{route}',
311+
args=(quote(pk),),
312+
current_app=self.model_admin.admin_site.name)
313+
return custom_url_for_result
314+
315+
changelist = super().get_changelist(request, **kwargs)
316+
if request.GET.get('entries', None) == 'deleted_only':
317+
changelist.url_for_result = url_from_result_maker(history=True)
318+
else:
319+
changelist.url_for_result = url_from_result_maker(history=False)
320+
return changelist
321+
322+
def get_list_filter(self, request):
323+
return [self.SimpleHistoryShowDeletedFilter] + [
324+
f for f in super().get_list_filter(request)
325+
]

0 commit comments

Comments
 (0)