feat: include user and origin_server info in library archive (#37626)

This commit is contained in:
Daniel Wong
2025-11-19 21:42:27 -06:00
committed by GitHub
parent 7023d76e98
commit 41acf0eb52
7 changed files with 16 additions and 6 deletions

View File

@@ -27,6 +27,7 @@ import shutil
from django.core.files.base import ContentFile
from django.contrib.auth import get_user_model
from django.core.serializers.json import DjangoJSONEncoder
from django.conf import settings
from celery import shared_task
from celery.utils.log import get_task_logger
from celery_utils.logged_task import LoggedTask
@@ -557,7 +558,9 @@ def backup_library(self, user_id: int, library_key_str: str) -> None:
timestamp = datetime.now().strftime("%Y-%m-%d-%H%M%S")
filename = f'{sanitized_lib_key}-{timestamp}.zip'
file_path = os.path.join(root_dir, filename)
create_lib_zip_file(lp_key=str(library_key), path=file_path)
user = User.objects.get(id=user_id)
origin_server = getattr(settings, 'CMS_BASE', None)
create_lib_zip_file(lp_key=str(library_key), path=file_path, user=user, origin_server=origin_server)
set_custom_attribute("exporting_completed", str(library_key))
with open(file_path, 'rb') as zipfile:

View File

@@ -2,6 +2,7 @@
Unit tests for content libraries Celery tasks
"""
from django.test import override_settings
from ..models import ContentLibrary
from .base import ContentLibrariesRestApiTest
@@ -28,6 +29,7 @@ class ContentLibraryBackupTaskTest(ContentLibrariesRestApiTest):
result = backup_library.delay(self.user.id, str(self.lib1.library_key))
assert result.task_id is not None
@override_settings(CMS_BASE="test.com")
def test_backup_task_success(self):
result = backup_library.delay(self.user.id, str(self.lib1.library_key))
assert result.state == 'SUCCESS'
@@ -35,6 +37,11 @@ class ContentLibraryBackupTaskTest(ContentLibrariesRestApiTest):
artifact = UserTaskArtifact.objects.filter(status__task_id=result.task_id, name='Output').first()
assert artifact is not None
assert artifact.file.name.endswith('.zip')
# test artifact content
with artifact.file.open('rb') as f:
content = f.read()
assert b'created_by_email = "bob@example.com"' in content
assert b'origin_server = "test.com"' in content
def test_backup_task_failure(self):
result = backup_library.delay(self.user.id, self.wrong_task_id)

View File

@@ -61,7 +61,7 @@ numpy<2.0.0
# Date: 2023-09-18
# pinning this version to avoid updates while the library is being developed
# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35269
openedx-learning==0.30.0
openedx-learning==0.30.1
# Date: 2023-11-29
# Open AI version 1.0.0 dropped support for openai.ChatCompletion which is currently in use in enterprise.

View File

@@ -842,7 +842,7 @@ openedx-filters==2.1.0
# ora2
openedx-forum==0.3.8
# via -r requirements/edx/kernel.in
openedx-learning==0.30.0
openedx-learning==0.30.1
# via
# -c requirements/constraints.txt
# -r requirements/edx/kernel.in

View File

@@ -1404,7 +1404,7 @@ openedx-forum==0.3.8
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
openedx-learning==0.30.0
openedx-learning==0.30.1
# via
# -c requirements/constraints.txt
# -r requirements/edx/doc.txt

View File

@@ -1020,7 +1020,7 @@ openedx-filters==2.1.0
# ora2
openedx-forum==0.3.8
# via -r requirements/edx/base.txt
openedx-learning==0.30.0
openedx-learning==0.30.1
# via
# -c requirements/constraints.txt
# -r requirements/edx/base.txt

View File

@@ -1066,7 +1066,7 @@ openedx-filters==2.1.0
# ora2
openedx-forum==0.3.8
# via -r requirements/edx/base.txt
openedx-learning==0.30.0
openedx-learning==0.30.1
# via
# -c requirements/constraints.txt
# -r requirements/edx/base.txt