Skip to content

Commit bfe31a5

Browse files
ormsbeemarlonkeating
authored andcommitted
feat: record the user for library content writes (#36513)
We were previously not recording who was doing write/delete/reset operations. Prior to openedx-learning 0.23.0, we didn't have a place to write the user for a reset-to-publish. Upgrades the openedx-learning pin, 0.22 -> 0.23
1 parent b25d5bc commit bfe31a5

10 files changed

Lines changed: 22 additions & 14 deletions

File tree

openedx/core/djangoapps/content_libraries/api/blocks.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,10 @@ def get_or_create_olx_media_type(block_type: str) -> MediaType:
639639
)
640640

641641

642-
def delete_library_block(usage_key: LibraryUsageLocatorV2, remove_from_parent=True) -> None:
642+
def delete_library_block(
643+
usage_key: LibraryUsageLocatorV2,
644+
user_id: int | None = None,
645+
) -> None:
643646
"""
644647
Delete the specified block from this library (soft delete).
645648
"""
@@ -648,7 +651,7 @@ def delete_library_block(usage_key: LibraryUsageLocatorV2, remove_from_parent=Tr
648651
affected_collections = authoring_api.get_entity_collections(component.learning_package_id, component.key)
649652
affected_containers = get_containers_contains_component(usage_key)
650653

651-
authoring_api.soft_delete_draft(component.pk)
654+
authoring_api.soft_delete_draft(component.pk, deleted_by=user_id)
652655

653656
LIBRARY_BLOCK_DELETED.send_event(
654657
library_block=LibraryBlockData(
@@ -685,7 +688,7 @@ def delete_library_block(usage_key: LibraryUsageLocatorV2, remove_from_parent=Tr
685688
)
686689

687690

688-
def restore_library_block(usage_key: LibraryUsageLocatorV2) -> None:
691+
def restore_library_block(usage_key: LibraryUsageLocatorV2, user_id: int | None = None) -> None:
689692
"""
690693
Restore the specified library block.
691694
"""
@@ -694,7 +697,11 @@ def restore_library_block(usage_key: LibraryUsageLocatorV2) -> None:
694697
affected_collections = authoring_api.get_entity_collections(component.learning_package_id, component.key)
695698

696699
# Set draft version back to the latest available component version id.
697-
authoring_api.set_draft_version(component.pk, component.versioning.latest.pk)
700+
authoring_api.set_draft_version(
701+
component.pk,
702+
component.versioning.latest.pk,
703+
set_by=user_id,
704+
)
698705

699706
LIBRARY_BLOCK_CREATED.send_event(
700707
library_block=LibraryBlockData(

openedx/core/djangoapps/content_libraries/api/libraries.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -721,14 +721,14 @@ def publish_changes(library_key: LibraryLocatorV2, user_id: int | None = None):
721721
)
722722

723723

724-
def revert_changes(library_key: LibraryLocatorV2) -> None:
724+
def revert_changes(library_key: LibraryLocatorV2, user_id: int | None = None) -> None:
725725
"""
726726
Revert all pending changes to the specified library, restoring it to the
727727
last published version.
728728
"""
729729
learning_package = ContentLibrary.objects.get_by_key(library_key).learning_package
730730
assert learning_package is not None # shouldn't happen but it's technically possible.
731-
authoring_api.reset_drafts_to_published(learning_package.id)
731+
authoring_api.reset_drafts_to_published(learning_package.id, reset_by=user_id)
732732

733733
CONTENT_LIBRARY_UPDATED.send_event(
734734
content_library=ContentLibraryData(

openedx/core/djangoapps/content_libraries/rest_api/blocks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def delete(self, request, usage_key_str): # pylint: disable=unused-argument
140140
"""
141141
key = LibraryUsageLocatorV2.from_string(usage_key_str)
142142
api.require_permission_for_library_key(key.lib_key, request.user, permissions.CAN_EDIT_THIS_CONTENT_LIBRARY)
143-
api.delete_library_block(key)
143+
api.delete_library_block(key, user_id=request.user.id)
144144
return Response({})
145145

146146

@@ -346,7 +346,7 @@ def post(self, request, usage_key_str) -> Response:
346346
"""
347347
key = LibraryUsageLocatorV2.from_string(usage_key_str)
348348
api.require_permission_for_library_key(key.lib_key, request.user, permissions.CAN_EDIT_THIS_CONTENT_LIBRARY)
349-
api.restore_library_block(key)
349+
api.restore_library_block(key, request.user.id)
350350
return Response(None, status=status.HTTP_204_NO_CONTENT)
351351

352352

openedx/core/djangoapps/content_libraries/rest_api/libraries.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ def delete(self, request, lib_key_str): # pylint: disable=unused-argument
475475
"""
476476
key = LibraryLocatorV2.from_string(lib_key_str)
477477
api.require_permission_for_library_key(key, request.user, permissions.CAN_EDIT_THIS_CONTENT_LIBRARY)
478-
api.revert_changes(key)
478+
api.revert_changes(key, request.user.id)
479479
return Response({})
480480

481481

openedx/core/djangoapps/xblock/runtime/learning_core_runtime.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ def save_block(self, block):
311311
"block.xml": content.id,
312312
},
313313
created=now,
314+
created_by=self.user.id if self.user else None
314315
)
315316
self.authored_data_store.mark_unchanged(block)
316317

requirements/constraints.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ numpy<2.0.0
112112
# Date: 2023-09-18
113113
# pinning this version to avoid updates while the library is being developed
114114
# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35269
115-
openedx-learning==0.22.0
115+
openedx-learning==0.23.0
116116

117117
# Date: 2023-11-29
118118
# Open AI version 1.0.0 dropped support for openai.ChatCompletion which is currently in use in enterprise.

requirements/edx/base.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ openedx-filters==2.0.1
820820
# ora2
821821
openedx-forum==0.2.0
822822
# via -r requirements/edx/kernel.in
823-
openedx-learning==0.22.0
823+
openedx-learning==0.23.0
824824
# via
825825
# -c requirements/edx/../constraints.txt
826826
# -r requirements/edx/kernel.in

requirements/edx/development.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1383,7 +1383,7 @@ openedx-forum==0.2.0
13831383
# via
13841384
# -r requirements/edx/doc.txt
13851385
# -r requirements/edx/testing.txt
1386-
openedx-learning==0.22.0
1386+
openedx-learning==0.23.0
13871387
# via
13881388
# -c requirements/edx/../constraints.txt
13891389
# -r requirements/edx/doc.txt

requirements/edx/doc.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -992,7 +992,7 @@ openedx-filters==2.0.1
992992
# ora2
993993
openedx-forum==0.2.0
994994
# via -r requirements/edx/base.txt
995-
openedx-learning==0.22.0
995+
openedx-learning==0.23.0
996996
# via
997997
# -c requirements/edx/../constraints.txt
998998
# -r requirements/edx/base.txt

requirements/edx/testing.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1050,7 +1050,7 @@ openedx-filters==2.0.1
10501050
# ora2
10511051
openedx-forum==0.2.0
10521052
# via -r requirements/edx/base.txt
1053-
openedx-learning==0.22.0
1053+
openedx-learning==0.23.0
10541054
# via
10551055
# -c requirements/edx/../constraints.txt
10561056
# -r requirements/edx/base.txt

0 commit comments

Comments
 (0)