Source code for todoist.managers.generic

# -*- coding: utf-8 -*-
[docs]class Manager(object): # should be re-defined in a subclass state_name = None object_type = None def __init__(self, api): self.api = api # shortcuts @property def state(self): return self.api.state @property def queue(self): return self.api.queue @property def token(self): return self.api.token
[docs]class AllMixin(object):
[docs] def all(self, filt=None): return list(filter(filt, self.state[self.state_name]))
[docs]class GetByIdMixin(object):
[docs] def get_by_id(self, obj_id, only_local=False): """ Finds and returns the object based on its id. """ for obj in self.state[self.state_name]: if obj['id'] == obj_id or obj.temp_id == str(obj_id): return obj if not only_local and self.object_type is not None: getter = getattr(eval('self.api.%ss' % self.object_type), 'get') data = getter(obj_id) # retrieves from state, otherwise we return the raw data for obj in self.state[self.state_name]: if obj['id'] == obj_id or obj.temp_id == str(obj_id): return obj return data return None
[docs]class SyncMixin(object): """ Syncs this specific type of objects. """
[docs] def sync(self): return self.api.sync()