|
19 | 19 | from io import StringIO |
20 | 20 | import logging |
21 | 21 | import os |
22 | | -from datetime import datetime |
23 | | -from tempfile import mkdtemp, NamedTemporaryFile |
| 22 | +from tempfile import NamedTemporaryFile |
24 | 23 | import json |
25 | 24 | import shutil |
26 | 25 |
|
27 | 26 | from django.core.files.base import ContentFile |
28 | 27 | from django.contrib.auth import get_user_model |
29 | 28 | from django.core.serializers.json import DjangoJSONEncoder |
30 | | -from django.conf import settings |
31 | 29 | from celery import shared_task |
32 | 30 | from celery.utils.log import get_task_logger |
33 | 31 | from celery_utils.logged_task import LoggedTask |
34 | 32 | from django.core.files import File |
35 | | -from django.utils.text import slugify |
36 | 33 | from edx_django_utils.monitoring import ( |
37 | 34 | set_code_owner_attribute, |
38 | 35 | set_code_owner_attribute_from_module, |
|
58 | 55 | LIBRARY_CONTAINER_UPDATED |
59 | 56 | ) |
60 | 57 | from openedx_content import api as content_api |
61 | | -from openedx_content.api import create_zip_file as create_lib_zip_file |
62 | 58 | from openedx_content.models_api import DraftChangeLog, PublishLog |
63 | | -from path import Path |
64 | 59 | from user_tasks.models import UserTaskArtifact |
65 | 60 | from user_tasks.tasks import UserTask, UserTaskStatus |
66 | 61 | from xblock.fields import Scope |
|
76 | 71 | from cms.djangoapps.contentstore.storage import course_import_export_storage |
77 | 72 |
|
78 | 73 | from . import api |
| 74 | +from .api import create_library_v2_zip |
79 | 75 | from .models import ContentLibraryBlockImportTask |
80 | 76 |
|
81 | 77 | log = logging.getLogger(__name__) |
@@ -508,30 +504,6 @@ def _copy_overrides( |
508 | 504 | store.update_item(dest_block, user_id) |
509 | 505 |
|
510 | 506 |
|
511 | | -def create_library_v2_zip(library_key: LibraryLocatorV2, user: User) -> tuple: |
512 | | - """ |
513 | | - Create a zip backup of a v2 library and return ``(temp_dir, zip_file_path)``. |
514 | | -
|
515 | | - The caller is responsible for cleaning up ``temp_dir`` when done. |
516 | | -
|
517 | | - Args: |
518 | | - library_key: LibraryLocatorV2 identifying the library to export. |
519 | | - user: User object passed to the backup API. |
520 | | -
|
521 | | - Returns: |
522 | | - A tuple of ``(temp_dir as Path, zip_file_path as str)``. |
523 | | - """ |
524 | | - root_dir = Path(mkdtemp()) |
525 | | - sanitized_lib_key = str(library_key).replace(":", "-") |
526 | | - sanitized_lib_key = slugify(sanitized_lib_key, allow_unicode=True) |
527 | | - timestamp = datetime.now().strftime("%Y-%m-%d-%H%M%S") |
528 | | - filename = f'{sanitized_lib_key}-{timestamp}.zip' |
529 | | - file_path = os.path.join(root_dir, filename) |
530 | | - origin_server = getattr(settings, 'CMS_BASE', None) |
531 | | - create_lib_zip_file(lp_key=str(library_key), path=file_path, user=user, origin_server=origin_server) |
532 | | - return root_dir, file_path |
533 | | - |
534 | | - |
535 | 507 | class LibraryBackupTask(UserTask): # pylint: disable=abstract-method |
536 | 508 | """ |
537 | 509 | Base class for tasks related with Library backup functionality. |
|
0 commit comments