X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/6220d716c07a841b77fba60d50d1e2b57851af84..6b76f794ee4fd89d194903eb9a0487243e06437c:/tasklib/task.py?ds=sidebyside diff --git a/tasklib/task.py b/tasklib/task.py index 17af8d4..789e4ef 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -52,9 +52,6 @@ class ReadOnlyDictView(object): def get(self, key, default=None): return copy.deepcopy(self.viewed_dict.get(key, default)) - def has_key(self, key): - return self.viewed_dict.has_key(key) - def items(self): return [copy.deepcopy(v) for v in self.viewed_dict.items()] @@ -78,6 +75,15 @@ class SerializingObject(object): not export empty-valued attributes) if the attribute is not iterable (e.g. list or set), in which case a empty iterable should be used. + + Normalizing methods should hold the following contract: + - They are used to validate and normalize the user input. + Any attribute value that comes from the user (during Task + initialization, assignign values to Task attributes, or + filtering by user-provided values of attributes) is first + validated and normalized using the normalize_{key} method. + - If validation or normalization fails, normalizer is expected + to raise ValueError. """ def _deserialize(self, key, value): @@ -97,6 +103,10 @@ class SerializingObject(object): or entered as a value of Task attribute. """ + # None value should not be converted by normalizer + if value is None: + return None + normalize_func = getattr(self, 'normalize_{0}'.format(key), lambda x: x) @@ -227,7 +237,7 @@ class SerializingObject(object): # If the value is already localized, there is no need to change # time zone at this point. Also None is a valid value too. localized = value - + return localized def normalize_uuid(self, value):