use pathlib in more places, thereby fixing some bugs
This commit is contained in:
parent
f5c33724dc
commit
2ad9f4a099
14 changed files with 24 additions and 36 deletions
|
@ -1,5 +1,4 @@
|
|||
import mimetypes
|
||||
import os
|
||||
import typing
|
||||
from contextlib import suppress
|
||||
|
||||
|
@ -739,7 +738,7 @@ def sourceimage(request, filename):
|
|||
return PermissionDenied
|
||||
|
||||
try:
|
||||
return HttpResponse(open(os.path.join(settings.SOURCES_ROOT, filename), 'rb'),
|
||||
return HttpResponse(open(settings.SOURCES_ROOT / filename, 'rb'),
|
||||
content_type=mimetypes.guess_type(filename)[0])
|
||||
except FileNotFoundError:
|
||||
raise Http404
|
||||
|
|
|
@ -33,7 +33,7 @@ class Command(BaseCommand):
|
|||
for filename in os.listdir(settings.CACHE_ROOT):
|
||||
if filename.startswith('history_base_'):
|
||||
logger.info('Deleting %s...' % filename)
|
||||
os.remove(os.path.join(settings.CACHE_ROOT, filename))
|
||||
os.remove(settings.CACHE_ROOT / filename)
|
||||
logger.info('Base history deleted.')
|
||||
|
||||
if not settings.HAS_CELERY and not options['no_process']:
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import argparse
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
|
@ -109,8 +108,7 @@ class Command(BaseCommand):
|
|||
min_width=options['min_width'])
|
||||
|
||||
name = options['name'] or ('level_%s' % level.short_label)
|
||||
filename = os.path.join(settings.RENDER_ROOT,
|
||||
'%s.%s' % (name, options['filetype']))
|
||||
filename = settings.RENDER_ROOT / ('%s.%s' % (name, options['filetype']))
|
||||
|
||||
render = renderer.render(get_engine(options['filetype']), center=not options['no_center'])
|
||||
data = render.render(filename)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import json
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.management.base import BaseCommand
|
||||
|
@ -20,10 +19,9 @@ class Command(BaseCommand):
|
|||
def handle(self, *args, **options):
|
||||
result = stats_snapshot(reset=options['reset'])
|
||||
if options['save']:
|
||||
filename = os.path.join(
|
||||
settings.STATS_ROOT,
|
||||
'stats__%s__%s.json' % (result['start_date'], result['end_date'])
|
||||
).replace(' ', '_').replace(':', '-')
|
||||
filename = settings.STATS_ROOT / (
|
||||
('stats__%s__%s.json' % (result['start_date'], result['end_date'])).replace(' ', '_').replace(':', '-')
|
||||
)
|
||||
json.dump(result, open(filename, 'w'), indent=4)
|
||||
print('saved to %s' % filename)
|
||||
else:
|
||||
|
|
|
@ -11,7 +11,7 @@ from django.db import migrations
|
|||
def move_sources(apps, schema_editor):
|
||||
Source = apps.get_model('mapdata', 'Source')
|
||||
for source in Source.objects.all():
|
||||
with open(os.path.join(settings.SOURCES_ROOT, source.name), 'wb') as f:
|
||||
with open(settings.SOURCES_ROOT / source.name), 'wb') as f:
|
||||
f.write(source.image)
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
@ -21,7 +19,7 @@ class Source(BoundsMixin, AccessRestrictionMixin, models.Model):
|
|||
|
||||
@property
|
||||
def filepath(self):
|
||||
return os.path.join(settings.SOURCES_ROOT, self.name)
|
||||
return settings.SOURCES_ROOT / self.name
|
||||
|
||||
@property
|
||||
def title(self):
|
||||
|
|
|
@ -104,7 +104,7 @@ class MapUpdate(models.Model):
|
|||
yield cls.objects.select_for_update().get(pk=earliest.pk)
|
||||
|
||||
def _changed_geometries_filename(self):
|
||||
return os.path.join(settings.CACHE_ROOT, 'changed_geometries', 'update_%d.pickle' % self.pk)
|
||||
return settings.CACHE_ROOT / 'changed_geometries' / ('update_%d.pickle' % self.pk)
|
||||
|
||||
class ProcessUpdatesAlreadyRunning(Exception):
|
||||
pass
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import operator
|
||||
import os
|
||||
import pickle
|
||||
import threading
|
||||
from collections import deque
|
||||
|
@ -297,7 +296,7 @@ class LevelRenderData:
|
|||
|
||||
@staticmethod
|
||||
def _level_filename(pk):
|
||||
return os.path.join(settings.CACHE_ROOT, 'render_data_level_%d.pickle' % pk)
|
||||
return settings.CACHE_ROOT / ('render_data_level_%d.pickle' % pk)
|
||||
|
||||
@classmethod
|
||||
def get(cls, level):
|
||||
|
|
3
src/c3nav/mapdata/utils/cache/indexed.py
vendored
3
src/c3nav/mapdata/utils/cache/indexed.py
vendored
|
@ -1,5 +1,4 @@
|
|||
import math
|
||||
import os
|
||||
import struct
|
||||
import threading
|
||||
|
||||
|
@ -197,7 +196,7 @@ class LevelGeometryIndexed(GeometryIndexed):
|
|||
@classmethod
|
||||
def level_filename(cls, level_id, mode):
|
||||
from django.conf import settings
|
||||
return os.path.join(settings.CACHE_ROOT, '%s_%s_level_%d' % (cls.variant_name, mode, level_id))
|
||||
return settings.CACHE_ROOT / ('%s_%s_level_%d' % (cls.variant_name, mode, level_id))
|
||||
|
||||
@classmethod
|
||||
def open_level(cls, level_id, mode, **kwargs):
|
||||
|
|
4
src/c3nav/mapdata/utils/cache/package.py
vendored
4
src/c3nav/mapdata/utils/cache/package.py
vendored
|
@ -21,7 +21,7 @@ class CachePackage:
|
|||
def save(self, filename=None, compression=None):
|
||||
if filename is None:
|
||||
from django.conf import settings
|
||||
filename = os.path.join(settings.CACHE_ROOT, 'package.tar')
|
||||
filename = settings.CACHE_ROOT / 'package.tar'
|
||||
if compression is not None:
|
||||
filename += '.' + compression
|
||||
|
||||
|
@ -75,7 +75,7 @@ class CachePackage:
|
|||
def open(cls, filename=None):
|
||||
if filename is None:
|
||||
from django.conf import settings
|
||||
filename = os.path.join(settings.CACHE_ROOT, 'package.tar')
|
||||
filename = settings.CACHE_ROOT / 'package.tar'
|
||||
return cls.read(open(filename, 'rb'))
|
||||
|
||||
cached = None
|
||||
|
|
|
@ -99,9 +99,9 @@ def tile(request, level, zoom, x, y, access_permissions=None):
|
|||
|
||||
# get tile cache last update
|
||||
if settings.CACHE_TILES:
|
||||
tile_dirname = os.path.sep.join((settings.TILES_ROOT, str(level), str(zoom), str(x), str(y)))
|
||||
last_update_filename = os.path.join(tile_dirname, 'last_update')
|
||||
tile_filename = os.path.join(tile_dirname, access_cache_key+'.png')
|
||||
tile_dirname = settings.TILES_ROOT / str(level) / str(zoom) / str(x) / str(y)
|
||||
last_update_filename = tile_dirname / 'last_update'
|
||||
tile_filename = tile_dirname / (access_cache_key+'.png')
|
||||
|
||||
# get tile cache last update
|
||||
tile_cache_update_cache_key = 'mapdata:tile-cache-update:%d-%d-%d-%d' % (level, zoom, x, y)
|
||||
|
@ -114,7 +114,7 @@ def tile(request, level, zoom, x, y, access_permissions=None):
|
|||
pass
|
||||
|
||||
if tile_cache_update != base_cache_key:
|
||||
os.system('rm -rf '+os.path.join(tile_dirname, '*'))
|
||||
os.system('rm -rf '+(tile_dirname / '*'))
|
||||
else:
|
||||
try:
|
||||
with open(tile_filename, 'rb') as f:
|
||||
|
@ -171,7 +171,7 @@ def map_history(request, level, mode, filetype):
|
|||
def get_cache_package(request, filetype):
|
||||
enforce_tile_secret_auth(request)
|
||||
|
||||
filename = os.path.join(settings.CACHE_ROOT, 'package.'+filetype)
|
||||
filename = settings.CACHE_ROOT / ('package.'+filetype)
|
||||
f = open(filename, 'rb')
|
||||
|
||||
f.seek(0, os.SEEK_END)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import operator
|
||||
import os
|
||||
import pickle
|
||||
import re
|
||||
import threading
|
||||
|
@ -17,7 +16,7 @@ from c3nav.routing.router import Router
|
|||
|
||||
|
||||
class Locator:
|
||||
filename = os.path.join(settings.CACHE_ROOT, 'locator')
|
||||
filename = settings.CACHE_ROOT / 'locator'
|
||||
|
||||
def __init__(self, stations, spaces):
|
||||
self.stations = stations
|
||||
|
@ -42,7 +41,7 @@ class Locator:
|
|||
|
||||
@classmethod
|
||||
def build_filename(cls, update):
|
||||
return os.path.join(settings.CACHE_ROOT, 'locator_%s.pickle' % MapUpdate.build_cache_key(*update))
|
||||
return settings.CACHE_ROOT / ('locator_%s.pickle' % MapUpdate.build_cache_key(*update))
|
||||
|
||||
@classmethod
|
||||
def load_nocache(cls, update):
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import os
|
||||
import pickle
|
||||
import threading
|
||||
from dataclasses import dataclass
|
||||
|
@ -21,7 +20,7 @@ class RangeLocatorBeacon:
|
|||
|
||||
@dataclass
|
||||
class RangeLocator:
|
||||
filename = os.path.join(settings.CACHE_ROOT, 'rangelocator')
|
||||
filename = settings.CACHE_ROOT / 'rangelocator'
|
||||
|
||||
beacons: dict[str, RangeLocatorBeacon]
|
||||
|
||||
|
@ -45,7 +44,7 @@ class RangeLocator:
|
|||
|
||||
@classmethod
|
||||
def build_filename(cls, update):
|
||||
return os.path.join(settings.CACHE_ROOT, 'rangelocator_%s.pickle' % MapUpdate.build_cache_key(*update))
|
||||
return settings.CACHE_ROOT / ('rangelocator_%s.pickle' % MapUpdate.build_cache_key(*update))
|
||||
|
||||
@classmethod
|
||||
def load_nocache(cls, update):
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import logging
|
||||
import operator
|
||||
import os
|
||||
import pickle
|
||||
import threading
|
||||
from collections import deque, namedtuple
|
||||
|
@ -29,7 +28,7 @@ logger = logging.getLogger('c3nav')
|
|||
|
||||
|
||||
class Router:
|
||||
filename = os.path.join(settings.CACHE_ROOT, 'router')
|
||||
filename = settings.CACHE_ROOT / 'router'
|
||||
|
||||
def __init__(self, levels, spaces, areas, pois, groups, restrictions, nodes, edges, waytypes, graph):
|
||||
self.levels = levels
|
||||
|
@ -273,7 +272,7 @@ class Router:
|
|||
|
||||
@classmethod
|
||||
def build_filename(cls, update):
|
||||
return os.path.join(settings.CACHE_ROOT, 'router_%s.pickle' % MapUpdate.build_cache_key(*update))
|
||||
return settings.CACHE_ROOT / ('router_%s.pickle' % MapUpdate.build_cache_key(*update))
|
||||
|
||||
@classmethod
|
||||
def load_nocache(cls, update):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue