OpenDroneMap-WebODM/app/management/commands/borg.py

64 wiersze
2.6 KiB
Python

import os
from django.core.management.base import BaseCommand
from django.core.management import call_command
from app.models import Project
from webodm import settings
class Command(BaseCommand):
requires_system_checks = []
def add_arguments(self, parser):
parser.add_argument("action", type=str, choices=['mediapattern'])
parser.add_argument("--skip-images", action='store_true', required=False, help="Skip images")
parser.add_argument("--skip-no-quotas", action='store_true', required=False, help="Skip directories owned by users with no quota (0)")
parser.add_argument("--skip-tiles", action='store_true', required=False, help="Skip tiled assets which can be regenerated from other data")
parser.add_argument("--skip-legacy-textured-models", action='store_true', required=False, help="Skip textured models in OBJ format")
super(Command, self).add_arguments(parser)
def handle(self, **options):
if options.get('action') == 'mediapattern':
print("# BorgBackup pattern file for media directory")
print("# Generated with WebODM")
print("")
print("# Skip anything but project folder")
for d in os.listdir(settings.MEDIA_ROOT):
if d != "project":
print(f"! {d}")
if options.get('skip_no_quotas'):
skip_projects = Project.objects.filter(owner__profile__quota=0).order_by('id')
else:
skip_projects = []
print("")
print("# Skip projects")
for sp in skip_projects:
print("- " + os.path.join("project", str(sp.id)))
if options.get('skip_images'):
print("")
print("# Skip images/other files")
print("- project/*/task/*/*.*")
if options.get('skip_tiles'):
print("")
print("# Skip entwine/potree folders")
print("! project/*/task/*/assets/entwine_pointcloud")
print("! project/*/task/*/assets/potree_pointcloud")
print("")
print("# Skip tiles folders")
print("! project/*/task/*/assets/*_tiles")
print("# Skip data")
print("! project/*/task/*/data")
if options.get('skip_legacy_textured_models'):
print("")
print("# Skip OBJ texture model files")
print("+ project/*/task/*/assets/odm_texturing/*.glb")
print("- project/*/task/*/assets/odm_texturing")