
* enable PTH rule * fix import in test_call_script * fix units tests * reorder ruff rules * Update reflex/utils/build.py Co-authored-by: Masen Furer <m_github@0x26.net> * format pyproject.toml --------- Co-authored-by: Masen Furer <m_github@0x26.net>
175 lines
4.0 KiB
Python
175 lines
4.0 KiB
Python
"""Test states for upload-related tests."""
|
|
|
|
from pathlib import Path
|
|
from typing import ClassVar, List
|
|
|
|
import reflex as rx
|
|
from reflex.state import BaseState, State
|
|
|
|
|
|
class UploadState(BaseState):
|
|
"""The base state for uploading a file."""
|
|
|
|
async def handle_upload1(self, files: List[rx.UploadFile]):
|
|
"""Handle the upload of a file.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
pass
|
|
|
|
|
|
class BaseState(BaseState):
|
|
"""The test base state."""
|
|
|
|
pass
|
|
|
|
|
|
class SubUploadState(BaseState):
|
|
"""The test substate."""
|
|
|
|
img: str
|
|
|
|
async def handle_upload(self, files: List[rx.UploadFile]):
|
|
"""Handle the upload of a file.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
pass
|
|
|
|
|
|
class FileUploadState(State):
|
|
"""The base state for uploading a file."""
|
|
|
|
img_list: List[str]
|
|
_tmp_path: ClassVar[Path]
|
|
|
|
async def handle_upload2(self, files):
|
|
"""Handle the upload of a file.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
pass
|
|
|
|
async def multi_handle_upload(self, files: List[rx.UploadFile]):
|
|
"""Handle the upload of a file.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
for file in files:
|
|
upload_data = await file.read()
|
|
assert file.filename is not None
|
|
outfile = self._tmp_path / file.filename
|
|
|
|
# Save the file.
|
|
outfile.write_bytes(upload_data)
|
|
|
|
# Update the img var.
|
|
self.img_list.append(file.filename)
|
|
|
|
@rx.event(background=True)
|
|
async def bg_upload(self, files: List[rx.UploadFile]):
|
|
"""Background task cannot be upload handler.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
pass
|
|
|
|
|
|
class FileStateBase1(State):
|
|
"""The base state for a child FileUploadState."""
|
|
|
|
pass
|
|
|
|
|
|
class ChildFileUploadState(FileStateBase1):
|
|
"""The child state for uploading a file."""
|
|
|
|
img_list: List[str]
|
|
_tmp_path: ClassVar[Path]
|
|
|
|
async def handle_upload2(self, files):
|
|
"""Handle the upload of a file.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
pass
|
|
|
|
async def multi_handle_upload(self, files: List[rx.UploadFile]):
|
|
"""Handle the upload of a file.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
for file in files:
|
|
upload_data = await file.read()
|
|
assert file.filename is not None
|
|
outfile = self._tmp_path / file.filename
|
|
|
|
# Save the file.
|
|
outfile.write_bytes(upload_data)
|
|
|
|
# Update the img var.
|
|
self.img_list.append(file.filename)
|
|
|
|
@rx.event(background=True)
|
|
async def bg_upload(self, files: List[rx.UploadFile]):
|
|
"""Background task cannot be upload handler.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
pass
|
|
|
|
|
|
class FileStateBase2(FileStateBase1):
|
|
"""The parent state for a grandchild FileUploadState."""
|
|
|
|
pass
|
|
|
|
|
|
class GrandChildFileUploadState(FileStateBase2):
|
|
"""The child state for uploading a file."""
|
|
|
|
img_list: List[str]
|
|
_tmp_path: ClassVar[Path]
|
|
|
|
async def handle_upload2(self, files):
|
|
"""Handle the upload of a file.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
pass
|
|
|
|
async def multi_handle_upload(self, files: List[rx.UploadFile]):
|
|
"""Handle the upload of a file.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
for file in files:
|
|
upload_data = await file.read()
|
|
assert file.filename is not None
|
|
outfile = self._tmp_path / file.filename
|
|
|
|
# Save the file.
|
|
outfile.write_bytes(upload_data)
|
|
|
|
# Update the img var.
|
|
self.img_list.append(file.filename)
|
|
|
|
@rx.event(background=True)
|
|
async def bg_upload(self, files: List[rx.UploadFile]):
|
|
"""Background task cannot be upload handler.
|
|
|
|
Args:
|
|
files: The uploaded files.
|
|
"""
|
|
pass
|