Rename IsoTime to RelativeTime.

This commit is contained in:
Alexander Kryklia
2013-10-21 15:55:49 +03:00
committed by polesye
parent ece4cb6645
commit 2c90fd18f4
7 changed files with 36 additions and 35 deletions

View File

@@ -108,7 +108,7 @@ define(["backbone"], function(Backbone) {
Metadata.GENERIC_TYPE = "Generic";
Metadata.LIST_TYPE = "List";
Metadata.VIDEO_LIST_TYPE = "VideoList";
Metadata.ISO_TIME_TYPE = "IsoTime";
Metadata.RELATIVE_TIME_TYPE = "RelativeTime";
return Metadata;
});

View File

@@ -38,8 +38,9 @@ function(Backbone, _, MetadataModel, AbstractEditor, VideoList) {
}
else if(model.getType() === MetadataModel.VIDEO_LIST_TYPE) {
new VideoList(data);
else if(model.getType() === MetadataModel.ISO_TIME_TYPE) {
new Metadata.IsoTime(data);
}
else if(model.getType() === MetadataModel.RELATIVE_TIME_TYPE) {
new Metadata.RelativeTime(data);
}
else {
// Everything else is treated as GENERIC_TYPE, which uses String editor.
@@ -293,7 +294,7 @@ function(Backbone, _, MetadataModel, AbstractEditor, VideoList) {
}
});
Metadata.IsoTime = Metadata.AbstractEditor.extend({
Metadata.RelativeTime = AbstractEditor.extend({
events : {
"change input" : "updateModel",
@@ -304,7 +305,7 @@ function(Backbone, _, MetadataModel, AbstractEditor, VideoList) {
templateName: "metadata-string-entry",
initialize: function () {
Metadata.AbstractEditor.prototype.initialize.apply(this);
AbstractEditor.prototype.initialize.apply(this);
// This list of definitions is used for creating appropriate
// time format mask;

View File

@@ -118,7 +118,7 @@ class Timedelta(Field):
return ' '.join(values)
class IsoTime(Field):
class RelativeTime(Field):
"""
Field for start_time and end_time video module properties.
@@ -134,8 +134,8 @@ class IsoTime(Field):
In database we previously had float type for start_time and end_time fields,
so we are checking it also.
Python object of IsoTime is datetime.timedelta.
JSONed representation of IsoTime is "HH:MM:SS"
Python object of RelativeTime is datetime.timedelta.
JSONed representation of RelativeTime is "HH:MM:SS"
"""
# Timedeltas are immutable, see http://docs.python.org/2/library/datetime.html#available-types
MUTABLE = False
@@ -151,7 +151,7 @@ class IsoTime(Field):
obj_time = time.strptime(value, '%H:%M:%S')
except ValueError as e:
raise ValueError(
"Incorrect IsoTime value {} was set in XML or serialized."
"Incorrect RelativeTime value {} was set in XML or serialized."
"Original parse message is {}".format(value, e.message)
)
return datetime.timedelta(
@@ -177,7 +177,7 @@ class IsoTime(Field):
if isinstance(value, basestring):
return self._isotime_to_timedelta(value)
msg = "IsoTime Field {0} has bad value '{1}'".format(self._name, value)
msg = "RelativeTime Field {0} has bad value '{1}'".format(self._name, value)
raise TypeError(msg)
def to_json(self, value):
@@ -201,9 +201,9 @@ class IsoTime(Field):
if isinstance(value, datetime.timedelta):
if value.total_seconds() > 86400: # sanity check
raise ValueError(
"IsoTime max value is 23:59:59=86400.0 seconds, "
"RelativeTime max value is 23:59:59=86400.0 seconds, "
"but {} seconds is passed".format(value.total_seconds())
)
return str(value)
raise TypeError("IsoTime: cannot convert {!r} to json".format(value))
raise TypeError("RelativeTime: cannot convert {!r} to json".format(value))

View File

@@ -2,7 +2,7 @@
import datetime
import unittest
from django.utils.timezone import UTC
from xmodule.fields import Date, Timedelta, IsoTime
from xmodule.fields import Date, Timedelta, RelativeTime
from xmodule.timeinfo import TimeInfo
import time
@@ -118,52 +118,52 @@ class TimeInfoTest(unittest.TestCase):
due_date + Timedelta().from_json(grace_pd_string))
class IsoTimeTest(unittest.TestCase):
class RelativeTimeTest(unittest.TestCase):
delta = IsoTime()
delta = RelativeTime()
def test_from_json(self):
self.assertEqual(
IsoTimeTest.delta.from_json('0:05:07'),
RelativeTimeTest.delta.from_json('0:05:07'),
datetime.timedelta(seconds=307)
)
self.assertEqual(
IsoTimeTest.delta.from_json(100.0),
RelativeTimeTest.delta.from_json(100.0),
datetime.timedelta(seconds=100)
)
self.assertEqual(
IsoTimeTest.delta.from_json(None),
RelativeTimeTest.delta.from_json(None),
datetime.timedelta(seconds=0)
)
with self.assertRaises(TypeError):
IsoTimeTest.delta.from_json(1234) # int
RelativeTimeTest.delta.from_json(1234) # int
with self.assertRaises(ValueError):
IsoTimeTest.delta.from_json("77:77:77")
RelativeTimeTest.delta.from_json("77:77:77")
def test_to_json(self):
self.assertEqual(
"1:02:03",
IsoTimeTest.delta.to_json(datetime.timedelta(seconds=3723))
RelativeTimeTest.delta.to_json(datetime.timedelta(seconds=3723))
)
self.assertEqual(
"00:00:00",
IsoTimeTest.delta.to_json(None)
RelativeTimeTest.delta.to_json(None)
)
self.assertEqual(
"0:01:40",
IsoTimeTest.delta.to_json(100.0)
RelativeTimeTest.delta.to_json(100.0)
)
with self.assertRaises(ValueError) as cm:
IsoTimeTest.delta.to_json(datetime.timedelta(seconds=90000))
RelativeTimeTest.delta.to_json(datetime.timedelta(seconds=90000))
self.assertEqual(
cm.exception.message,
"IsoTime max value is 23:59:59=86400.0 seconds, but 90000.0 seconds is passed"
"RelativeTime max value is 23:59:59=86400.0 seconds, but 90000.0 seconds is passed"
)
with self.assertRaises(TypeError):
IsoTimeTest.delta.to_json("123")
RelativeTimeTest.delta.to_json("123")

View File

@@ -10,7 +10,7 @@ from xblock.field_data import DictFieldData
from xblock.fields import Scope, String, Dict, Boolean, Integer, Float, Any, List
from xblock.runtime import DbModel
from xmodule.fields import Date, Timedelta, IsoTime
from xmodule.fields import Date, Timedelta, RelativeTime
from xmodule.modulestore.inheritance import InheritanceKeyValueStore, InheritanceMixin
from xmodule.xml_module import XmlDescriptor, serialize_field, deserialize_field
from xmodule.course_module import CourseDescriptor
@@ -389,10 +389,10 @@ class TestDeserializeTimedelta(TestDeserialize):
self.assertDeserializeNonString()
class TestDeserializeIsoTime(TestDeserialize):
class TestDeserializeRelativeTime(TestDeserialize):
""" Tests deserialize as related to Timedelta type. """
test_field = IsoTime
test_field = RelativeTime
def test_deserialize(self):
"""

View File

@@ -29,7 +29,7 @@ from xmodule.raw_module import EmptyDataRawDescriptor
from xmodule.xml_module import is_pointer_tag, name_to_pathname, deserialize_field
from xmodule.modulestore import Location
from xblock.fields import Scope, String, Boolean, List, Integer, ScopeIds
from xmodule.fields import IsoTime
from xmodule.fields import RelativeTime
from xmodule.modulestore.inheritance import InheritanceKeyValueStore
from xblock.runtime import DbModel
@@ -80,13 +80,13 @@ class VideoFields(object):
scope=Scope.settings,
default=""
)
start_time = IsoTime( # datetime.timedelta object
start_time = RelativeTime( # datetime.timedelta object
help="Start time for the video.",
display_name="Start Time",
scope=Scope.settings,
default=datetime.timedelta(seconds=0)
)
end_time = IsoTime( # datetime.timedelta object
end_time = RelativeTime( # datetime.timedelta object
help="End time for the video.",
display_name="End Time",
scope=Scope.settings,

View File

@@ -13,7 +13,7 @@ from xmodule.modulestore.exceptions import ItemNotFoundError, InsufficientSpecif
from xblock.core import XBlock
from xblock.fields import Scope, Integer, Float, List, XBlockMixin, String
from xmodule.fields import IsoTime
from xmodule.fields import RelativeTime
from xblock.fragment import Fragment
from xblock.runtime import Runtime
from xmodule.errortracker import exc_info_to_str
@@ -709,8 +709,8 @@ class XModuleDescriptor(XModuleMixin, HTMLSnippet, ResourceTemplates, XBlock):
editor_type = "Float"
elif isinstance(field, List):
editor_type = "List"
elif isinstance(field, IsoTime):
editor_type = "IsoTime"
elif isinstance(field, RelativeTime):
editor_type = "RelativeTime"
metadata_fields[field.name]['type'] = editor_type
metadata_fields[field.name]['options'] = [] if values is None else values