From 8c8b2396fcf26700e015d40ad982fe3e66a468e3 Mon Sep 17 00:00:00 2001 From: Nikhil Rao Date: Sun, 12 Feb 2023 09:57:42 -0800 Subject: [PATCH] Add password component (#519) --- pynecone/app.py | 5 +++++ pynecone/components/forms/__init__.py | 1 + pynecone/components/forms/password.py | 11 +++++++++++ pynecone/utils.py | 4 +++- 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 pynecone/components/forms/password.py diff --git a/pynecone/app.py b/pynecone/app.py index 0de0ac6f3..ee02f6c6b 100644 --- a/pynecone/app.py +++ b/pynecone/app.py @@ -12,6 +12,7 @@ from pynecone.compiler import utils as compiler_utils from pynecone.components.component import Component, ComponentStyle from pynecone.event import Event, EventHandler from pynecone.middleware import HydrateMiddleware, Middleware +from pynecone.model import Model from pynecone.route import DECORATED_ROUTES from pynecone.state import DefaultState, Delta, State, StateManager, StateUpdate @@ -316,6 +317,10 @@ class App(Base): print("Skipping compilation in non-dev mode.") return + # Update models during hot reload. + if config.db_url is not None: + Model.create_all() + # Empty the .web pages directory compiler.purge_web_pages_dir() diff --git a/pynecone/components/forms/__init__.py b/pynecone/components/forms/__init__.py index 4000b0644..3ee68238d 100644 --- a/pynecone/components/forms/__init__.py +++ b/pynecone/components/forms/__init__.py @@ -14,6 +14,7 @@ from .numberinput import ( NumberInputField, NumberInputStepper, ) +from .password import Password from .pininput import PinInput, PinInputField from .radio import Radio, RadioGroup from .rangeslider import ( diff --git a/pynecone/components/forms/password.py b/pynecone/components/forms/password.py new file mode 100644 index 000000000..ac1453706 --- /dev/null +++ b/pynecone/components/forms/password.py @@ -0,0 +1,11 @@ +"""A password input component.""" + +from pynecone.components.forms.input import Input +from pynecone.var import Var + + +class Password(Input): + """A password input component.""" + + # The type of input. + type_: Var[str] = "password" # type: ignore diff --git a/pynecone/utils.py b/pynecone/utils.py index da4d6ebeb..cac739d15 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -49,7 +49,6 @@ if TYPE_CHECKING: from pynecone.components.component import ImportDict from pynecone.config import Config from pynecone.event import Event, EventHandler, EventSpec - from pynecone.model import Model from pynecone.var import Var # Shorthand for join. @@ -720,6 +719,9 @@ def setup_backend(): Specifically ensures backend database is updated when running --no-frontend. """ + # Import here to avoid circular imports. + from pynecone.model import Model + config = get_config() if config.db_url is not None: Model.create_all()