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):