Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
8ff3b4e5
Commit
8ff3b4e5
authored
Feb 25, 2014
by
Gabe Mulley
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2696 from mulby/gabe/add-problem-name-to-events
Add module display name to module related server events
parents
b0ae3a53
fe21f475
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
69 additions
and
0 deletions
+69
-0
lms/djangoapps/courseware/module_render.py
+9
-0
lms/djangoapps/courseware/tests/test_module_render.py
+60
-0
No files found.
lms/djangoapps/courseware/module_render.py
View file @
8ff3b4e5
...
...
@@ -22,6 +22,7 @@ from courseware.model_data import FieldDataCache, DjangoKeyValueStore
from
lms.lib.xblock.field_data
import
LmsFieldData
from
lms.lib.xblock.runtime
import
LmsModuleSystem
,
unquote_slashes
from
edxmako.shortcuts
import
render_to_string
from
eventtracking
import
tracker
from
psychometrics.psychoanalyze
import
make_psychometrics_data_update_handler
from
student.models
import
anonymous_id_for_user
,
user_by_anonymous_id
from
xblock.core
import
XBlock
...
...
@@ -571,6 +572,13 @@ def _invoke_xblock_handler(request, course_id, usage_id, handler, suffix, user):
)
raise
Http404
tracking_context_name
=
'module_callback_handler'
tracking_context
=
{
'module'
:
{
'display_name'
:
descriptor
.
display_name_with_default
,
}
}
field_data_cache
=
FieldDataCache
.
cache_for_descriptor_descendents
(
course_id
,
user
,
...
...
@@ -585,6 +593,7 @@ def _invoke_xblock_handler(request, course_id, usage_id, handler, suffix, user):
req
=
django_to_webob_request
(
request
)
try
:
with
tracker
.
get_tracker
()
.
context
(
tracking_context_name
,
tracking_context
):
resp
=
instance
.
handle
(
handler
,
req
,
suffix
)
except
NoSuchHandlerError
:
...
...
lms/djangoapps/courseware/tests/test_module_render.py
View file @
8ff3b4e5
...
...
@@ -698,3 +698,63 @@ class TestAnonymousStudentId(ModuleStoreTestCase, LoginEnrollmentTestCase):
'f82b5416c9f54b5ce33989511bb5ef2e'
,
self
.
_get_anonymous_id
(
'MITx/6.00x/2013_Spring'
,
descriptor_class
)
)
@override_settings
(
MODULESTORE
=
TEST_DATA_MIXED_MODULESTORE
)
@patch
(
'track.views.tracker'
)
class
TestModuleTrackingContext
(
ModuleStoreTestCase
):
"""
Ensure correct tracking information is included in events emitted during XBlock callback handling.
"""
def
setUp
(
self
):
self
.
user
=
UserFactory
.
create
()
self
.
request
=
RequestFactory
()
.
get
(
'/'
)
self
.
request
.
user
=
self
.
user
self
.
request
.
session
=
{}
self
.
course
=
CourseFactory
.
create
()
self
.
problem_xml
=
OptionResponseXMLFactory
()
.
build_xml
(
question_text
=
'The correct answer is Correct'
,
num_inputs
=
2
,
weight
=
2
,
options
=
[
'Correct'
,
'Incorrect'
],
correct_option
=
'Correct'
)
def
test_context_contains_display_name
(
self
,
mock_tracker
):
problem_display_name
=
u'Option Response Problem'
actual_display_name
=
self
.
handle_callback_and_get_display_name_from_event
(
mock_tracker
,
problem_display_name
)
self
.
assertEquals
(
problem_display_name
,
actual_display_name
)
def
handle_callback_and_get_display_name_from_event
(
self
,
mock_tracker
,
problem_display_name
=
None
):
"""
Creates a fake module, invokes the callback and extracts the display name from the emitted problem_check event.
"""
descriptor_kwargs
=
{
'category'
:
'problem'
,
'data'
:
self
.
problem_xml
}
if
problem_display_name
:
descriptor_kwargs
[
'display_name'
]
=
problem_display_name
descriptor
=
ItemFactory
.
create
(
**
descriptor_kwargs
)
render
.
handle_xblock_callback
(
self
.
request
,
self
.
course
.
id
,
quote_slashes
(
str
(
descriptor
.
location
)),
'xmodule_handler'
,
'problem_check'
,
)
self
.
assertEquals
(
len
(
mock_tracker
.
send
.
mock_calls
),
1
)
mock_call
=
mock_tracker
.
send
.
mock_calls
[
0
]
event
=
mock_call
[
1
][
0
]
self
.
assertEquals
(
event
[
'event_type'
],
'problem_check'
)
return
event
[
'context'
][
'module'
][
'display_name'
]
def
test_missing_display_name
(
self
,
mock_tracker
):
actual_display_name
=
self
.
handle_callback_and_get_display_name_from_event
(
mock_tracker
)
self
.
assertTrue
(
actual_display_name
.
startswith
(
'problem'
))
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment