An application made for the Django Web Framework.
Project description
conditional_field
Allows for arbitrary showing and hiding of fields in the admin based on certain user input. Idea based on Wagtail UI+'s conditional visibility fields.
Installations
-
Add conditional field to your
INSTALLED_APPS
INSTALLED_APPS = [ ... 'conditional_field' ... ]
-
Run
python3 ./manage.py collectstatic
Example usage of the gcf conditional fields.
from wagtail import blocks
class Link(blocks.StructBlock):
text = CharBlockWithAttrs(
required=False,
label=_("Text"),
)
page = blocks.PageChooserBlock(
required=False,
label=_("Page"),
classname=(
"gcf "
"gcf-handler--choice "
"gcf-action--show--page "
),
)
document = DocumentChooserBlock(
required=False,
label=_("Document"),
classname=(
"gcf "
"gcf-handler--choice "
"gcf-action--show--document"
),
)
external_link = blocks.URLBlock(
required=False,
label=_("External Link"),
classname=(
"gcf "
"gcf-handler--choice "
"gcf-action--show--external_link"
),
)
email = blocks.EmailBlock(
required=False,
label=_("Email"),
classname=(
"gcf "
"gcf-handler--choice "
"gcf-action--show--email"
),
)
phone = blocks.CharBlock(
required=False,
label=_("Tel"),
placeholder=_("123-456-7890"),
validators=[
RegexValidator(
regex=r"^\+?[0-9\-\s\(\)]+$",
message=_("Enter a valid phone number."),
)
],
min_length=7,
max_length=14,
classname=(
# Example of multiple allowed
# choices for a single block
# We introduce fshow and fhide,
# these do not automatically do the opposite for false values.
# You would not want to use this in this context; it is just an example.
"gcf "
"gcf-handler--choice "
"gcf-action-any--fhide "
"gcf-action--fshow--email "
"gcf-action--fshow--tel"
),
)
choice = blocks.ChoiceBlock(
required=True,
choices=[
("page", "Page")
("document", "Document")
("external_link", "External")
("email", "Email Link")
("tel", "Telephone Link")
],
default="page",
label=_("Link Type"),
classname=(
"gcf "
"gcf-handler--choice"
),
widget=forms.RadioSelect,
)
hide_animation_fields_classname = (
'gcf '
'gcf-handler--animation '
'gcf-action-empty--hide '
'gcf-action-any--show'
)
class AnimatorBlock(blocks.StructBlock):
animation = blocks.ChoiceBlock(
choices=animations_choices,
required=False,
label=_("Animation"),
translatable=False,
classname=(
'gcf '
'gcf-handler--animation'
),
)
duration = blocks.IntegerBlock(
default=1000,
required=True,
translatable=False,
label=_("Duration"),
classname=hide_animation_fields_classname,
)
delay = blocks.IntegerBlock(
default=0,
required=True,
translatable=False,
label=_("Delay"),
classname=hide_animation_fields_classname,
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
conditional_field-1.1.0.tar.gz
(12.7 kB
view details)
File details
Details for the file conditional_field-1.1.0.tar.gz
.
File metadata
- Download URL: conditional_field-1.1.0.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74133883333f1dc4fd63a740dca248b9d16209cdce6ee1647567793ace1792b9 |
|
MD5 | b3536f61df2bed02f0c135e5ab1098b7 |
|
BLAKE2b-256 | 9c0e316de8e5f05bdfee9226a7af57cfba91b1dba5da8949e08fe1512fd37d1e |