umap/umap/management/commands/migrate_to_S3.py
2024-12-11 19:16:17 +01:00

29 lines
1.1 KiB
Python

from django.conf import settings
from django.core.management.base import BaseCommand
from umap.models import DataLayer
from umap.storage.fs import FSDataStorage
class Command(BaseCommand):
help = "Migrate latest datalayers from filesystem to S3."
def handle(self, *args, **options):
assert settings.UMAP_READONLY, "You must run that script with a read-only uMap."
assert (
settings.STORAGES["data"]["BACKEND"] == "umap.storage.s3.S3DataStorage"
), "You must configure your storages to point to S3"
fs_storage = FSDataStorage()
for datalayer in DataLayer.objects.all():
geojson_fs_path = str(datalayer.geojson)
try:
datalayer.geojson.save(
datalayer.geojson.name, fs_storage.open(geojson_fs_path)
)
except FileNotFoundError as e:
print(e)
print(geojson_fs_path, "not found on disk")
continue
if options["verbosity"] > 1:
print("Migrated:", geojson_fs_path)
datalayer.save(force_update=True)