From 57b3ceba2709537bc2669460af5c00a25fab05d8 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 12 Dec 2012 12:47:50 -0500 Subject: [PATCH] Add a field type that treats a string as an int --- common/lib/xmodule/xmodule/capa_module.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 7e8ad9210f..1f49435ca2 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -21,6 +21,16 @@ from xmodule.raw_module import RawDescriptor from xmodule.exceptions import NotFoundError from .model import Int, Scope, ModuleScope, ModelType, String, Boolean, Object, Float + +class StringyInt(Int): + """ + A model type that converts from strings to integers when reading from json + """ + def from_json(self, value): + if isinstance(value, basestring): + return int(value) + return value + log = logging.getLogger("mitx.courseware") #----------------------------------------------------------------------------- @@ -88,7 +98,7 @@ class CapaModule(XModule): icon_class = 'problem' attempts = Int(help="Number of attempts taken by the student on this problem", default=0, scope=Scope.student_state) - max_attempts = Int(help="Maximum number of attempts that a student is allowed", scope=Scope.settings) + max_attempts = StringyInt(help="Maximum number of attempts that a student is allowed", scope=Scope.settings) due = String(help="Date that this problem is due by", scope=Scope.settings) graceperiod = Timedelta(help="Amount of time after the due date that submissions will be accepted", scope=Scope.settings) show_answer = String(help="When to show the problem answer to the student", scope=Scope.settings, default="closed")