Move is_used
to Upload component rather than UploadFilesProvider (#2514)
This commit is contained in:
parent
1b4229691a
commit
6d33156d15
@ -46,7 +46,7 @@ from reflex.components.core.client_side_routing import (
|
|||||||
Default404Page,
|
Default404Page,
|
||||||
wait_for_client_redirect,
|
wait_for_client_redirect,
|
||||||
)
|
)
|
||||||
from reflex.components.core.upload import UploadFilesProvider
|
from reflex.components.core.upload import Upload
|
||||||
from reflex.components.radix import themes
|
from reflex.components.radix import themes
|
||||||
from reflex.config import get_config
|
from reflex.config import get_config
|
||||||
from reflex.event import Event, EventHandler, EventSpec
|
from reflex.event import Event, EventHandler, EventSpec
|
||||||
@ -185,6 +185,7 @@ class App(Base):
|
|||||||
# Set up the API.
|
# Set up the API.
|
||||||
self.api = FastAPI()
|
self.api = FastAPI()
|
||||||
self.add_cors()
|
self.add_cors()
|
||||||
|
self.add_default_endpoints()
|
||||||
|
|
||||||
if self.state:
|
if self.state:
|
||||||
# Set up the state manager.
|
# Set up the state manager.
|
||||||
@ -241,12 +242,14 @@ class App(Base):
|
|||||||
return self.api
|
return self.api
|
||||||
|
|
||||||
def add_default_endpoints(self):
|
def add_default_endpoints(self):
|
||||||
"""Add the default endpoints."""
|
"""Add default api endpoints (ping)."""
|
||||||
# To test the server.
|
# To test the server.
|
||||||
self.api.get(str(constants.Endpoint.PING))(ping)
|
self.api.get(str(constants.Endpoint.PING))(ping)
|
||||||
|
|
||||||
|
def add_optional_endpoints(self):
|
||||||
|
"""Add optional api endpoints (_upload)."""
|
||||||
# To upload files.
|
# To upload files.
|
||||||
if UploadFilesProvider.is_used:
|
if Upload.is_used:
|
||||||
self.api.post(str(constants.Endpoint.UPLOAD))(upload(self))
|
self.api.post(str(constants.Endpoint.UPLOAD))(upload(self))
|
||||||
|
|
||||||
def add_cors(self):
|
def add_cors(self):
|
||||||
@ -655,6 +658,9 @@ class App(Base):
|
|||||||
if constants.Page404.SLUG not in self.pages:
|
if constants.Page404.SLUG not in self.pages:
|
||||||
self.add_custom_404_page()
|
self.add_custom_404_page()
|
||||||
|
|
||||||
|
# Add the optional endpoints (_upload)
|
||||||
|
self.add_optional_endpoints()
|
||||||
|
|
||||||
if not self._should_compile():
|
if not self._should_compile():
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -824,8 +830,6 @@ class App(Base):
|
|||||||
for output_path, code in compile_results:
|
for output_path, code in compile_results:
|
||||||
compiler_utils.write_page(output_path, code)
|
compiler_utils.write_page(output_path, code)
|
||||||
|
|
||||||
self.add_default_endpoints()
|
|
||||||
|
|
||||||
@contextlib.asynccontextmanager
|
@contextlib.asynccontextmanager
|
||||||
async def modify_state(self, token: str) -> AsyncIterator[BaseState]:
|
async def modify_state(self, token: str) -> AsyncIterator[BaseState]:
|
||||||
"""Modify the state out of band.
|
"""Modify the state out of band.
|
||||||
|
@ -98,23 +98,6 @@ class UploadFilesProvider(Component):
|
|||||||
library = f"/{Dirs.CONTEXTS_PATH}"
|
library = f"/{Dirs.CONTEXTS_PATH}"
|
||||||
tag = "UploadFilesProvider"
|
tag = "UploadFilesProvider"
|
||||||
|
|
||||||
is_used: ClassVar[bool] = False
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def create(cls, *children, **props) -> Component:
|
|
||||||
"""Create an UploadFilesProvider component.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
*children: The children of the component.
|
|
||||||
**props: The properties of the component.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The UploadFilesProvider component.
|
|
||||||
"""
|
|
||||||
cls.is_used = True
|
|
||||||
|
|
||||||
return super().create(*children, **props)
|
|
||||||
|
|
||||||
|
|
||||||
class Upload(Component):
|
class Upload(Component):
|
||||||
"""A file upload component."""
|
"""A file upload component."""
|
||||||
@ -154,6 +137,9 @@ class Upload(Component):
|
|||||||
# Whether to disable using the space/enter keys to upload.
|
# Whether to disable using the space/enter keys to upload.
|
||||||
no_keyboard: Var[bool]
|
no_keyboard: Var[bool]
|
||||||
|
|
||||||
|
# Marked True when any Upload component is created.
|
||||||
|
is_used: ClassVar[bool] = False
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, *children, **props) -> Component:
|
def create(cls, *children, **props) -> Component:
|
||||||
"""Create an upload component.
|
"""Create an upload component.
|
||||||
@ -165,6 +151,9 @@ class Upload(Component):
|
|||||||
Returns:
|
Returns:
|
||||||
The upload component.
|
The upload component.
|
||||||
"""
|
"""
|
||||||
|
# Mark the Upload component as used in the app.
|
||||||
|
cls.is_used = True
|
||||||
|
|
||||||
# get only upload component props
|
# get only upload component props
|
||||||
supported_props = cls.get_props()
|
supported_props = cls.get_props()
|
||||||
upload_props = {
|
upload_props = {
|
||||||
|
@ -29,8 +29,6 @@ def clear_selected_files(id_: str = DEFAULT_UPLOAD_ID) -> EventSpec: ...
|
|||||||
def cancel_upload(upload_id: str) -> EventSpec: ...
|
def cancel_upload(upload_id: str) -> EventSpec: ...
|
||||||
|
|
||||||
class UploadFilesProvider(Component):
|
class UploadFilesProvider(Component):
|
||||||
is_used: ClassVar[bool] = False
|
|
||||||
|
|
||||||
@overload
|
@overload
|
||||||
@classmethod
|
@classmethod
|
||||||
def create( # type: ignore
|
def create( # type: ignore
|
||||||
@ -90,7 +88,7 @@ class UploadFilesProvider(Component):
|
|||||||
] = None,
|
] = None,
|
||||||
**props
|
**props
|
||||||
) -> "UploadFilesProvider":
|
) -> "UploadFilesProvider":
|
||||||
"""Create an UploadFilesProvider component.
|
"""Create the component.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
*children: The children of the component.
|
*children: The children of the component.
|
||||||
@ -101,14 +99,19 @@ class UploadFilesProvider(Component):
|
|||||||
autofocus: Whether the component should take the focus once the page is loaded
|
autofocus: Whether the component should take the focus once the page is loaded
|
||||||
_rename_props: props to change the name of
|
_rename_props: props to change the name of
|
||||||
custom_attrs: custom attribute
|
custom_attrs: custom attribute
|
||||||
**props: The properties of the component.
|
**props: The props of the component.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
The UploadFilesProvider component.
|
The component.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
TypeError: If an invalid child is passed.
|
||||||
"""
|
"""
|
||||||
...
|
...
|
||||||
|
|
||||||
class Upload(Component):
|
class Upload(Component):
|
||||||
|
is_used: ClassVar[bool] = False
|
||||||
|
|
||||||
@overload
|
@overload
|
||||||
@classmethod
|
@classmethod
|
||||||
def create( # type: ignore
|
def create( # type: ignore
|
||||||
|
Loading…
Reference in New Issue
Block a user