Skip to content

Add support for Python 3.8+ #11

@dyudyunov

Description

@dyudyunov

Hello!

I've installed the xBlock on Maple release and discovered the following:

When I'm trying to edit and save the xBlock in the studio (see screenshot attached), I'm receiving an error:

Mar 10 09:03:45 lms-maple-dev [service_variant=cms][root][env:sandbox] ERROR [lms-maple-dev  3207192] [user None] [ip None] [signals.py:22] - Uncaught exception from None
Traceback (most recent call last):
  File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python3.8/contextlib.py", line 75, in inner
    return func(*args, **kwds)
  File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/edx/app/edxapp/edx-platform/cms/djangoapps/contentstore/views/component.py", line 503, in component_handler
    resp = handler_descriptor.handle(handler, req, suffix)
  File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/xblock/mixins.py", line 84, in handle
    return self.runtime.handle(self, handler_name, request, suffix)
  File "/edx/app/edxapp/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1448, in handle
    return super().handle(block, handler_name, request, suffix=suffix)
  File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/xblock/runtime.py", line 1081, in handle
    results = handler(request, suffix)
  File "/edx/app/edxapp/venvs/edxapp/lib/python3.8/site-packages/xblock/mixins.py", line 63, in wrapper
    response = func(self, request_json, suffix)
  File "/edx/app/edxapp/venvs/edxapp/src/feedback-xblock/feedback/feedback.py", line 283, in studio_submit
    self.prompts[0][item] = cgi.escape(item_submission)
AttributeError: module 'cgi' has no attribute 'escape'

Here is where the error line lives:

self.prompts[0][item] = cgi.escape(item_submission)

Another place using this function:
self.prompts[0]['scale_text'][i] = cgi.escape(likert)

The problem is cgi.escape() was deprecated since py3.2 and removed since py3.8

Could you please update the xBlock to support py3.8+?

AFAIK the preferred replacement for cgi.escape() is html.escape()

image

PS
I don't know if any other issues related to py3.8+ support existing

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions