@@ -234,29 +234,30 @@ def history_view(
234234 self , request : HttpRequest , object_id : str , extra_context : dict [str , Any ] | None = None
235235 ) -> TemplateResponse :
236236 obj = self .get_object (request , unquote (object_id ))
237- etag = cache_manager .build_key_from_request (request , "history" , obj .last_modified )
238- if response := cache_manager .retrieve (etag ):
239- return response
240- history = []
241- prev = {}
242- field_names = [f .name for __ , f in obj .checker .get_fields ()]
243- for entry in obj .events .select_related ("pgh_context" ).all ():
244- changes = {}
245- for field_name in field_names :
246- old_value = prev .get (field_name , "" )
247- new_value = entry .flex_fields .get (field_name , "" )
248- if old_value != new_value :
249- changes [field_name ] = {"from" : old_value , "to" : new_value }
250- history .append (
251- {
252- "changes" : changes ,
253- "date" : entry .pgh_created_at ,
254- "pgh_label" : entry .pgh_label ,
255- "user" : entry .pgh_context .metadata ["user" ],
256- }
257- )
258- prev = entry .flex_fields
259- history .reverse ()
237+ key = cache_manager .build_key_from_request (request , "history" , obj .pk , obj .version )
238+ if not (history := cache_manager .retrieve (key )):
239+ history = []
240+ prev = {}
241+ field_names = [f .name for __ , f in obj .checker .get_fields ()]
242+ for entry in obj .events .select_related ("pgh_context" ).all ():
243+ changes = {}
244+ for field_name in field_names :
245+ old_value = prev .get (field_name , "" )
246+ new_value = entry .flex_fields .get (field_name , "" )
247+ if old_value != new_value :
248+ changes [field_name ] = {"from" : old_value , "to" : new_value }
249+ history .append (
250+ {
251+ "changes" : changes ,
252+ "date" : entry .pgh_created_at ,
253+ "pgh_label" : entry .pgh_label ,
254+ "user" : entry .pgh_context .metadata ["user" ],
255+ }
256+ )
257+ prev = entry .flex_fields
258+ history .reverse ()
259+ cache_manager .store (key , history )
260+
260261 context = {
261262 ** self .admin_site .each_context (request ),
262263 "modeladmin" : self ,
@@ -273,9 +274,5 @@ def history_view(
273274 "preserved_filters" : self .get_preserved_filters (request ),
274275 ** (extra_context or {}),
275276 }
276- return TemplateResponse (
277- request ,
278- self .object_history_template ,
279- context ,
280- headers = {"Etag" : etag },
281- )
277+
278+ return TemplateResponse (request , self .object_history_template , context )
0 commit comments