Ejemplo n.º 1
0
    def load_collections(self, path):
        """Looks in the choosed path for new collections"""
        allfiles = []
        collections = {}
        try:
            allfiles = os.listdir(path)
        except Exception as error:
            logging.exception(error)

        pers_man = PersistenceManager.get_instance()
        for item in allfiles:
            c_path = os.path.join(path, item)
            if Collection.is_collection_folder(c_path):
                self.storage = PersistenceManager.load_schema(
                    c_path,
                    item,
                    readonly=False)
                self._raw = self.storage.load()
                raw = self._raw
                persistence = raw['persistence']
                schemas = raw['schemas']
                for id_ in schemas:
                    file_ = Schema(item, id_, schemas[id_])
                    storage = pers_man.get_storage(
                        file_,
                        persistence['storage'],
                        c_path
                    )
                    collection = Folder(
                        id_,
                        file_,
                        storage)
                    collections[id_] = collection
                # TODO this notify must be a hook
                for collection in collections.values():
                    collection.persistence.all_created()
                #TODO load more than one
                return collections
                # except Exception:
                #     pass
        return collections