Skip to content

Commit cdcf40c

Browse files
authored
fix: Don't pass version_num to create_next_container_version (#551)
The original version of this code depended upon `version_num` being popped out of `valid_published` before `valid_published` got expanded. A recent change changed the argument order, leading to: TypeError: create_next_container_version() got an unexpected keyword argument 'version_num' whenever restoring an archive with any published containers. This commit restores the original code's order of operations, but a bit more explicitly. Bumps from 0.39.2 to 0.40.0 (it would be 0.39.3, but the previous commit had breaking changes and neglected to bump the minor version)
1 parent 2d5a17b commit cdcf40c

4 files changed

Lines changed: 12 additions & 7 deletions

File tree

src/openedx_content/applets/backup_restore/zipper.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -829,13 +829,12 @@ def _save_container(
829829
for valid_published in containers.get(f"{type_code}_published", []):
830830
entity_key = valid_published.pop("entity_key")
831831
children = self._resolve_children(valid_published, children_map)
832-
self.all_published_entities_versions.add(
833-
(entity_key, valid_published.get('version_num'))
834-
) # Track published version
832+
version_num = valid_published.pop("version_num", None)
833+
self.all_published_entities_versions.add((entity_key, version_num))
835834
containers_api.create_next_container_version(
836835
container_map[entity_key],
836+
force_version_num=version_num,
837837
**valid_published, # should this be allowed to override any of the following fields?
838-
force_version_num=valid_published.pop("version_num", None),
839838
entities=children,
840839
created_by=self.user_id,
841840
)

src/openedx_core/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
"""
77

88
# The version for the entire repository
9-
__version__ = "0.39.2"
9+
__version__ = "0.40.0"

tests/openedx_content/applets/backup_restore/fixtures/library_backup/entities/unit1-b7eafb.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ created = 2025-09-04T22:51:59.271334Z
77
version_num = 2
88

99
[entity.published]
10-
# unpublished: no published_version_num
10+
version_num = 2
1111

1212
[entity.container.unit]
1313

tests/openedx_content/applets/backup_restore/test_restore.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,19 @@ def verify_containers(self, lp):
6666
published_version = publishing_api.get_published_version(container.publishable_entity.id)
6767
assert container.created_by is not None
6868
assert container.created_by.username == "lp_user"
69+
# The unit has been published. The other two containers haven't been.
70+
# It's important that we test with at least one published container in order to
71+
# fully cover _create_container in zipper.py.
6972
if container.key == "unit1-b7eafb":
7073
assert containers_api.get_container_type_code_of(container) == "unit"
7174
assert draft_version is not None
7275
assert draft_version.version_num == 2
7376
assert draft_version.created_by is not None
7477
assert draft_version.created_by.username == "lp_user"
75-
assert published_version is None
78+
assert published_version is not None
79+
assert published_version.version_num == 2
80+
assert published_version.created_by is not None
81+
assert published_version.created_by.username == "lp_user"
7682
elif container.key == "subsection1-48afa3":
7783
assert containers_api.get_container_type_code_of(container) == "subsection"
7884
assert draft_version is not None

0 commit comments

Comments
 (0)