Bladeren bron

Add password component (#519)

Nikhil Rao 2 jaren geleden
bovenliggende
commit
8c8b2396fc
4 gewijzigde bestanden met toevoegingen van 20 en 1 verwijderingen
  1. 5 0
      pynecone/app.py
  2. 1 0
      pynecone/components/forms/__init__.py
  3. 11 0
      pynecone/components/forms/password.py
  4. 3 1
      pynecone/utils.py

+ 5 - 0
pynecone/app.py

@@ -12,6 +12,7 @@ from pynecone.compiler import utils as compiler_utils
 from pynecone.components.component import Component, ComponentStyle
 from pynecone.components.component import Component, ComponentStyle
 from pynecone.event import Event, EventHandler
 from pynecone.event import Event, EventHandler
 from pynecone.middleware import HydrateMiddleware, Middleware
 from pynecone.middleware import HydrateMiddleware, Middleware
+from pynecone.model import Model
 from pynecone.route import DECORATED_ROUTES
 from pynecone.route import DECORATED_ROUTES
 from pynecone.state import DefaultState, Delta, State, StateManager, StateUpdate
 from pynecone.state import DefaultState, Delta, State, StateManager, StateUpdate
 
 
@@ -316,6 +317,10 @@ class App(Base):
             print("Skipping compilation in non-dev mode.")
             print("Skipping compilation in non-dev mode.")
             return
             return
 
 
+        # Update models during hot reload.
+        if config.db_url is not None:
+            Model.create_all()
+
         # Empty the .web pages directory
         # Empty the .web pages directory
         compiler.purge_web_pages_dir()
         compiler.purge_web_pages_dir()
 
 

+ 1 - 0
pynecone/components/forms/__init__.py

@@ -14,6 +14,7 @@ from .numberinput import (
     NumberInputField,
     NumberInputField,
     NumberInputStepper,
     NumberInputStepper,
 )
 )
+from .password import Password
 from .pininput import PinInput, PinInputField
 from .pininput import PinInput, PinInputField
 from .radio import Radio, RadioGroup
 from .radio import Radio, RadioGroup
 from .rangeslider import (
 from .rangeslider import (

+ 11 - 0
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

+ 3 - 1
pynecone/utils.py

@@ -49,7 +49,6 @@ if TYPE_CHECKING:
     from pynecone.components.component import ImportDict
     from pynecone.components.component import ImportDict
     from pynecone.config import Config
     from pynecone.config import Config
     from pynecone.event import Event, EventHandler, EventSpec
     from pynecone.event import Event, EventHandler, EventSpec
-    from pynecone.model import Model
     from pynecone.var import Var
     from pynecone.var import Var
 
 
 # Shorthand for join.
 # Shorthand for join.
@@ -720,6 +719,9 @@ def setup_backend():
 
 
     Specifically ensures backend database is updated when running --no-frontend.
     Specifically ensures backend database is updated when running --no-frontend.
     """
     """
+    # Import here to avoid circular imports.
+    from pynecone.model import Model
+
     config = get_config()
     config = get_config()
     if config.db_url is not None:
     if config.db_url is not None:
         Model.create_all()
         Model.create_all()