From 43c2c6ea8775883fa85b42efa79d4e2dcae74134 Mon Sep 17 00:00:00 2001 From: Maya Date: Mon, 24 Aug 2020 22:51:26 +0300 Subject: [PATCH] Merged migrations into one file --- .../migrations/0028_data_storage_method.py | 17 ++++++ .../migrations/0029_auto_20200814_2153.py | 53 ------------------- 2 files changed, 17 insertions(+), 53 deletions(-) delete mode 100644 cvat/apps/engine/migrations/0029_auto_20200814_2153.py diff --git a/cvat/apps/engine/migrations/0028_data_storage_method.py b/cvat/apps/engine/migrations/0028_data_storage_method.py index 6490f5bf..4bd8f757 100644 --- a/cvat/apps/engine/migrations/0028_data_storage_method.py +++ b/cvat/apps/engine/migrations/0028_data_storage_method.py @@ -1,8 +1,24 @@ # Generated by Django 2.2.13 on 2020-08-13 05:49 +from cvat.apps.engine.media_extractors import _is_archive, _is_zip import cvat.apps.engine.models +from django.conf import settings from django.db import migrations, models +import os +from pyunpack import Archive +def unzip(apps, schema_editor): + Data = apps.get_model("engine", "Data") + data_q_set = Data.objects.all() + archive_paths = [] + + for data_instance in data_q_set: + for root, _, files in os.walk(os.path.join(settings.MEDIA_DATA_ROOT, '{}/raw/'.format(data_instance.id))): + archive_paths.extend([os.path.join(root, file) for file in files if _is_archive(file) or _is_zip(file)]) + + for path in archive_paths: + Archive(path).extractall(os.path.dirname(path)) + os.remove(path) class Migration(migrations.Migration): @@ -16,4 +32,5 @@ class Migration(migrations.Migration): name='storage_method', field=models.CharField(choices=[('cache', 'CACHE'), ('file_system', 'FILE_SYSTEM')], default=cvat.apps.engine.models.StorageMethodChoice('file_system'), max_length=15), ), + migrations.RunPython(unzip), ] diff --git a/cvat/apps/engine/migrations/0029_auto_20200814_2153.py b/cvat/apps/engine/migrations/0029_auto_20200814_2153.py deleted file mode 100644 index f81c73c8..00000000 --- a/cvat/apps/engine/migrations/0029_auto_20200814_2153.py +++ /dev/null @@ -1,53 +0,0 @@ -from django.db import migrations -from django.conf import settings -import os -from cvat.apps.engine.mime_types import mimetypes -from pyunpack import Archive - -def unzip(apps, schema_editor): - Data = apps.get_model("engine", "Data") - data_q_set = Data.objects.all() - archive_paths = [] - archive_mimes = [ - 'application/gzip', - 'application/rar' - 'application/x-7z-compressed', - 'application/x-bzip', - 'application/x-bzip-compressed-tar', - 'application/x-compress', - 'application/x-compressed-tar', - 'application/x-cpio', - 'application/x-gtar-compressed', - 'application/x-lha', - 'application/x-lhz', - 'application/x-lrzip-compressed-tar', - 'application/x-lz4', - 'application/x-lzip', - 'application/x-lzip-compressed-tar', - 'application/x-lzma', - 'application/x-lzma-compressed-tar', - 'application/x-lzop', - 'application/x-tar', - 'application/x-tarz', - 'application/x-tzo', - 'application/x-xz-compressed-tar', - 'application/zip', - ] - - for data_instance in data_q_set: - for root, _, files in os.walk(os.path.join(settings.MEDIA_DATA_ROOT, '{}/raw/'.format(data_instance.id))): - archive_paths.extend([os.path.join(root, file) for file in files if mimetypes.guess_type(file)[0] in archive_mimes]) - - for path in archive_paths: - Archive(path).extractall(os.path.dirname(path)) - os.remove(path) - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0028_data_storage_method'), - ] - - operations = [ - migrations.RunPython(unzip) - ] \ No newline at end of file