You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@steve.apache.org by gs...@apache.org on 2025/10/13 04:35:28 UTC
(steve) 02/04: Add tools/display for using Quart "flash" notices.
This is an automated email from the ASF dual-hosted git repository.
gstein pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/steve.git
commit aa3c091836963892f6837062a97c8d75941e064b
Author: Greg Stein <gs...@gmail.com>
AuthorDate: Sat Oct 11 23:05:11 2025 -0500
Add tools/display for using Quart "flash" notices.
* pages.py:
- signin_info(): fetch flashes from the Quart session, and
inject EasyDict instances into the template data.
- define flash_FOO() for each Bootstrap alert type
* flashes.ezt: new template fragment to display an alert box for each
flash that is within the session, using the right category.
* templates/VARIOUS.ezt: include the new flashes.ezt
---
v3/server/pages.py | 35 +++++++++++++++++++++++++++++++----
v3/server/templates/about.ezt | 2 ++
v3/server/templates/admin.ezt | 2 +-
v3/server/templates/flashes.ezt | 6 ++++++
v3/server/templates/home.ezt | 4 ++++
v3/server/templates/manage.ezt | 2 ++
v3/server/templates/privacy.ezt | 2 ++
v3/server/templates/profile.ezt | 2 ++
v3/server/templates/settings.ezt | 2 ++
v3/server/templates/vote-on.ezt | 2 ++
v3/server/templates/voter.ezt | 1 +
11 files changed, 55 insertions(+), 5 deletions(-)
diff --git a/v3/server/pages.py b/v3/server/pages.py
index 80b54dd..465895d 100644
--- a/v3/server/pages.py
+++ b/v3/server/pages.py
@@ -58,12 +58,39 @@ T_BAD_EID = APP.load_template(TEMPLATES / 'e_bad_eid.ezt')
async def signin_info():
"Return EZT template data for the Sign-In, in the upper right."
+
+ ### debug/test
+ await flash_primary('hello there')
+ await flash_danger('and another')
+
+ basic = edict()
+
+ # Flashes are stored in the Session. Fetch and turn each flash into
+ # EasyDict objects for use by templates.
+ # NOTE: .flash() is called with (message, category), but the
+ # .get_flashed_messages() returns tuples of (category, message)
+ basic.flashes = [ edict(message=f[1], category=f[0])
+ for f in quart.get_flashed_messages(with_categories=True) ]
+
s = await asfquart.session.read()
if s:
- return edict(uid=s['uid'], name=s['fullname'], email=s['email'],)
-
- # No session.
- return edict(uid=None, name=None, email=None,)
+ basic.update(uid=s['uid'], name=s['fullname'], email=s['email'],)
+ else:
+ # No session.
+ basic.update(uid=None, name=None, email=None,)
+
+ return basic
+
+
+# Define a bunch of helpers for recording "flash" messages in the session.
+# Each helper function is:
+# async def flash_FOO(message)
+# where FOO is one of the eight Bootstrap alert classes. See:
+# https://getbootstrap.com/docs/5.0/components/alerts/#examples
+for _cat in ('primary', 'secondary', 'success', 'danger',
+ 'warning', 'info', 'light', 'dark', ):
+ globals()[f'flash_{_cat}'] = functools.partial(quart.flash, category=_cat)
+del _cat
@APP.get('/')
diff --git a/v3/server/templates/about.ezt b/v3/server/templates/about.ezt
index 4d95432..453a191 100644
--- a/v3/server/templates/about.ezt
+++ b/v3/server/templates/about.ezt
@@ -1,6 +1,8 @@
[include "header.ezt"]
<div class="container">
<h1>[title]</h1>
+ [include "flashes.ezt"]
+
<p>
TBD
</p>
diff --git a/v3/server/templates/admin.ezt b/v3/server/templates/admin.ezt
index cfd4dca..a9753c8 100644
--- a/v3/server/templates/admin.ezt
+++ b/v3/server/templates/admin.ezt
@@ -1,7 +1,7 @@
[include "header.ezt"]
<div class="container">
<h1>[title]</h1>
-
+ [include "flashes.ezt"]
[for owned]
<div class="w-auto mb-4">
diff --git a/v3/server/templates/flashes.ezt b/v3/server/templates/flashes.ezt
new file mode 100644
index 0000000..821a23d
--- /dev/null
+++ b/v3/server/templates/flashes.ezt
@@ -0,0 +1,6 @@
+[for flashes]
+ <div class="alert alert-[flashes.category] alert-dismissible fade show" role="alert">
+ [flashes.message]
+ <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
+ </div>
+[end]
diff --git a/v3/server/templates/home.ezt b/v3/server/templates/home.ezt
index d86d195..b2c4e2e 100644
--- a/v3/server/templates/home.ezt
+++ b/v3/server/templates/home.ezt
@@ -1,5 +1,9 @@
[include "header.ezt"]
<div class="container">
+ <div class="mt-2">
+ [include "flashes.ezt"]
+ </div>
+
<p class="my-3">
Welcome! What are you here for? Select an option below.
</p>
diff --git a/v3/server/templates/manage.ezt b/v3/server/templates/manage.ezt
index 2bcba42..956c437 100644
--- a/v3/server/templates/manage.ezt
+++ b/v3/server/templates/manage.ezt
@@ -1,6 +1,8 @@
[include "header.ezt"]
<div class="container">
<h1>[title]</h1>
+ [include "flashes.ezt"]
+
<div class="sticky-top">
<h2>[e_title]</h2>
</div>
diff --git a/v3/server/templates/privacy.ezt b/v3/server/templates/privacy.ezt
index 4d95432..453a191 100644
--- a/v3/server/templates/privacy.ezt
+++ b/v3/server/templates/privacy.ezt
@@ -1,6 +1,8 @@
[include "header.ezt"]
<div class="container">
<h1>[title]</h1>
+ [include "flashes.ezt"]
+
<p>
TBD
</p>
diff --git a/v3/server/templates/profile.ezt b/v3/server/templates/profile.ezt
index 4d95432..453a191 100644
--- a/v3/server/templates/profile.ezt
+++ b/v3/server/templates/profile.ezt
@@ -1,6 +1,8 @@
[include "header.ezt"]
<div class="container">
<h1>[title]</h1>
+ [include "flashes.ezt"]
+
<p>
TBD
</p>
diff --git a/v3/server/templates/settings.ezt b/v3/server/templates/settings.ezt
index 4d95432..453a191 100644
--- a/v3/server/templates/settings.ezt
+++ b/v3/server/templates/settings.ezt
@@ -1,6 +1,8 @@
[include "header.ezt"]
<div class="container">
<h1>[title]</h1>
+ [include "flashes.ezt"]
+
<p>
TBD
</p>
diff --git a/v3/server/templates/vote-on.ezt b/v3/server/templates/vote-on.ezt
index 4a6dcc3..73cff96 100644
--- a/v3/server/templates/vote-on.ezt
+++ b/v3/server/templates/vote-on.ezt
@@ -1,6 +1,8 @@
[include "header.ezt"]
<div class="container">
<h1>[title]</h1>
+ [include "flashes.ezt"]
+
<p>
You have [issue_count] issues to vote upon, in this election.
</p>
diff --git a/v3/server/templates/voter.ezt b/v3/server/templates/voter.ezt
index b6e57a5..8def7c2 100644
--- a/v3/server/templates/voter.ezt
+++ b/v3/server/templates/voter.ezt
@@ -1,6 +1,7 @@
[include "header.ezt"]
<div class="container">
<h1>[title]</h1>
+ [include "flashes.ezt"]
[for election]
<div class="w-auto mb-4">