Пример #1
0
Файл: watch.py Проект: nex3/mdb
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."