X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/0c4a107dcca0b8d22d7404e71a89355845c6ffc1..f17eb34f55544b849b34e9f73013e0224d01408f:/tasklib/serializing.py diff --git a/tasklib/serializing.py b/tasklib/serializing.py index c177984..4594285 100644 --- a/tasklib/serializing.py +++ b/tasklib/serializing.py @@ -5,9 +5,13 @@ import pytz import six import tzlocal + +from .lazy import LazyUUIDTaskSet + DATE_FORMAT = '%Y%m%dT%H%M%SZ' local_zone = tzlocal.get_localzone() + class SerializingObject(object): """ Common ancestor for TaskResource & TaskWarriorFilter, since they both @@ -180,11 +184,18 @@ class SerializingObject(object): def serialize_depends(self, value): # Return the list of uuids value = value if value is not None else set() - return ','.join(task['uuid'] for task in value) + + if isinstance(value, LazyUUIDTaskSet): + return ','.join(value._uuids) + else: + return ','.join(task['uuid'] for task in value) def deserialize_depends(self, raw_uuids): raw_uuids = raw_uuids or [] # Convert None to empty list + if not raw_uuids: + return set() + # TW 2.4.4 encodes list of dependencies as a single string if type(raw_uuids) is not list: uuids = raw_uuids.split(',') @@ -192,7 +203,7 @@ class SerializingObject(object): else: uuids = raw_uuids - return set(self.backend.tasks.get(uuid=uuid) for uuid in uuids if uuid) + return LazyUUIDTaskSet(self.backend, uuids) def datetime_normalizer(self, value): """ @@ -204,8 +215,10 @@ class SerializingObject(object): localized datetime -> localized datetime (no conversion) """ - if (isinstance(value, datetime.date) - and not isinstance(value, datetime.datetime)): + if ( + isinstance(value, datetime.date) + and not isinstance(value, datetime.datetime) + ): # Convert to local midnight value_full = datetime.datetime.combine(value, datetime.time.min) localized = local_zone.localize(value_full) @@ -233,5 +246,3 @@ class SerializingObject(object): "not: {}".format(value)) return value - -