25
25
from xblock .core import XBlock
26
26
from xblock .fields import Boolean , Dict , Float , Integer , Scope , String , XMLString , List
27
27
from xblock .scorable import ScorableXBlockMixin , Score
28
+ from xblocks_contrib .problem import ProblemBlock as _ExtractedProblemBlock
28
29
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
29
36
from xmodule .capa import responsetypes
30
37
from xmodule .capa .capa_problem import LoncapaProblem , LoncapaSystem
31
38
from xmodule .capa .inputtypes import Status
36
43
from xmodule .exceptions import NotFoundError , ProcessingError
37
44
from xmodule .graders import ShowCorrectness
38
45
from xmodule .raw_block import RawMixin
39
- from xmodule .util . sandboxing import SandboxService
46
+ from xmodule .toggles import USE_EXTRACTED_PROBLEM_BLOCK
40
47
from xmodule .util .builtin_assets import add_webpack_js_to_fragment , add_sass_to_fragment
48
+ from xmodule .util .sandboxing import SandboxService
41
49
from xmodule .x_module import (
42
50
ResourceTemplates ,
43
51
XModuleMixin ,
44
52
XModuleToXBlockMixin ,
45
53
shim_xmodule_js
46
54
)
47
55
from 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
54
56
from .capa .xqueue_interface import XQueueService
55
-
56
57
from .fields import Date , ListScoreField , ScoreField , Timedelta
57
58
from .progress import Progress
58
59
@@ -134,7 +135,7 @@ def from_json(self, value):
134
135
@XBlock .needs ('sandbox' )
135
136
@XBlock .needs ('replace_urls' )
136
137
@XBlock .wants ('call_to_action' )
137
- class ProblemBlock (
138
+ class _BuiltInProblemBlock (
138
139
ScorableXBlockMixin ,
139
140
RawMixin ,
140
141
XmlMixin ,
@@ -161,6 +162,8 @@ class ProblemBlock(
161
162
"""
162
163
INDEX_CONTENT_TYPE = 'CAPA'
163
164
165
+ is_extracted = False
166
+
164
167
resources_dir = None
165
168
166
169
has_score = True
@@ -2509,3 +2512,9 @@ def randomization_bin(seed, problem_id):
2509
2512
r_hash .update (str (problem_id ).encode ())
2510
2513
# get the first few digits of the hash, convert to an int, then mod.
2511
2514
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