class Process(pyi.ProcessEvent): def __init__(self, server, name): self.server = server self.name = name self.db = Database(server=server, name=name) def process_IN_DELETE(self, event): if event.is_dir: return path = os.path.join(event.path, event.name) print "Removing %s..." % path self.db.remove(path) def process_IN_MOVED_TO(self, event): if not event.is_dir: self.process_default(event) return path = os.path.join(event.path, event.name) print "Slurping %s..." % path Slurp([path], server=self.server, name=self.name, progress=False).run() def process_IN_MOVED_FROM(self, event): if not event.is_dir: self.process_IN_DELETE(self, event) path = os.path.join(event.path, event.name) print "Removing %s..." % path self.db.remove_docs(self.db.docs_beneath(path)) def process_default(self, event): if event.is_dir: return path = os.path.join(event.path, event.name) print "Updating %s..." % path for attempt in range(10): try: self.db.add(path) break except EOFError: if attempt < 9: print "File not yet written, waiting a second..." time.sleep(1) else: print "Giving up."