I tried added an open response assessment block, which as far as I can tell this is a core block and so wouldn’t require installing any plugins. I setup the block, although parts of the block seemed unresponsive when clicked on them. It saved okay. But after re-edigint it, and removing all response types except ‘staff’ and saving, the page in studio just shows me an error:
WE'RE HAVING TROUBLE RENDERING YOUR COMPONENT
Students will not be able to access this component. Re-edit your component to fix the error.
Error: Requirements dict must contain "num_required" key
I can’t re-edit the component - the screenshot shows all of the blocks from this unit have gone and all that remains is the error message.
The logs I get on loading this page follow:
cms_1 | 2021-03-07 13:52:49,007 INFO 6 [tracking] [user 3] [ip masked] logger.py:42 - {"name": "/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "context": {"user_id": 3, "path": "/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "course_id": "", "org_id": ""}, "username": "kit", "session": "8dae3c3912f5b16b56ed0f72ed48dbd5", "ip": "masked", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36", "host": "studio.training.example.com", "referer": "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@68053aaaf4044fb6a881a4822db50637", "accept_language": "en,it;q=0.9", "event": "{\"GET\": {}, \"POST\": {}}", "time": "2021-03-07T13:52:49.007332+00:00", "event_type": "/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "event_source": "server", "page": null}
nginx_1 | 172.18.0.2 - - [07/Mar/2021:13:52:49 +0000] http://studio.training.example.com "GET /container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d HTTP/1.1" 200 73362 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@68053aaaf4044fb6a881a4822db50637" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
cms_1 | [pid: 6|app: 0|req: 3892/4600] 172.18.0.11 () {58 vars in 3208 bytes} [Sun Mar 7 13:52:48 2021] GET /container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d => generated 73362 bytes in 251 msecs (HTTP/1.0 200) 7 headers in 474 bytes (1 switches on core 0)
cms_1 | 2021-03-07 13:52:49,786 INFO 6 [tracking] [user 3] [ip masked] logger.py:42 - {"name": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview", "context": {"user_id": 3, "path": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview", "course_id": "", "org_id": ""}, "username": "kit", "session": "8dae3c3912f5b16b56ed0f72ed48dbd5", "ip": "masked", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36", "host": "studio.training.example.com", "referer": "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "accept_language": "en,it;q=0.9", "event": "{\"GET\": {\"_\": [\"1615125164859\"]}, \"POST\": {}}", "time": "2021-03-07T13:52:49.786213+00:00", "event_type": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview", "event_source": "server", "page": null}
cms_1 | 2021-03-07 13:52:50,223 WARNING 6 [cms.djangoapps.contentstore.views.preview] [user 3] [ip masked] preview.py:329 - Unable to render author_view for <VerticalBlockWithMixins @8377 parent=BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'sequential', '0791c48d2b2f4503a92f1ef6ca96bac2'), name=None, tags=[], display_name='Amalgamation', course_edit_method='Studio', days_early_for_beta=None, due=None, edxnotes=False, edxnotes_visibility=True, giturl=None, graceperiod=datetime.timedelta(0), graded=False, group_access={}, in_entrance_exam=False, matlab_api_key=None, max_attempts=1, rerandomize='always', self_paced=True, show_correctness='always', show_reset_button=False, showanswer='attempted', start=datetime.datetime(2021, 1, 1, 0, 0, tzinfo=tzlocal()), static_asset_path='', use_latex_compiler=False, user_partitions=[], video_auto_advance=False, video_bumper={}, video_speed_optimizations=True, visible_to_staff_only=False, xqa_key=None, chrome=None, default_tab=None, format=None, hide_from_toc=False, source_file=None, children=[BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'html', 'ad9d9344d67d4c61938890059ea3eb4f'), BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'html', '001775f061a14a248c44bd14dd69bc1b'), BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'html', 'dab9bdd08de2485587c68ea633b2b430'), BlockUsageLocator(CourseLocator('triangle-tech', 'A1', '2021_T1', None, None), 'openassessment', 'a7a502b5c4804affb32c2c7b7c228286')], hide_after_due=False, is_entrance_exam=False, position=None, xml_attributes={}>
cms_1 | Traceback (most recent call last):
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/openassessment/assessment/api/student_training.py", line 46, in submitter_is_finished
cms_1 | num_required = int(training_requirements['num_required'])
cms_1 | KeyError: 'num_required'
cms_1 |
cms_1 | During handling of the above exception, another exception occurred:
cms_1 |
cms_1 | Traceback (most recent call last):
cms_1 | File "./cms/djangoapps/contentstore/views/preview.py", line 327, in get_preview_fragment
cms_1 | fragment = module.render(preview_view, context)
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/xblock/core.py", line 199, in render
cms_1 | return self.runtime.render(self, view, context)
cms_1 | File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1979, in render
cms_1 | return self.__getattr__('render')(block, view_name, context)
cms_1 | File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1423, in render
cms_1 | return super(MetricsMixin, self).render(block, view_name, context=context)
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/xblock/runtime.py", line 826, in render
cms_1 | frag = view_fn(context)
cms_1 | File "/openedx/edx-platform/common/lib/xmodule/xmodule/vertical_block.py", line 152, in author_view
cms_1 | self.render_children(context, fragment, can_reorder=True, can_add=True)
cms_1 | File "/openedx/edx-platform/common/lib/xmodule/xmodule/studio_editable.py", line 29, in render_children
cms_1 | rendered_child = child.render(StudioEditableModule.get_preview_view_name(child), context)
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/xblock/core.py", line 199, in render
cms_1 | return self.runtime.render(self, view, context)
cms_1 | File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1979, in render
cms_1 | return self.__getattr__('render')(block, view_name, context)
cms_1 | File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1423, in render
cms_1 | return super(MetricsMixin, self).render(block, view_name, context=context)
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/xblock/runtime.py", line 826, in render
cms_1 | frag = view_fn(context)
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/openassessment/xblock/openassessmentblock.py", line 513, in student_view
cms_1 | self.update_workflow_status()
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/openassessment/xblock/workflow_mixin.py", line 111, in update_workflow_status
cms_1 | workflow_api.update_from_assessments(submission_uuid, requirements)
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/openassessment/workflow/api.py", line 265, in update_from_assessments
cms_1 | workflow.update_from_assessments(assessment_requirements, override_submitter_requirements)
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/openassessment/workflow/models.py", line 359, in update_from_assessments
cms_1 | step.update(self.submission_uuid, assessment_requirements)
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/openassessment/workflow/models.py", line 869, in update
cms_1 | if not self.is_submitter_complete() and submitter_finished(submission_uuid, step_reqs):
cms_1 | File "/openedx/venv/lib/python3.8/site-packages/openassessment/assessment/api/student_training.py", line 48, in submitter_is_finished
cms_1 | raise StudentTrainingRequestError(u'Requirements dict must contain "num_required" key')
cms_1 | openassessment.assessment.errors.student_training.StudentTrainingRequestError: Requirements dict must contain "num_required" key
nginx_1 | 172.18.0.2 - - [07/Mar/2021:13:52:50 +0000] http://studio.training.example.com "GET /xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview?_=1615125164859 HTTP/1.1" 200 628 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
cms_1 | [pid: 6|app: 0|req: 3893/4601] 172.18.0.11 () {56 vars in 3175 bytes} [Sun Mar 7 13:52:49 2021] GET /xblock/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d/container_preview?_=1615125164859 => generated 628 bytes in 465 msecs (HTTP/1.0 200) 7 headers in 464 bytes (1 switches on core 0)
cms_1 | 2021-03-07 13:52:50,401 INFO 6 [tracking] [user 3] [ip masked] logger.py:42 - {"name": "/xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "context": {"user_id": 3, "path": "/xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "course_id": "", "org_id": ""}, "username": "kit", "session": "8dae3c3912f5b16b56ed0f72ed48dbd5", "ip": "masked", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36", "host": "studio.training.example.com", "referer": "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "accept_language": "en,it;q=0.9", "event": "{\"GET\": {}, \"POST\": {}}", "time": "2021-03-07T13:52:50.401543+00:00", "event_type": "/xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "event_source": "server", "page": null}
nginx_1 | 172.18.0.2 - - [07/Mar/2021:13:52:50 +0000] http://studio.training.example.com "GET /xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d HTTP/1.1" 200 17973 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
cms_1 | [pid: 6|app: 0|req: 3894/4602] 172.18.0.11 () {56 vars in 3158 bytes} [Sun Mar 7 13:52:50 2021] GET /xblock/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d => generated 17973 bytes in 132 msecs (HTTP/1.0 200) 6 headers in 298 bytes (1 switches on core 0)
cms_1 | 2021-03-07 13:52:50,536 INFO 6 [tracking] [user 3] [ip masked] logger.py:42 - {"name": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view", "context": {"user_id": 3, "path": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view", "course_id": "", "org_id": ""}, "username": "kit", "session": "8dae3c3912f5b16b56ed0f72ed48dbd5", "ip": "masked", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36", "host": "studio.training.example.com", "referer": "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d", "accept_language": "en,it;q=0.9", "event": "{\"GET\": {\"position\": [\"5\"], \"next_url\": [\"/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@4e564195a9c140ef96cc562acae96cdd\"], \"prev_url\": [\"/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@ef1dae049b1847fc873d6b4505e54b21\"], \"_\": [\"1615125164860\"]}, \"POST\": {}}", "time": "2021-03-07T13:52:50.535779+00:00", "event_type": "/xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view", "event_source": "server", "page": null}
nginx_1 | 172.18.0.2 - - [07/Mar/2021:13:52:50 +0000] http://studio.training.example.com "GET /xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view?position=5&next_url=%2Fcontainer%2Fblock-v1%3Atriangle-tech%2BA1%2B2021_T1%2Btype%40vertical%2Bblock%404e564195a9c140ef96cc562acae96cdd&prev_url=%2Fcontainer%2Fblock-v1%3Atriangle-tech%2BA1%2B2021_T1%2Btype%40vertical%2Bblock%40ef1dae049b1847fc873d6b4505e54b21&_=1615125164860 HTTP/1.1" 200 8815 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
cms_1 | [pid: 6|app: 0|req: 3895/4603] 172.18.0.11 () {56 vars in 3689 bytes} [Sun Mar 7 13:52:50 2021] GET /xblock/block-v1:triangle-tech+A1+2021_T1+type@sequential+block@0791c48d2b2f4503a92f1ef6ca96bac2/author_view?position=5&next_url=%2Fcontainer%2Fblock-v1%3Atriangle-tech%2BA1%2B2021_T1%2Btype%40vertical%2Bblock%404e564195a9c140ef96cc562acae96cdd&prev_url=%2Fcontainer%2Fblock-v1%3Atriangle-tech%2BA1%2B2021_T1%2Btype%40vertical%2Bblock%40ef1dae049b1847fc873d6b4505e54b21&_=1615125164860 => generated 8815 bytes in 86 msecs (HTTP/1.0 200) 8 headers in 780 bytes (1 switches on core 0)
cms_1 | [pid: 6|app: -1|req: -1/4604] 172.18.0.11 () {56 vars in 2953 bytes} [Sun Mar 7 13:52:50 2021] GET /static/images/favicon.ico => generated 30237 bytes in 0 msecs via sendfile() (HTTP/1.0 200) 3 headers in 128 bytes (0 switches on core 0)
nginx_1 | 172.18.0.2 - - [07/Mar/2021:13:52:50 +0000] http://studio.training.example.com "GET /static/studio/images/favicon.ico HTTP/1.1" 200 30237 "https://studio.training.example.com/container/block-v1:triangle-tech+A1+2021_T1+type@vertical+block@0a623cde77ff41aebde5501b21c0076d" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36" "49.49.234.128"
redis_1 | 1:M 07 Mar 2021 13:54:04.086 * 10 changes in 300 seconds. Saving...
redis_1 | 1:M 07 Mar 2021 13:54:04.089 * Background saving started by pid 2399
redis_1 | 2399:C 07 Mar 2021 13:54:04.576 * DB saved on disk
redis_1 | 2399:C 07 Mar 2021 13:54:04.579 * RDB: 1 MB of memory used by copy-on-write
redis_1 | 1:M 07 Mar 2021 13:54:04.591 * Background saving terminated with success
redis_1 | 1:M 07 Mar 2021 13:59:05.001 * 10 changes in 300 seconds. Saving...
redis_1 | 1:M 07 Mar 2021 13:59:05.003 * Background saving started by pid 2400
redis_1 | 2400:C 07 Mar 2021 13:59:05.477 * DB saved on disk
redis_1 | 2400:C 07 Mar 2021 13:59:05.479 * RDB: 1 MB of memory used by copy-on-write
redis_1 | 1:M 07 Mar 2021 13:59:05.505 * Background saving terminated with success