Example #1
0
    def __init__(self, client, options, logger=None):

        self._key_attribute = options.get('key', 'title')
        self._folder = None

        # self._maxsize = None

        if isinstance(client, ToodledoAPI):
            self._client = client
        else:
            self._client = ToodledoAPI.get_session(**client)

        Sync.__init__(self, options, logger, 'tdsync')

        if self.signature is None:
            if options.get('folder'):
                folder = options.get('folder')
                if self._client.folders.get(folder):
                    self._folder = self._client.folders[folder]
                    signature = {
                        'label': options.get('label'),
                        'folder': self._folder['name'],
                        'id': self._folder['id']
                    }
                    self.options.update({'signature': signature})
                else:
                    error = u'Folder [%s] not found!' % (utf8(folder))
                    self.logger.error(error)
                    raise SyncInitError(error)
            else:
                self.logger.warning(u'No folder specified in sync options')
        else:
            self._folder = self.client.folders[self.signature['id']]
Example #2
0
    def __init__(self, client, options, logger=None):

        self._key_attribute = options.get('key','title')
        self._folder = None

        # self._maxsize = None

        if isinstance(client, ToodledoAPI):
            self._client = client
        else:
            self._client = ToodledoAPI.get_session(**client)

        Sync.__init__(self, options, logger, 'tdsync')

        if self.signature is None:
            if options.get('folder'):
                folder = options.get('folder')
                if self._client.folders.get(folder):
                    self._folder = self._client.folders[folder]
                    signature = {'label': options.get('label'),
                                 'folder': self._folder['name'],
                                 'id': self._folder['id']}
                    self.options.update({'signature': signature})
                else:
                    error = u'Folder [%s] not found!' % (utf8(folder))
                    self.logger.error(error)
                    raise SyncInitError(error)
            else:
                self.logger.warning(u'No folder specified in sync options')
        else:
            self._folder = self.client.folders[self.signature['id']]
Example #3
0
    def __init__(self, data=None, tdapi=None, parent=None, **kwargs):

        self.__dict__['_data'] = data if data is not None else {}
        self.__dict__['_properties'] = None
        self.__dict__['_modified'] = None
        self.__dict__['_deleted'] = None
        self.__dict__['_created'] = None
        self.__dict__['_parent'] = parent
        self.__dict__['_tdapi'] = tdapi or ToodledoAPI.get_session()
        self.__dict__['_uuid'] = str(uuid.uuid1())

        for key in kwargs:
            self.__setitem__(key, kwargs[key])
Example #4
0
    def session(options, _logger):
        if options:
            if options.get('cache') is not None:
                if options.get('secrets'):
                    secrets = options['secrets']
                    if secrets.get('client_id'):
                        if secrets.get('client_secret'):
                            return ToodledoAPI.get_session(cache=options.get('cache'),
                                                           client_id=secrets['client_id'],
                                                           client_secret=secrets['client_secret'],
                                                           logger=_logger)
                else:
                    error = 'Missing secrets in Toodledo options'
            else:
                error = 'Missing cache specification in Toodledo options'
        else:
            error = 'Missing Toodledo options'

        LogAdapter(_logger, {'package': 'tdsync'}).error(error)
        raise SyncSessionError(error)
        return None
Example #5
0
    def session(options, _logger):
        if options:
            if options.get('cache') is not None:
                if options.get('secrets'):
                    secrets = options['secrets']
                    if secrets.get('client_id'):
                        if secrets.get('client_secret'):
                            return ToodledoAPI.get_session(
                                cache=options.get('cache'),
                                client_id=secrets['client_id'],
                                client_secret=secrets['client_secret'],
                                logger=_logger)
                else:
                    error = 'Missing secrets in Toodledo options'
            else:
                error = 'Missing cache specification in Toodledo options'
        else:
            error = 'Missing Toodledo options'

        LogAdapter(_logger, {'package': 'tdsync'}).error(error)
        raise SyncSessionError(error)
        return None
Example #6
0
    def __init__(self, bean_class, data, tdapi=None):

        self._bean_class = bean_class
        self._beans = []
        self._tdapi = tdapi or ToodledoAPI.get_session()
        self._lastedit = None
        self._deleted = OrderedDict()
        self._modified = OrderedDict()
        self._created = OrderedDict()
        self._uuid_map = {}
        self._key_attributes = ['id', 'name']
        self._filter = lambda bean: True

        if isinstance(data, dict):
            # loaded from cache ...
            if data.get('data') is not None:
                self._lastedit = data.get('lastedit')
                data = data.get('data')

        for item in data:
            # generate a list of typed beans from data
            self._beans.append(bean_class(item, self._tdapi, self))
Example #7
0
 def end_session(cls, logger, **kwargs):
     logger.debug(u'End session called for %s' % (cls))
     # invalidate current session and clear caches
     ToodledoAPI.set_session(None)
Example #8
0
 def end_session(cls, logger, **kwargs):
     logger.debug(u'End session called for %s' % (cls))
     # invalidate current session and clear caches
     ToodledoAPI.set_session(None)