Commit 00880fcb by dragonfi

Extract PublishEventMixin to xblock-utils

parent 6f4ea850
...@@ -38,6 +38,8 @@ from xblock.core import XBlock ...@@ -38,6 +38,8 @@ from xblock.core import XBlock
from xblock.fragment import Fragment from xblock.fragment import Fragment
from xblock.plugin import Plugin from xblock.plugin import Plugin
from xblockutils.publish_event import PublishEventMixin
from .models import LightChild as LightChildModel from .models import LightChild as LightChildModel
...@@ -166,7 +168,7 @@ class LightChildrenMixin(XBlockWithChildrenFragmentsMixin): ...@@ -166,7 +168,7 @@ class LightChildrenMixin(XBlockWithChildrenFragmentsMixin):
return fragment, named_child_frags return fragment, named_child_frags
class XBlockWithLightChildren(LightChildrenMixin, XBlock): class XBlockWithLightChildren(LightChildrenMixin, XBlock, PublishEventMixin):
""" """
XBlock base class with support for LightChild XBlock base class with support for LightChild
""" """
......
...@@ -152,21 +152,12 @@ class MentoringBlock(XBlockWithLightChildren, StepParentMixin): ...@@ -152,21 +152,12 @@ class MentoringBlock(XBlockWithLightChildren, StepParentMixin):
return fragment return fragment
@XBlock.json_handler @property
def publish_event(self, data, suffix=''): def additional_publish_event_data(self):
try: return {
event_type = data.pop('event_type') 'user_id': self.scope_ids.user_id,
except KeyError as e: 'component_id': self.url_name,
return {'result': 'error', 'message': 'Missing event_type in JSON data'} }
return self._publish_event(event_type, data)
def _publish_event(self, event_type, data):
data['user_id'] = self.scope_ids.user_id
data['component_id'] = self.url_name
self.runtime.publish(self, event_type, data)
return {'result': 'success'}
@property @property
def title(self): def title(self):
...@@ -262,7 +253,7 @@ class MentoringBlock(XBlockWithLightChildren, StepParentMixin): ...@@ -262,7 +253,7 @@ class MentoringBlock(XBlockWithLightChildren, StepParentMixin):
raw_score = self.score.raw raw_score = self.score.raw
self._publish_event('xblock.mentoring.submitted', { self.publish_event_from_python('xblock.mentoring.submitted', {
'num_attempts': self.num_attempts, 'num_attempts': self.num_attempts,
'submitted_answer': submissions, 'submitted_answer': submissions,
'grade': raw_score, 'grade': raw_score,
...@@ -327,7 +318,7 @@ class MentoringBlock(XBlockWithLightChildren, StepParentMixin): ...@@ -327,7 +318,7 @@ class MentoringBlock(XBlockWithLightChildren, StepParentMixin):
event_data['num_attempts'] = self.num_attempts event_data['num_attempts'] = self.num_attempts
event_data['submitted_answer'] = submissions event_data['submitted_answer'] = submissions
self._publish_event('xblock.mentoring.assessment.submitted', event_data) self.publish_event_from_python('xblock.mentoring.assessment.submitted', event_data)
return { return {
'completed': completed, 'completed': completed,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment