Esempio n. 1
0
    def _scan_folder(self, folder: Path):
        """
        @param folder: a Folder
        """
        logger.debug('Scanning Folder: %s' % folder)
        session = database.get_session(new_engine=False)
        try:
            FilesystemObject.by_uri('%s::%s' % (config.HOSTNAME, folder), session)
        except NoResultFound:
            self._add_child(folder)
        finally:
            session.close()

        for child_name in listdir(str(folder)):
            self._queue.put(folder / child_name)
Esempio n. 2
0
    def _scan_file(self, file: Path):
        """
        @param file: a File
        """

        logger.debug('Scanning File: %s' % file)
        session = database.get_session(new_engine=False)
        try:
            db_item = FilesystemObject.by_uri('%s::%s' % (config.HOSTNAME, file), session)
        except NoResultFound:
            self._add_child(file)
            session.close()
            return

        if file.stat().st_size == db_item.size and datetime.fromtimestamp(file.stat().st_mtime) == db_item.mtime:
            pass
        else:
            session.delete(db_item)
            session.commit()
            self._queue.put(file)
            logging.info('Cache mismatch: %r' % db_item)
        session.close()