Commit bceadd48 by Alexander Kryklia

Merge pull request #1819 from edx/anton/fix-lti-scores

Fix LTI max_score method.
parents 68e1985d 1cd9325e
...@@ -89,7 +89,13 @@ class LTIFields(object): ...@@ -89,7 +89,13 @@ class LTIFields(object):
custom_parameters = List(help="Custom parameters (vbid, book_location, etc..)", scope=Scope.settings) custom_parameters = List(help="Custom parameters (vbid, book_location, etc..)", scope=Scope.settings)
open_in_a_new_page = Boolean(help="Should LTI be opened in new page?", default=True, scope=Scope.settings) open_in_a_new_page = Boolean(help="Should LTI be opened in new page?", default=True, scope=Scope.settings)
graded = Boolean(help="Grades will be considered in overall score.", default=False, scope=Scope.settings) graded = Boolean(help="Grades will be considered in overall score.", default=False, scope=Scope.settings)
weight = Float(help="Weight for student grades.", default=1.0, scope=Scope.settings) weight = Float(
help="Weight for student grades.",
default=1.0,
scope=Scope.settings,
values={"min": 0},
)
has_score = Boolean(help="Does this LTI module have score?", default=False, scope=Scope.settings)
class LTIModule(LTIFields, XModule): class LTIModule(LTIFields, XModule):
...@@ -376,7 +382,7 @@ oauth_consumer_key="", oauth_signature="frVp4JuvT1mVXlxktiAUjQ7%2F1cw%3D"'} ...@@ -376,7 +382,7 @@ oauth_consumer_key="", oauth_signature="frVp4JuvT1mVXlxktiAUjQ7%2F1cw%3D"'}
return params return params
def max_score(self): def max_score(self):
return self.weight return self.weight if self.has_score else None
@XBlock.handler @XBlock.handler
...@@ -582,6 +588,5 @@ class LTIDescriptor(LTIFields, MetadataOnlyEditingDescriptor, EmptyDataRawDescri ...@@ -582,6 +588,5 @@ class LTIDescriptor(LTIFields, MetadataOnlyEditingDescriptor, EmptyDataRawDescri
""" """
Descriptor for LTI Xmodule. Descriptor for LTI Xmodule.
""" """
has_score = True
module_class = LTIModule module_class = LTIModule
grade_handler = module_attr('grade_handler') grade_handler = module_attr('grade_handler')
...@@ -194,6 +194,7 @@ class LTIModuleTest(LogicTest): ...@@ -194,6 +194,7 @@ class LTIModuleTest(LogicTest):
Response from Tool Provider is correct. Response from Tool Provider is correct.
""" """
self.xmodule.verify_oauth_body_sign = Mock() self.xmodule.verify_oauth_body_sign = Mock()
self.xmodule.has_score = True
request = Request(self.environ) request = Request(self.environ)
request.body = self.get_request_body() request.body = self.get_request_body()
response = self.xmodule.grade_handler(request, '') response = self.xmodule.grade_handler(request, '')
...@@ -249,3 +250,16 @@ class LTIModuleTest(LogicTest): ...@@ -249,3 +250,16 @@ class LTIModuleTest(LogicTest):
def test_client_key_secret(self): def test_client_key_secret(self):
pass pass
def test_max_score(self):
self.xmodule.weight = 100.0
self.xmodule.graded = True
self.assertEqual(self.xmodule.max_score(), None)
self.xmodule.has_score = True
self.assertEqual(self.xmodule.max_score(), 100.0)
self.xmodule.graded = False
self.assertEqual(self.xmodule.max_score(), 100.0)
...@@ -44,8 +44,8 @@ Feature: LMS.LTI component ...@@ -44,8 +44,8 @@ Feature: LMS.LTI component
Scenario: Graded LTI component in LMS is correctly works Scenario: Graded LTI component in LMS is correctly works
Given the course has correct LTI credentials Given the course has correct LTI credentials
And the course has an LTI component with correct fields: And the course has an LTI component with correct fields:
| open_in_a_new_page | weight | is_graded | | open_in_a_new_page | weight | is_graded | has_score |
| False | 10 | True | | False | 10 | True | True |
And I submit answer to LTI question And I submit answer to LTI question
And I click on the "Progress" tab And I click on the "Progress" tab
Then I see text "Problem Scores: 5/10" Then I see text "Problem Scores: 5/10"
......
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