Merge pull request #21050 from edx/LEARNER-3761/capa-grading-exception

Restrict grading endpoints in LMS
This commit is contained in:
Uzair Rasheed
2019-07-25 14:23:24 +05:00
committed by GitHub
2 changed files with 31 additions and 10 deletions

View File

@@ -577,16 +577,17 @@ def get_module_system_for_user(
"""
Submit a grade for the block.
"""
grades_signals.SCORE_PUBLISHED.send(
sender=None,
block=block,
user=user,
raw_earned=event['value'],
raw_possible=event['max_value'],
only_if_higher=event.get('only_if_higher'),
score_deleted=event.get('score_deleted'),
grader_response=event.get('grader_response')
)
if not user.is_anonymous():
grades_signals.SCORE_PUBLISHED.send(
sender=None,
block=block,
user=user,
raw_earned=event['value'],
raw_possible=event['max_value'],
only_if_higher=event.get('only_if_higher'),
score_deleted=event.get('score_deleted'),
grader_response=event.get('grader_response')
)
def handle_deprecated_progress_event(block, event):
"""

View File

@@ -906,6 +906,26 @@ class TestHandleXBlockCallback(SharedModuleStoreTestCase, LoginEnrollmentTestCas
with self.assertRaises(BlockCompletion.DoesNotExist):
BlockCompletion.objects.get(block_key=block.scope_ids.usage_id)
@XBlock.register_temp_plugin(GradedStatelessXBlock, identifier='stateless_scorer')
@patch('lms.djangoapps.courseware.module_render.grades_signals.SCORE_PUBLISHED.send')
def test_anonymous_user_not_be_graded(self, mock_score_signal):
course = CourseFactory.create()
descriptor_kwargs = {
'category': 'problem',
}
request = self.request_factory.get('/')
request.user = AnonymousUser()
descriptor = ItemFactory.create(**descriptor_kwargs)
render.handle_xblock_callback(
request,
text_type(course.id),
quote_slashes(text_type(descriptor.location)),
'xmodule_handler',
'problem_check',
)
self.assertFalse(mock_score_signal.called)
@ddt.ddt
@patch.dict('django.conf.settings.FEATURES', {'ENABLE_XBLOCK_VIEW_ENDPOINT': True})