InvalidScopeError when using custom Scope in Field
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 470
- Forks
- 231
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 6
Description
This is the code I'm currently using to try to do this:
tableStructure = Dict(default={}, scope=Scope(UserScope.NONE, BlockScope.TYPE), help="Help Text")
Whenever I attempt to read the value of the Field, an InvalidScopeError is raised. This doesn't seem to happen with the other predefined Scopes (e.g Scope.content). Furthermore, the error only seems to happen if I attempt to access the value of the Field from within the student_view.
Here is a stack trace:
2014-09-10 10:15:13,883 WARNING 2366 [contentstore.views.preview] preview.py:223 - Unable to render student_view for <TableXBlockWithMixins @4644 rerandomize='never', graded=False, annotation_token_secret='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', giturl=None, source_file=None, course_edit_method='Studio', default_tab=None, showanswer='finished', display_name='Table XBlock', video_speed_optimizations=True, chrome=None, showColumns=[], due=None, start=datetime.datetime(2030, 1, 1, 0, 0, tzinfo=<UTC>), tags=[], days_early_for_beta=None, max_attempts=None, text_customization={}, userRows={}, parent=None, format=None, matlab_api_key=None, xqa_key=None, annotation_storage_url='http://your_annotation_storage.com', use_latex_compiler=False, extended_due=None, static_asset_path='', hide_from_toc=False, count=0, name=None, ispublic=None, user_partitions=[], graceperiod=None, visible_to_staff_only=False, tableStructure=???>
Traceback (most recent call last):
File "/edx/app/edxapp/edx-platform/cms/djangoapps/contentstore/views/preview.py", line 221, in get_preview_fragment
fragment = module.render(preview_view, context)
File "/edx/app/edxapp/venvs/edxapp/src/xblock/xblock/core.py", line 289, in render
return self.runtime.render(self, view, context)
File "/edx/app/edxapp/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1166, in render
return block.xmodule_runtime.render(to_render, view_name, context)
File "/edx/app/edxapp/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1029, in render
return super(MetricsMixin, self).render(block, view_name, context=context)
File "/edx/app/edxapp/venvs/edxapp/src/xblock/xblock/runtime.py", line 586, in render
frag = view_fn(context)
File "/edx/app/edxapp/edx-platform/Table-XBlock/table/table.py", line 68, in student_view
tab = self.tableStructure
File "/edx/app/edxapp/venvs/edxapp/src/xblock/xblock/fields.py", line 369, in __get__
if xblock._field_data.has(xblock, self.name):
File "/edx/app/edxapp/venvs/edxapp/src/xblock/xblock/field_data.py", line 174, in has
return self._field_data(block, name).has(block, name)
File "/edx/app/edxapp/venvs/edxapp/src/xblock/xblock/field_data.py", line 153, in _field_data
raise InvalidScopeError(scope)
InvalidScopeError: ScopeBase(user=UserScope.NONE, block=BlockScope.TYPE, name=u'UserScope.NONE_BlockScope.TYPE')
Traceback (most recent call last):
File "/usr/lib/python2.7/logging/handlers.py", line 810, in emit
self.socket.sendto(msg, self.address)
TypeError: getsockaddrarg: AF_INET address must be tuple, not NoneType
Logged from file preview.py, line 223
[10/Sep/2014 10:15:13] "GET /xblock/i4x://ADL/ADL101/table/ac25938d0f7941878430fbf40c501747/student_view?_=1410358513743 HTTP/1.1" 200 1686
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the custom Scope failure from Table-XBlock/table/table.py in student_view, then trace field access through xblock/fields.py::get and xblock/field_data.py::_field_data. Determine why the custom scope raises InvalidScopeError while predefined scopes work; done means the field can be read in student_view without that exception, with regression coverage if the repository provides a suitable test location.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100