feat: add _runtime_services attribute to DescriptorSystem
This commit is contained in:
committed by
Agrendalath
parent
7d8f54fa88
commit
20ed3d64ec
@@ -223,7 +223,7 @@ def _preview_module_system(request, descriptor, field_data):
|
||||
# Set up functions to modify the fragment produced by student_view
|
||||
descriptor.runtime.wrappers = wrappers
|
||||
descriptor.runtime.wrappers_asides = wrappers_asides
|
||||
descriptor.runtime._services.update(services)
|
||||
descriptor.runtime._runtime_services.update(services) # lint-amnesty, pylint: disable=protected-access
|
||||
|
||||
# xmodules can check for this attribute during rendering to determine if
|
||||
# they are being rendered for preview (i.e. in Studio)
|
||||
|
||||
@@ -627,7 +627,7 @@ def get_module_system_for_user(
|
||||
descriptor.runtime.mixins = descriptor.runtime.mixologist._mixins
|
||||
|
||||
descriptor.runtime.wrappers = block_wrappers
|
||||
descriptor.runtime._services.update(services)
|
||||
descriptor.runtime._runtime_services.update(services) # lint-amnesty, pylint: disable=protected-access
|
||||
descriptor.runtime.request_token = request_token
|
||||
|
||||
descriptor.runtime.wrap_asides_override = lms_wrappers_aside
|
||||
|
||||
@@ -1070,7 +1070,7 @@ class ModuleSystemShim:
|
||||
'runtime.anonymous_student_id is deprecated. Please use the user service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
user_service = self._services.get('user')
|
||||
user_service = self._runtime_services.get('user') or self._services.get('user')
|
||||
if user_service:
|
||||
return user_service.get_current_user().opt_attrs.get(ATTR_KEY_ANONYMOUS_USER_ID)
|
||||
return None
|
||||
@@ -1100,7 +1100,7 @@ class ModuleSystemShim:
|
||||
'runtime.user_id is deprecated. Please use the user service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
user_service = self._services.get('user')
|
||||
user_service = self._runtime_services.get('user') or self._services.get('user')
|
||||
if user_service:
|
||||
return user_service.get_current_user().opt_attrs.get(ATTR_KEY_USER_ID)
|
||||
return None
|
||||
@@ -1116,9 +1116,9 @@ class ModuleSystemShim:
|
||||
'runtime.user_is_staff is deprecated. Please use the user service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
user_service = self._services.get('user')
|
||||
user_service = self._runtime_services.get('user') or self._services.get('user')
|
||||
if user_service:
|
||||
return self._services['user'].get_current_user().opt_attrs.get(ATTR_KEY_USER_IS_STAFF)
|
||||
return user_service.get_current_user().opt_attrs.get(ATTR_KEY_USER_IS_STAFF)
|
||||
return None
|
||||
|
||||
@property
|
||||
@@ -1132,9 +1132,9 @@ class ModuleSystemShim:
|
||||
'runtime.user_location is deprecated. Please use the user service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
user_service = self._services.get('user')
|
||||
user_service = self._runtime_services.get('user') or self._services.get('user')
|
||||
if user_service:
|
||||
return self._services['user'].get_current_user().opt_attrs.get(ATTR_KEY_REQUEST_COUNTRY_CODE)
|
||||
return user_service.get_current_user().opt_attrs.get(ATTR_KEY_REQUEST_COUNTRY_CODE)
|
||||
return None
|
||||
|
||||
@property
|
||||
@@ -1152,9 +1152,9 @@ class ModuleSystemShim:
|
||||
'runtime.get_real_user is deprecated. Please use the user service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
user_service = self._services.get('user')
|
||||
user_service = self._runtime_services.get('user') or self._services.get('user')
|
||||
if user_service:
|
||||
return self._services['user'].get_user_by_anonymous_id
|
||||
return user_service.get_user_by_anonymous_id
|
||||
return None
|
||||
|
||||
@property
|
||||
@@ -1170,9 +1170,9 @@ class ModuleSystemShim:
|
||||
'runtime.get_user_role is deprecated. Please use the user service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
user_service = self._services.get('user')
|
||||
user_service = self._runtime_services.get('user') or self._services.get('user')
|
||||
if user_service:
|
||||
return partial(self._services['user'].get_current_user().opt_attrs.get, ATTR_KEY_USER_ROLE)
|
||||
return partial(user_service.get_current_user().opt_attrs.get, ATTR_KEY_USER_ROLE)
|
||||
|
||||
@property
|
||||
def render_template(self):
|
||||
@@ -1188,7 +1188,7 @@ class ModuleSystemShim:
|
||||
)
|
||||
if hasattr(self, '_deprecated_render_template'):
|
||||
return self._deprecated_render_template
|
||||
render_service = self._services.get('mako')
|
||||
render_service = self._runtime_services.get('mako') or self._services.get('mako')
|
||||
if render_service:
|
||||
return render_service.render_template
|
||||
return None
|
||||
@@ -1222,7 +1222,7 @@ class ModuleSystemShim:
|
||||
'runtime.xqueue is deprecated. Please use the xqueue service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
xqueue_service = self._services.get('xqueue')
|
||||
xqueue_service = self._runtime_services.get('xqueue') or self._services.get('xqueue')
|
||||
if xqueue_service:
|
||||
return {
|
||||
'interface': xqueue_service.interface,
|
||||
@@ -1244,7 +1244,7 @@ class ModuleSystemShim:
|
||||
'runtime.can_execute_unsafe_code is deprecated. Please use the sandbox service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
sandbox_service = self._services.get('sandbox')
|
||||
sandbox_service = self._runtime_services.get('sandbox') or self._services.get('sandbox')
|
||||
if sandbox_service:
|
||||
return sandbox_service.can_execute_unsafe_code
|
||||
# Default to saying "no unsafe code".
|
||||
@@ -1264,7 +1264,7 @@ class ModuleSystemShim:
|
||||
'runtime.get_python_lib_zip is deprecated. Please use the sandbox service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
sandbox_service = self._services.get('sandbox')
|
||||
sandbox_service = self._runtime_services.get('sandbox') or self._services.get('sandbox')
|
||||
if sandbox_service:
|
||||
return sandbox_service.get_python_lib_zip
|
||||
# Default to saying "no lib data"
|
||||
@@ -1283,7 +1283,7 @@ class ModuleSystemShim:
|
||||
'runtime.cache is deprecated. Please use the cache service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
return self._services.get('cache') or DoNothingCache()
|
||||
return self._runtime_services.get('cache') or self._services.get('cache') or DoNothingCache()
|
||||
|
||||
@property
|
||||
def replace_urls(self):
|
||||
@@ -1296,7 +1296,7 @@ class ModuleSystemShim:
|
||||
'runtime.replace_urls is deprecated. Please use the replace_urls service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
replace_urls_service = self._services.get('replace_urls')
|
||||
replace_urls_service = self._runtime_services.get('replace_urls') or self._services.get('replace_urls')
|
||||
if replace_urls_service:
|
||||
return partial(replace_urls_service.replace_urls, static_replace_only=True)
|
||||
|
||||
@@ -1311,7 +1311,7 @@ class ModuleSystemShim:
|
||||
'runtime.replace_course_urls is deprecated. Please use the replace_urls service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
replace_urls_service = self._services.get('replace_urls')
|
||||
replace_urls_service = self._runtime_services.get('replace_urls') or self._services.get('replace_urls')
|
||||
if replace_urls_service:
|
||||
return partial(replace_urls_service.replace_urls)
|
||||
|
||||
@@ -1326,7 +1326,7 @@ class ModuleSystemShim:
|
||||
'runtime.replace_jump_to_id_urls is deprecated. Please use the replace_urls service instead.',
|
||||
DeprecationWarning, stacklevel=3,
|
||||
)
|
||||
replace_urls_service = self._services.get('replace_urls')
|
||||
replace_urls_service = self._runtime_services.get('replace_urls') or self._services.get('replace_urls')
|
||||
if replace_urls_service:
|
||||
return partial(replace_urls_service.replace_urls)
|
||||
|
||||
@@ -1379,7 +1379,7 @@ class ModuleSystemShim:
|
||||
"rebind_noauth_module_to_user is deprecated. Please use the 'rebind_user' service instead.",
|
||||
DeprecationWarning, stacklevel=3
|
||||
)
|
||||
rebind_user_service = self._services.get('rebind_user')
|
||||
rebind_user_service = self._runtime_services.get('rebind_user') or self._services.get('rebind_user')
|
||||
if rebind_user_service:
|
||||
return partial(rebind_user_service.rebind_noauth_module_to_user)
|
||||
|
||||
@@ -1466,6 +1466,7 @@ class DescriptorSystem(MetricsMixin, ConfigurableFragmentWrapper, ModuleSystemSh
|
||||
self.get_policy = lambda u: {}
|
||||
|
||||
self.disabled_xblock_types = disabled_xblock_types
|
||||
self._runtime_services = {}
|
||||
|
||||
def get(self, attr):
|
||||
""" provide uniform access to attributes (like etree)."""
|
||||
@@ -1559,7 +1560,7 @@ class DescriptorSystem(MetricsMixin, ConfigurableFragmentWrapper, ModuleSystemSh
|
||||
Publish events through the `EventPublishingService`.
|
||||
This ensures that the correct track method is used for Instructor tasks.
|
||||
"""
|
||||
if publish_service := self._services.get('publish'):
|
||||
if publish_service := self._runtime_services.get('publish') or self._services.get('publish'):
|
||||
publish_service.publish(block, event_type, event)
|
||||
|
||||
def service(self, block, service_name):
|
||||
@@ -1576,8 +1577,11 @@ class DescriptorSystem(MetricsMixin, ConfigurableFragmentWrapper, ModuleSystemSh
|
||||
Returns:
|
||||
An object implementing the requested service, or None.
|
||||
"""
|
||||
# getting the service from parent module. making sure of block service declarations.
|
||||
service = super().service(block=block, service_name=service_name)
|
||||
declaration = block.service_declaration(service_name)
|
||||
service = self._runtime_services.get(service_name)
|
||||
if declaration is None or service is None:
|
||||
# getting the service from parent module. making sure of block service declarations.
|
||||
service = super().service(block=block, service_name=service_name)
|
||||
# Passing the block to service if it is callable e.g. XBlockI18nService. It is the responsibility of calling
|
||||
# service to handle the passing argument.
|
||||
if callable(service):
|
||||
|
||||
Reference in New Issue
Block a user