Commit 969c75a7 by Nimisha Asthagiri

Fix for grade assertions

parent d772cb0a
...@@ -108,20 +108,23 @@ def get_score(submissions_scores, csm_scores, persisted_block, block): ...@@ -108,20 +108,23 @@ def get_score(submissions_scores, csm_scores, persisted_block, block):
_get_score_from_persisted_or_latest_block(persisted_block, block, weight) _get_score_from_persisted_or_latest_block(persisted_block, block, weight)
) )
assert weighted_possible is not None if weighted_possible is None or weighted_earned is None:
has_valid_denominator = weighted_possible > 0.0 return None
graded = _get_graded_from_block(persisted_block, block) if has_valid_denominator else False
else:
return ProblemScore( has_valid_denominator = weighted_possible > 0.0
raw_earned, graded = _get_graded_from_block(persisted_block, block) if has_valid_denominator else False
raw_possible,
weighted_earned, return ProblemScore(
weighted_possible, raw_earned,
weight, raw_possible,
graded, weighted_earned,
display_name=display_name_with_default_escaped(block), weighted_possible,
module_id=block.location, weight,
) graded,
display_name=display_name_with_default_escaped(block),
module_id=block.location,
)
def weighted_score(raw_earned, raw_possible, weight): def weighted_score(raw_earned, raw_possible, weight):
...@@ -191,7 +194,10 @@ def _get_score_from_persisted_or_latest_block(persisted_block, block, weight): ...@@ -191,7 +194,10 @@ def _get_score_from_persisted_or_latest_block(persisted_block, block, weight):
else: else:
raw_possible = block.transformer_data[GradesTransformer].max_score raw_possible = block.transformer_data[GradesTransformer].max_score
return (raw_earned, raw_possible) + weighted_score(raw_earned, raw_possible, weight) if raw_possible is None:
return (raw_earned, raw_possible) + (None, None)
else:
return (raw_earned, raw_possible) + weighted_score(raw_earned, raw_possible, weight)
def _get_weight_from_block(persisted_block, block): def _get_weight_from_block(persisted_block, block):
......
...@@ -3,6 +3,7 @@ Grades Transformer ...@@ -3,6 +3,7 @@ Grades Transformer
""" """
from django.test.client import RequestFactory from django.test.client import RequestFactory
from functools import reduce as functools_reduce from functools import reduce as functools_reduce
from logging import getLogger
from courseware.model_data import FieldDataCache from courseware.model_data import FieldDataCache
from courseware.module_render import get_module_for_descriptor from courseware.module_render import get_module_for_descriptor
...@@ -11,6 +12,9 @@ from openedx.core.lib.block_structure.transformer import BlockStructureTransform ...@@ -11,6 +12,9 @@ from openedx.core.lib.block_structure.transformer import BlockStructureTransform
from openedx.core.djangoapps.util.user_utils import SystemUser from openedx.core.djangoapps.util.user_utils import SystemUser
log = getLogger(__name__)
class GradesTransformer(BlockStructureTransformer): class GradesTransformer(BlockStructureTransformer):
""" """
The GradesTransformer collects grading information and stores it on The GradesTransformer collects grading information and stores it on
...@@ -119,8 +123,10 @@ class GradesTransformer(BlockStructureTransformer): ...@@ -119,8 +123,10 @@ class GradesTransformer(BlockStructureTransformer):
Collect the `max_score` from the given module, storing it as a Collect the `max_score` from the given module, storing it as a
`transformer_block_field` associated with the `GradesTransformer`. `transformer_block_field` associated with the `GradesTransformer`.
""" """
score = module.max_score() max_score = module.max_score()
block_structure.set_transformer_block_field(module.location, cls, 'max_score', score) block_structure.set_transformer_block_field(module.location, cls, 'max_score', max_score)
if max_score is None:
log.warning("GradesTransformer: max_score is None for {}".format(module.location))
@staticmethod @staticmethod
def _iter_scorable_xmodules(block_structure): def _iter_scorable_xmodules(block_structure):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment