示例#1
0
    def __init__(self, log=log):
        self.log = log
        self._zclient = ZeitgeistClient()
        self._zdclient = ZeitgeistDBusInterface()
        self._database = DesktopDatabase(DATABASE_NAME, create=True)

        self._user = os.environ.get('USERNAME')
        self._machine = os.uname()
示例#2
0
    def on_db_change(self, callback=None, dbname=DATABASE_NAME, every=2):
        '''
        Set some function to be called when db entry content changed
        Call this function with callback=False to remove change watch
        The callback will be called with same keyworkd that in _changes
        Consult _changes for more info
        http://wiki.apache.org/couchdb/HTTP_database_API#Continuous_.28Nohangeshangesn-Polling.29_Feed
        Examples:
        Insert or Update case
        >>> callback(**{
        >>>     "seq":331,
        >>>     "id":"<_id of document entry>",
        >>>     "changes":[{"rev":"<_rev of document entry>"}]
        >>> })
        Delete case
        >>> callback(**{
        >>>     "seq":334,
        >>>     "id":"<_id of document entry>",
        >>>     "changes":[{"rev":"<_rev of document entry>"}],
        >>>     "deleted":True
        >>> })
        
        callback: callable, called with changes
        dbname: name of database do watch
        every: time in seconds, how many seconds to wait and rescan for changes
        '''
        db = self._databases.get(dbname)
        if db:
            gobject.source_remove(db['onchangeeventid'])
        else:
            self._databases[dbname] = db = {
                'dbinstance': self._database  if dbname is DATABASE_NAME\
                    else DesktopDatabase(dbname)
            }

        def watch_changes():
            db['dbinstance'].report_changes(callback)
            db['onchangeeventid'] = \
                gobject.timeout_add_seconds(every, watch_changes)

        if callback:
            watch_changes()