Skip to content

Commit

Permalink
fix: separate importdemolibrary from importdemocourse
Browse files Browse the repository at this point in the history
  • Loading branch information
kdmccormick committed Jan 19, 2024
1 parent dbe1e0a commit 633a87f
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 26 deletions.
17 changes: 13 additions & 4 deletions tests/commands/test_jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,20 @@ def test_import_demo_course(self) -> None:
self.assertIn(
"git clone https://github.com/openedx/openedx-demo-course", dc_args[-1]
)
self.assertIn("Skipped demo library import", dc_args[-1])

def test_import_demo_course_and_library(self) -> None:
def test_import_demo_library(self) -> None:
with temporary_root() as root:
self.invoke_in_root(root, ["config", "save"])
with patch("tutor.utils.docker_compose") as mock_docker_compose:
result = self.invoke_in_root(
root, ["local", "do", "importdemocourse", "-L", "admin"]
root,
[
"local",
"do",
"importdemolibrary",
"-t" "fake/path.tar.gz",
"admin",
],
)
dc_args, _dc_kwargs = mock_docker_compose.call_args
self.assertIsNone(result.exception)
Expand All @@ -56,7 +62,10 @@ def test_import_demo_course_and_library(self) -> None:
self.assertIn(
"git clone https://github.com/openedx/openedx-demo-course", dc_args[-1]
)
self.assertIn("./manage.py cms import_content_library ", dc_args[-1])
self.assertIn(
"./manage.py cms import_content_library /tmp/course/fake/path.tar.gz admin",
dc_args[-1],
)

def test_set_theme(self) -> None:
with temporary_root() as root:
Expand Down
59 changes: 37 additions & 22 deletions tutor/commands/jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ def create_user_template(
"""


@click.command(help="Import the demo course and content library")
@click.command(help="Import the demo course")
@click.option(
"-r",
"--repo",
Expand All @@ -133,41 +133,55 @@ def create_user_template(
"--repo-dir",
default="demo-course/course",
show_default=True,
help="Git relative subdirectory to import course data from",
help="Git relative subdirectory to import data from",
)
@click.option(
"-l",
"--library-tar",
default="dist/demo-content-library.tar.gz",
"-v",
"--version",
help="Git branch, tag or sha1 identifier. If unspecified, will default to the value of the OPENEDX_COMMON_VERSION setting.",
)
def importdemocourse(
repo: str, repo_dir: str, version: t.Optional[str]
) -> t.Iterable[tuple[str, str]]:
version = version or "{{ OPENEDX_COMMON_VERSION }}"
template = f"""
# Import demo course
git clone {repo} --branch {version} --depth 1 /tmp/course
python ./manage.py cms import ../data /tmp/course/{repo_dir}
# Re-index courses
./manage.py cms reindex_course --all --setup"""
yield ("cms", template)


@click.command(help="Import the demo content library")
@click.argument("owner_username")
@click.option(
"-r",
"--repo",
default="https://github.com/openedx/openedx-demo-course",
show_default=True,
help="Git relative .tar.gz path to import content library from",
help="Git repository that contains the library to be imported",
)
@click.option(
"-L",
"--library-owner",
"-t",
"--repo-tar-path",
default="dist/demo-content-library.tar.gz",
show_default=True,
help="Name of Open edX user who will own the library. If omitted, library import will be skipped.",
help="Git relative .tar.gz path to import content library from",
)
@click.option(
"-v",
"--version",
help="Git branch, tag or sha1 identifier. If unspecified, will default to the value of the OPENEDX_COMMON_VERSION setting.",
)
def importdemocourse(
repo: str,
repo_dir: str,
library_tar: str,
library_owner: t.Optional[str],
version: t.Optional[str],
def importdemolibrary(
owner_username: str, repo: str, repo_tar_path: str, version: t.Optional[str]
) -> t.Iterable[tuple[str, str]]:
version = version or "{{ OPENEDX_COMMON_VERSION }}"
template = f"git clone {repo} --branch {version} --depth 1 /tmp/course"
if library_owner:
template += f"\nyes | ./manage.py cms import_content_library /tmp/course/{library_tar} {library_owner}"
else:
template += "\necho 'WARNING: Skipped demo library import because --library-owner was not provided.'"
template += f"\npython ./manage.py cms import ../data /tmp/course/{repo_dir}"
template += f"\n./manage.py cms reindex_course --all --setup"
template = f"""
git clone {repo} --branch {version} --depth 1 /tmp/course
yes | ./manage.py cms import_content_library /tmp/course/{repo_tar_path} {owner_username}"""
yield ("cms", template)


Expand Down Expand Up @@ -341,6 +355,7 @@ def do_callback(service_commands: t.Iterable[tuple[str, str]]) -> None:
[
createuser,
importdemocourse,
importdemolibrary,
initialise,
print_edx_platform_setting,
settheme,
Expand Down

0 comments on commit 633a87f

Please sign in to comment.