Exemple #1
0
    def delete(self, file_id: int) -> Dict[str, Any]:
        """永久删除文件"""
        storage = models.Storages.find_or_fail(file_id)
        factory = StorageFactory(storage)
        factory.hard_delete()
        db.session.commit()

        return {"code": 0, "msg": "success"}
Exemple #2
0
def add_storage(store: FileStorage) -> "Storages":
    # pylint: disable=W0621
    from smorest_sfs.services.storages.handlers import StorageFactory
    from smorest_sfs.modules.storages.models import Storages

    factory = StorageFactory(
        Storages(name="test.txt", storetype="foo",
                 store=store))  # type: ignore
    storage: "Storages" = factory.save()
    return storage
Exemple #3
0
    def test_model_load(self) -> None:
        from smorest_sfs.services.storages.handlers import StorageFactory
        from smorest_sfs.modules.storages.models import Storages

        factory = StorageFactory(self.storage)
        factory.save()
        storage = Storages.find_or_fail(self.storage.id_)
        for _ in range(3):
            storage.as_stream()
            assert storage.store.read() == b"abc"
Exemple #4
0
    def test_model_save(self) -> None:
        from smorest_sfs.services.storages.handlers import StorageFactory
        from smorest_sfs.utils.storages import load_storage_from_path

        factory = StorageFactory(self.storage)
        factory.save()
        if self.storage.name and self.storage.path:
            store = load_storage_from_path(self.storage.name,
                                           self.storage.path)
        assert store.read() == b"abc" and self.storage.store.read() == b"abc"
Exemple #5
0
    def put(self, args, file_id):
        """
        修改文件
        """
        args["store"] = args.pop("file")
        storage = models.Storages.get_by_id(file_id)
        factory = StorageFactory(storage)
        logger.info(f"修改了文件{storage.name} id: {storage.id}")
        factory.update(**args)

        return {"code": 0, "msg": "success"}
Exemple #6
0
    def put(self, args: Dict[str, FileStorage],
            file_id: int) -> Dict[str, Union[int, str]]:
        """
        修改文件
        """
        args["store"] = args.pop("file")
        storage = models.Storages.find_or_fail(file_id)
        factory = StorageFactory(storage)
        logger.info(f"修改了文件{storage.name} id: {storage.id_}")
        factory.update(**args)
        db.session.commit()

        return {"code": 0, "msg": "success"}
Exemple #7
0
    def post(self, args, storetype: str):
        """
        上传文件
        """
        logger.info(f"上传了文件{args['file'].filename}")
        args["_store"] = args.pop("file")
        factory = StorageFactory(models.Storages(storetype=storetype, **args))
        factory.save()

        return {
            "code": 0,
            "msg": "success",
            "data": {
                "file_id": factory.storage.id
            }
        }
Exemple #8
0
    def post(self, args: Dict[str, FileStorage],
             storetype: str) -> Dict[str, Union[int, str, Dict[str, int]]]:
        """
        上传文件
        """
        logger.info(f"上传了文件{args['file'].filename}")
        args["store"] = args.pop("file")
        factory = StorageFactory(models.Storages(storetype=storetype, **args))
        factory.save()
        db.session.commit()

        return {
            "code": 0,
            "msg": "success",
            "data": {
                "file_id": factory.storage.id_
            }
        }
Exemple #9
0
    def test_model_update(self) -> None:
        from smorest_sfs.services.storages.handlers import StorageFactory
        from smorest_sfs.modules.storages.models import Storages

        factory = StorageFactory(self.storage)
        factory.save()
        factory.update(name="t.txt", store=self.next_store)
        storage = Storages.find_or_fail(self.storage.id_)
        storage.store = None
        assert storage.store.read(
        ) == b"efg" and storage.name == "t.txt"  # type: ignore
Exemple #10
0
    def test_model_delete(self) -> None:
        from smorest_sfs.services.storages.handlers import StorageFactory
        from smorest_sfs.utils.storages import load_storage_from_path

        factory = StorageFactory(self.storage)
        factory.save()
        factory.hard_delete()
        with pytest.raises(FileNotFoundError):
            if self.storage.name and self.storage.path:
                load_storage_from_path(self.storage.name, self.storage.path)
        with pytest.raises(FileExistsError):
            self.storage.store.close()
            self.storage.as_stream()
Exemple #11
0
    def delete(self, file_id):
        storage = models.Storages.get_by_id(file_id)
        factory = StorageFactory(storage)
        factory.hard_delete()

        return {"code": 0, "msg": "success"}
Exemple #12
0
def add_storage(store):
    factory = StorageFactory(
        Storages(name="test.txt", storetype="foo", store=store))
    return factory.save()