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 68fafd36572300c067f0241e19087f91869e98c7
Author: Greg Stein <[email protected]>
AuthorDate: Mon Oct 13 02:45:02 2025 -0500

    Improve handling for a Person not found.
    
    * add templates for person and issue not found.
    * note in e_bad_eid that we won't show flashes
      (same for other error pages; flashes should not happen)
    * capture persondb.PersonNotFound, and show error page
    
    note: E_BAD_IID is not yet used. Placeholder.
---
 v3/server/pages.py                                   | 19 +++++++++++++------
 v3/server/templates/e_bad_eid.ezt                    |  2 ++
 v3/server/templates/{e_bad_eid.ezt => e_bad_iid.ezt} |  7 ++++---
 v3/server/templates/{e_bad_eid.ezt => e_bad_pid.ezt} |  7 ++++---
 4 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/v3/server/pages.py b/v3/server/pages.py
index 378c0c9..8b5fcde 100644
--- a/v3/server/pages.py
+++ b/v3/server/pages.py
@@ -54,6 +54,8 @@ SOON_1HOUR = 60 * 60
 SOON_CUTOFF = 48 * SOON_1HOUR  # 48 hours, in seconds
 
 T_BAD_EID = APP.load_template(TEMPLATES / 'e_bad_eid.ezt')
+T_BAD_IID = APP.load_template(TEMPLATES / 'e_bad_iid.ezt')
+T_BAD_PID = APP.load_template(TEMPLATES / 'e_bad_pid.ezt')
 
 
 async def basic_info():
@@ -182,11 +184,15 @@ async def admin_page():
     pdb = steve.persondb.PersonDB(DB_FNAME)
     try:
         me = pdb.get_person(result.uid)
-    except AttributeError:
-        ### the committer is not in "person"
-        ### this is a terrible way to signal this. return None?
-        ### what kind of error/page to raise?
-        raise
+    except steve.persondb.PersonNotFound:
+        ### the authn'd committer is not in "person"
+
+        result = await basic_info()
+        result.title = 'Unknown Person'
+        result.pid = pid
+        # Note: result.uid (and friends) are needed for the navbar.
+        raise_404(T_BAD_PID, result)
+        # NOTREACHED
 
     ### the query for OWNED is just for "me", so this is the correct
     ### name at the moment. When authz kicks in ... Nope.
@@ -387,7 +393,8 @@ def postprocess_election(e):
     # Anything but 1 means the Election is not open.
     e.is_opened = ezt.boolean(e.is_opened == 1)
 
-    # note: an election has an Edit state: not open, not closed.
+    # note: an election has a third Edit state: not open, not closed;
+    # this is called "editable" (S_EDITABLE)
 
     # Format dates, if present.
     dt_open = e.open_at and datetime.datetime.fromtimestamp(e.open_at)
diff --git a/v3/server/templates/e_bad_eid.ezt 
b/v3/server/templates/e_bad_eid.ezt
index 57cfd68..52ad63a 100644
--- a/v3/server/templates/e_bad_eid.ezt
+++ b/v3/server/templates/e_bad_eid.ezt
@@ -1,6 +1,8 @@
 [include "header.ezt"]
     <div class="container">
         <h1>[title]</h1>
+        [# skipping flashes.ezt ]
+
         <p>
             [# we could be more specific. simpler to re-use. ]
 
diff --git a/v3/server/templates/e_bad_eid.ezt 
b/v3/server/templates/e_bad_iid.ezt
similarity index 62%
copy from v3/server/templates/e_bad_eid.ezt
copy to v3/server/templates/e_bad_iid.ezt
index 57cfd68..a1e3445 100644
--- a/v3/server/templates/e_bad_eid.ezt
+++ b/v3/server/templates/e_bad_iid.ezt
@@ -1,12 +1,13 @@
 [include "header.ezt"]
     <div class="container">
         <h1>[title]</h1>
+        [# skipping flashes.ezt ]
+
         <p>
             [# we could be more specific. simpler to re-use. ]
 
-            The Election ID ([eid]) does not exist,
-            you have no issues to vote in that Election,
-            or you are not allowed to manage that Election.
+            The Issue ID ([iid]) does not exist, or you do not
+            have access to vote or manage that issue.
         </p>
         <p>
             <a href="/">Return to the home page</a>
diff --git a/v3/server/templates/e_bad_eid.ezt 
b/v3/server/templates/e_bad_pid.ezt
similarity index 62%
copy from v3/server/templates/e_bad_eid.ezt
copy to v3/server/templates/e_bad_pid.ezt
index 57cfd68..4259088 100644
--- a/v3/server/templates/e_bad_eid.ezt
+++ b/v3/server/templates/e_bad_pid.ezt
@@ -1,12 +1,13 @@
 [include "header.ezt"]
     <div class="container">
         <h1>[title]</h1>
+        [# skipping flashes.ezt ]
+
         <p>
             [# we could be more specific. simpler to re-use. ]
 
-            The Election ID ([eid]) does not exist,
-            you have no issues to vote in that Election,
-            or you are not allowed to manage that Election.
+            The Person ID ([pid]) does not exist, or you do not
+            have access to view information about that Person.
         </p>
         <p>
             <a href="/">Return to the home page</a>

Reply via email to