From d3d173425fc0a1107836da5b4567f1c88253191b Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak <felisiak.mariusz@gmail.com> Date: Fri, 26 May 2023 12:16:26 +0200 Subject: [PATCH] Optimized @condition decorator a bit. This removes unnecessary get_last_modified() hook. --- django/views/decorators/http.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/django/views/decorators/http.py b/django/views/decorators/http.py index 6d88a633eb..4ad520fb25 100644 --- a/django/views/decorators/http.py +++ b/django/views/decorators/http.py @@ -86,19 +86,15 @@ def condition(etag_func=None, last_modified_func=None): @wraps(func) def inner(request, *args, **kwargs): # Compute values (if any) for the requested resource. - def get_last_modified(): - if last_modified_func: - dt = last_modified_func(request, *args, **kwargs) - if dt: - if not timezone.is_aware(dt): - dt = timezone.make_aware(dt, datetime.timezone.utc) - return int(dt.timestamp()) - + res_last_modified = None + if last_modified_func: + if dt := last_modified_func(request, *args, **kwargs): + if not timezone.is_aware(dt): + dt = timezone.make_aware(dt, datetime.timezone.utc) + res_last_modified = int(dt.timestamp()) # The value from etag_func() could be quoted or unquoted. res_etag = etag_func(request, *args, **kwargs) if etag_func else None res_etag = quote_etag(res_etag) if res_etag is not None else None - res_last_modified = get_last_modified() - response = get_conditional_response( request, etag=res_etag,