use pathlib the api in the mapdata/tile view for all file operations
This commit is contained in:
parent
5523d5dc29
commit
a16d37a2f8
1 changed files with 10 additions and 14 deletions
|
@ -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')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue