Skip to content

Commit 8e1d626

Browse files
committed
Conditional publishing of QTI archives instead of perseus.
1 parent a99a523 commit 8e1d626

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

contentcuration/contentcuration/utils/publish.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
from contentcuration import models as ccmodels
4545
from contentcuration.decorators import delay_user_storage_calculation
4646
from contentcuration.utils.assessment.perseus import PerseusExerciseGenerator
47+
from contentcuration.utils.assessment.qti.archive import QTIExerciseGenerator
4748
from contentcuration.utils.cache import delete_public_channel_cache_keys
4849
from contentcuration.utils.files import create_thumbnail_from_base64
4950
from contentcuration.utils.files import get_thumbnail_encoding
@@ -318,12 +319,21 @@ def recurse_nodes(self, node, inherited_fields): # noqa C901
318319

319320
if node.kind_id == content_kinds.EXERCISE:
320321
exercise_data = process_assessment_metadata(node, kolibrinode)
322+
any_free_response = any(
323+
t == exercises.FREE_RESPONSE
324+
for t in exercise_data["assessment_mapping"].values()
325+
)
326+
generator_class = (
327+
QTIExerciseGenerator
328+
if any_free_response
329+
else PerseusExerciseGenerator
330+
)
321331
if (
322332
self.force_exercises
323333
or node.changed
324-
or not node.files.filter(preset_id=format_presets.EXERCISE).exists()
334+
or not node.files.filter(preset_id=generator_class.preset).exists()
325335
):
326-
generator = PerseusExerciseGenerator(
336+
generator = generator_class(
327337
node,
328338
exercise_data,
329339
self.channel_id,

0 commit comments

Comments
 (0)