# Getattr is called only if the attribute could not be found using
# normal means
self.replace()
- return self.name
+ return getattr(self, name)
def __eq__(self, other):
if other['uuid']:
def __hash__(self):
return self['uuid'].__hash__()
+ def __repr__(self):
+ return "LazyUUIDTask: {0}".format(self._uuid)
+
+ @property
+ def saved(self):
+ """
+ Implementation of the 'saved' property. Always returns True.
+ """
+ return True
+
def replace(self):
"""
Performs conversion to the regular Task object, referenced by the
def __getattr__(self, name):
# Getattr is called only if the attribute could not be found using
# normal means
- self.replace()
- return self.name
+
+ if name.startswith('__'):
+ # If some internal method was being search, do not convert
+ # to TaskQuerySet just because of that
+ raise AttributeError
+ else:
+ self.replace()
+ return getattr(self, name)
+
+ def __repr__(self):
+ return "LazyUUIDTaskSet([{0}])".format(', '.join(self._uuids))
def __eq__(self, other):
return set(t['uuid'] for t in other) == self._uuids
+ def __ne__(self, other):
+ return not (self == other)
+
def __contains__(self, task):
return task['uuid'] in self._uuids
return len(self._uuids)
def __iter__(self):
- self.replace()
- for task in self:
- yield task
+ for uuid in self._uuids:
+ yield LazyUUIDTask(self._tw, uuid)
+
+ def __sub__(self, other):
+ return LazyUUIDTaskSet(self._tw,
+ self._uuids - set(t['uuid'] for t in other))
+
+ def __isub__(self, other):
+ self._uuids -= set(t['uuid'] for t in other)
+ return self
+
+ def __or__(self, other):
+ return LazyUUIDTaskSet(self._tw,
+ self._uuids | set(t['uuid'] for t in other))
+
+ def __ior__(self, other):
+ self._uuids |= set(t['uuid'] for t in other)
+ return self
def replace(self):
"""