From 783a521682f7c7b0d37703e375c11de4f536989d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 19 Dec 2017 20:20:29 +0100 Subject: [PATCH] last modified support for source images --- src/c3nav/mapdata/api.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/c3nav/mapdata/api.py b/src/c3nav/mapdata/api.py index 85853229..cf7bfb98 100644 --- a/src/c3nav/mapdata/api.py +++ b/src/c3nav/mapdata/api.py @@ -1,7 +1,10 @@ import mimetypes +import os from collections import namedtuple +from datetime import datetime from functools import wraps +import pytz from django.core.cache import cache from django.db.models import Prefetch from django.http import HttpResponse @@ -378,7 +381,11 @@ class SourceViewSet(MapdataViewSet): def _image(self, request, pk=None): source = self.get_object() - return HttpResponse(open(source.filepath, 'rb'), content_type=mimetypes.guess_type(source.name)[0]) + last_modified = datetime.utcfromtimestamp(os.path.getmtime(source.filepath)).replace(tzinfo=pytz.utc) + response = get_conditional_response(request, last_modified=last_modified) + if response is None: + response = HttpResponse(open(source.filepath, 'rb'), content_type=mimetypes.guess_type(source.name)[0]) + return response class AccessRestrictionViewSet(MapdataViewSet):