use pathlib the api in the mapdata/tile view for all file operations

This commit is contained in:
Jenny Danzmayr 2023-12-07 04:04:47 +01:00
parent 5523d5dc29
commit a16d37a2f8

View file

@ -96,30 +96,28 @@ def tile(request, level, zoom, x, y, access_permissions=None):
return HttpResponseNotModified() return HttpResponseNotModified()
data = None data = None
tile_dirname, last_update_filename, tile_filename, tile_cache_update_cache_key = '', '', '', '' tile_directory, last_update_file, tile_file, tile_cache_update_cache_key = '', '', '', ''
# get tile cache last update # get tile cache last update
if settings.CACHE_TILES: if settings.CACHE_TILES:
tile_dirname = settings.TILES_ROOT / str(level) / str(zoom) / str(x) / str(y) tile_directory = settings.TILES_ROOT / str(level) / str(zoom) / str(x) / str(y)
last_update_filename = tile_dirname / 'last_update' last_update_file = tile_directory / 'last_update'
tile_filename = tile_dirname / (access_cache_key+'.png') tile_file = tile_directory / (access_cache_key+'.png')
# get tile cache last update # get tile cache last update
tile_cache_update_cache_key = 'mapdata:tile-cache-update:%d-%d-%d-%d' % (level, zoom, x, y) tile_cache_update_cache_key = 'mapdata:tile-cache-update:%d-%d-%d-%d' % (level, zoom, x, y)
tile_cache_update = cache.get(tile_cache_update_cache_key, None) tile_cache_update = cache.get(tile_cache_update_cache_key, None)
if tile_cache_update is None: if tile_cache_update is None:
try: try:
with open(last_update_filename) as f: tile_cache_update = last_update_file.read_text()
tile_cache_update = f.read()
except FileNotFoundError: except FileNotFoundError:
pass pass
if tile_cache_update != base_cache_key: if tile_cache_update != base_cache_key:
rmtree(tile_dirname) rmtree(tile_directory)
else: else:
try: try:
with open(tile_filename, 'rb') as f: data = tile_file.read_bytes()
data = f.read()
except FileNotFoundError: except FileNotFoundError:
pass pass
@ -129,11 +127,9 @@ def tile(request, level, zoom, x, y, access_permissions=None):
data = image.render() data = image.render()
if settings.CACHE_TILES: if settings.CACHE_TILES:
os.makedirs(tile_dirname, exist_ok=True) os.makedirs(tile_directory, exist_ok=True)
with open(tile_filename, 'wb') as f: tile_file.write_bytes(data)
f.write(data) last_update_file.write_text(base_cache_key)
with open(last_update_filename, 'w') as f:
f.write(base_cache_key)
cache.set(tile_cache_update_cache_key, base_cache_key, 60) cache.set(tile_cache_update_cache_key, base_cache_key, 60)
response = HttpResponse(data, 'image/png') response = HttpResponse(data, 'image/png')