separate DECORATED_PAGES per reflex app (#3102)
This commit is contained in:
parent
041abb39c8
commit
0a1ff38920
@ -726,7 +726,7 @@ class App(Base):
|
|||||||
This can move back into `compile_` when py39 support is dropped.
|
This can move back into `compile_` when py39 support is dropped.
|
||||||
"""
|
"""
|
||||||
# Add the @rx.page decorated pages to collect on_load events.
|
# Add the @rx.page decorated pages to collect on_load events.
|
||||||
for render, kwargs in DECORATED_PAGES:
|
for render, kwargs in DECORATED_PAGES[get_config().app_name]:
|
||||||
self.add_page(render, **kwargs)
|
self.add_page(render, **kwargs)
|
||||||
|
|
||||||
def compile_(self, export: bool = False):
|
def compile_(self, export: bool = False):
|
||||||
|
@ -2,9 +2,12 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Any
|
from collections import defaultdict
|
||||||
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
DECORATED_PAGES = []
|
from reflex.config import get_config
|
||||||
|
|
||||||
|
DECORATED_PAGES: Dict[str, List] = defaultdict(list)
|
||||||
|
|
||||||
|
|
||||||
def page(
|
def page(
|
||||||
@ -55,7 +58,7 @@ def page(
|
|||||||
if on_load:
|
if on_load:
|
||||||
kwargs["on_load"] = on_load
|
kwargs["on_load"] = on_load
|
||||||
|
|
||||||
DECORATED_PAGES.append((render_fn, kwargs))
|
DECORATED_PAGES[get_config().app_name].append((render_fn, kwargs))
|
||||||
|
|
||||||
return render_fn
|
return render_fn
|
||||||
|
|
||||||
@ -69,6 +72,6 @@ def get_decorated_pages() -> list[dict]:
|
|||||||
The decorated pages.
|
The decorated pages.
|
||||||
"""
|
"""
|
||||||
return sorted(
|
return sorted(
|
||||||
[page_data for render_fn, page_data in DECORATED_PAGES],
|
[page_data for _, page_data in DECORATED_PAGES[get_config().app_name]],
|
||||||
key=lambda x: x["route"],
|
key=lambda x: x["route"],
|
||||||
)
|
)
|
||||||
|
@ -240,13 +240,15 @@ class AppHarness:
|
|||||||
# ensure config and app are reloaded when testing different app
|
# ensure config and app are reloaded when testing different app
|
||||||
reflex.config.get_config(reload=True)
|
reflex.config.get_config(reload=True)
|
||||||
# Save decorated pages before importing the test app module
|
# Save decorated pages before importing the test app module
|
||||||
before_decorated_pages = reflex.app.DECORATED_PAGES.copy()
|
before_decorated_pages = reflex.app.DECORATED_PAGES[self.app_name].copy()
|
||||||
# Ensure the AppHarness test does not skip State assignment due to running via pytest
|
# Ensure the AppHarness test does not skip State assignment due to running via pytest
|
||||||
os.environ.pop(reflex.constants.PYTEST_CURRENT_TEST, None)
|
os.environ.pop(reflex.constants.PYTEST_CURRENT_TEST, None)
|
||||||
self.app_module = reflex.utils.prerequisites.get_compiled_app(reload=True)
|
self.app_module = reflex.utils.prerequisites.get_compiled_app(reload=True)
|
||||||
# Save the pages that were added during testing
|
# Save the pages that were added during testing
|
||||||
self._decorated_pages = [
|
self._decorated_pages = [
|
||||||
p for p in reflex.app.DECORATED_PAGES if p not in before_decorated_pages
|
p
|
||||||
|
for p in reflex.app.DECORATED_PAGES[self.app_name]
|
||||||
|
if p not in before_decorated_pages
|
||||||
]
|
]
|
||||||
self.app_instance = self.app_module.app
|
self.app_instance = self.app_module.app
|
||||||
if isinstance(self.app_instance._state_manager, StateManagerRedis):
|
if isinstance(self.app_instance._state_manager, StateManagerRedis):
|
||||||
@ -411,7 +413,7 @@ class AppHarness:
|
|||||||
|
|
||||||
# Cleanup decorated pages added during testing
|
# Cleanup decorated pages added during testing
|
||||||
for page in self._decorated_pages:
|
for page in self._decorated_pages:
|
||||||
reflex.app.DECORATED_PAGES.remove(page)
|
reflex.app.DECORATED_PAGES[self.app_name].remove(page)
|
||||||
|
|
||||||
def __exit__(self, *excinfo) -> None:
|
def __exit__(self, *excinfo) -> None:
|
||||||
"""Contextmanager protocol for `stop()`.
|
"""Contextmanager protocol for `stop()`.
|
||||||
|
Loading…
Reference in New Issue
Block a user