Skip to content

Commit a53166d

Browse files
fix: address some feedback from review (collections)
1 parent 3902b85 commit a53166d

4 files changed

Lines changed: 37 additions & 42 deletions

File tree

src/openedx_content/applets/collections/api.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from __future__ import annotations
66

77
from datetime import datetime, timezone
8+
from functools import partial
89

910
from django.core.exceptions import ValidationError
1011
from django.db.models import QuerySet
@@ -51,24 +52,21 @@ def _queue_change_event(
5152
learning_package_title = collection.learning_package.title
5253

5354
# Send out an event immediately after this database transaction commits.
54-
def send_change_event():
55-
signals.LEARNING_PACKAGE_COLLECTION_CHANGED.send_event(
56-
time=collection.modified,
57-
learning_package=signals.LearningPackageEventData(id=learning_package_id, title=learning_package_title),
58-
# FIXME: most collections APIs are missing a user_id parameter.
59-
changed_by=signals.UserAttributionEventData(user_id=user_id),
60-
change=signals.CollectionChangeData(
61-
collection_id=collection.id,
62-
collection_code=collection.collection_code,
63-
created=created,
64-
metadata_modified=metadata_modified,
65-
deleted=deleted,
66-
entities_added=entities_added or [],
67-
entities_removed=entities_removed or [],
68-
),
69-
)
70-
71-
on_commit(send_change_event)
55+
on_commit(partial(
56+
signals.LEARNING_PACKAGE_COLLECTION_CHANGED.send_event,
57+
time=collection.modified,
58+
learning_package=signals.LearningPackageEventData(id=learning_package_id, title=learning_package_title),
59+
changed_by=signals.UserAttributionEventData(user_id=user_id),
60+
change=signals.CollectionChangeData(
61+
collection_id=collection.id,
62+
collection_code=collection.collection_code,
63+
created=created,
64+
metadata_modified=metadata_modified,
65+
deleted=deleted,
66+
entities_added=entities_added or [],
67+
entities_removed=entities_removed or [],
68+
),
69+
))
7270

7371

7472
def create_collection(

src/openedx_content/applets/publishing/api.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ def publish_from_drafts(
529529
published_draft_ids.add(draft.pk)
530530

531531
_create_side_effects_for_change_log(publish_log)
532-
_emit_event_for_change_log(publish_log, time_stamp=published_at, user_id=published_by)
532+
_emit_event_for_change_log(publish_log, timestamp=published_at, user_id=published_by)
533533

534534
return publish_log
535535

@@ -716,7 +716,7 @@ def set_draft_version(
716716
draft.save()
717717
_create_side_effects_for_change_log(change_log)
718718
# Send out an event immediately after this database transaction commits, since this is an isolated change.
719-
_emit_event_for_change_log(change_log, time_stamp=set_at, user_id=set_by)
719+
_emit_event_for_change_log(change_log, timestamp=set_at, user_id=set_by)
720720

721721

722722
def _add_to_existing_draft_change_log(
@@ -953,7 +953,7 @@ def _create_side_effects_for_change_log(change_log: DraftChangeLog | PublishLog)
953953

954954

955955
def _emit_event_for_change_log(
956-
change_log: PublishLog | DraftChangeLog, time_stamp: datetime, user_id: int | None
956+
change_log: PublishLog | DraftChangeLog, timestamp: datetime, user_id: int | None
957957
) -> None:
958958
"""
959959
Construct and emit the _CHANGED / _PUBLISHED event when a set of entities is
@@ -986,15 +986,13 @@ def _emit_event_for_change_log(
986986
change_log_data = signals.PublishLogEventData(publish_log_id=change_log.id, changes=changes)
987987

988988
# Send out an event immediately after this database transaction commits.
989-
def send_change_event():
990-
signal.send_event(
991-
time=time_stamp,
992-
learning_package=signals.LearningPackageEventData(id=learning_package_id, title=learning_package_title),
993-
changed_by=signals.UserAttributionEventData(user_id=user_id),
994-
change_log=change_log_data,
995-
)
996-
997-
on_commit(send_change_event)
989+
on_commit(partial(
990+
signal.send_event,
991+
time=timestamp,
992+
learning_package=signals.LearningPackageEventData(id=learning_package_id, title=learning_package_title),
993+
changed_by=signals.UserAttributionEventData(user_id=user_id),
994+
change_log=change_log_data,
995+
))
998996

999997

1000998
def update_dependencies_hash_digests_for_log(
@@ -1457,6 +1455,6 @@ def bulk_draft_changes_for(
14571455
changed_by=changed_by,
14581456
exit_callbacks=[
14591457
_create_side_effects_for_change_log,
1460-
partial(_emit_event_for_change_log, time_stamp=changed_at, user_id=changed_by),
1458+
partial(_emit_event_for_change_log, timestamp=changed_at, user_id=changed_by),
14611459
]
14621460
)

src/openedx_content/applets/publishing/signal_handlers.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
Django signal handlers for the publishing applet.
33
"""
44

5+
from functools import partial
6+
57
from django.db import transaction
68
from django.db.models.signals import post_delete
79
from django.dispatch import receiver
@@ -11,14 +13,14 @@
1113

1214

1315
@receiver(post_delete, sender=LearningPackage)
14-
def _emit_learning_package_deleted(sender, instance, **kwargs): # pylint: disable=unused-argument
16+
def emit_learning_package_deleted(sender, instance, **kwargs): # pylint: disable=unused-argument
1517
"""
1618
Emit ``LEARNING_PACKAGE_DELETED`` after a ``LearningPackage`` is deleted.
1719
1820
This fires for any deletion: single-object ``.delete()``, bulk
1921
``QuerySet.delete()`` (Django calls ``post_delete`` once per row), or
2022
deletions performed via the Django admin. There is currently no official API
21-
for deleting Learning Packages, but you can orhpan them by deleting any
23+
for deleting Learning Packages, but you can orphan them by deleting any
2224
references to them such as ``ContentLibrary`` instances in openedx-platform.
2325
2426
The event is deferred via ``transaction.on_commit`` so that it is only
@@ -31,12 +33,9 @@ def _emit_learning_package_deleted(sender, instance, **kwargs): # pylint: disab
3133
``title`` at handler-invocation time so that the event payload remains
3234
correct even though the underlying record is no longer retrievable.
3335
"""
34-
lp_id = instance.id
35-
lp_title = instance.title
36-
37-
def send_event():
38-
LEARNING_PACKAGE_DELETED.send_event(
39-
learning_package=LearningPackageEventData(id=lp_id, title=lp_title),
36+
transaction.on_commit(
37+
partial(
38+
LEARNING_PACKAGE_DELETED.send_event,
39+
learning_package=LearningPackageEventData(id=instance.id, title=instance.title),
4040
)
41-
42-
transaction.on_commit(send_event)
41+
)

tests/openedx_content/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""Shared fixtures for collection tests."""
1+
"""Shared fixtures for openedx_content tests."""
22

33
import pytest
44
from celery import current_app # type: ignore[import]

0 commit comments

Comments
 (0)