2525from xblock .core import XBlock
2626from xblock .fields import Boolean , Dict , Float , Integer , Scope , String , XMLString , List
2727from xblock .scorable import ScorableXBlockMixin , Score
28+ from xblocks_contrib .problem import ProblemBlock as _ExtractedProblemBlock
2829
30+ from common .djangoapps .xblock_django .constants import (
31+ ATTR_KEY_DEPRECATED_ANONYMOUS_USER_ID ,
32+ ATTR_KEY_USER_IS_STAFF ,
33+ ATTR_KEY_USER_ID ,
34+ )
35+ from openedx .core .djangolib .markup import HTML , Text
2936from xmodule .capa import responsetypes
3037from xmodule .capa .capa_problem import LoncapaProblem , LoncapaSystem
3138from xmodule .capa .inputtypes import Status
3643from xmodule .exceptions import NotFoundError , ProcessingError
3744from xmodule .graders import ShowCorrectness
3845from xmodule .raw_block import RawMixin
39- from xmodule .util . sandboxing import SandboxService
46+ from xmodule .toggles import USE_EXTRACTED_PROBLEM_BLOCK
4047from xmodule .util .builtin_assets import add_webpack_js_to_fragment , add_sass_to_fragment
48+ from xmodule .util .sandboxing import SandboxService
4149from xmodule .x_module import (
4250 ResourceTemplates ,
4351 XModuleMixin ,
4452 XModuleToXBlockMixin ,
4553 shim_xmodule_js
4654)
4755from xmodule .xml_block import XmlMixin
48- from common .djangoapps .xblock_django .constants import (
49- ATTR_KEY_DEPRECATED_ANONYMOUS_USER_ID ,
50- ATTR_KEY_USER_IS_STAFF ,
51- ATTR_KEY_USER_ID ,
52- )
53- from openedx .core .djangolib .markup import HTML , Text
5456from .capa .xqueue_interface import XQueueService
55-
5657from .fields import Date , ListScoreField , ScoreField , Timedelta
5758from .progress import Progress
5859
@@ -134,7 +135,7 @@ def from_json(self, value):
134135@XBlock .needs ('sandbox' )
135136@XBlock .needs ('replace_urls' )
136137@XBlock .wants ('call_to_action' )
137- class ProblemBlock (
138+ class _BuiltInProblemBlock (
138139 ScorableXBlockMixin ,
139140 RawMixin ,
140141 XmlMixin ,
@@ -161,6 +162,8 @@ class ProblemBlock(
161162 """
162163 INDEX_CONTENT_TYPE = 'CAPA'
163164
165+ is_extracted = False
166+
164167 resources_dir = None
165168
166169 has_score = True
@@ -2509,3 +2512,9 @@ def randomization_bin(seed, problem_id):
25092512 r_hash .update (str (problem_id ).encode ())
25102513 # get the first few digits of the hash, convert to an int, then mod.
25112514 return int (r_hash .hexdigest ()[:7 ], 16 ) % NUM_RANDOMIZATION_BINS
2515+
2516+
2517+ ProblemBlock = (
2518+ _ExtractedProblemBlock if USE_EXTRACTED_PROBLEM_BLOCK .is_enabled ()
2519+ else _BuiltInProblemBlock
2520+ )
0 commit comments