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 956e0d87f7b2008b3e671c197b8e80a89386fabc
Author: Greg Stein <[email protected]>
AuthorDate: Mon Dec 22 23:53:30 2025 -0600

    lean into EasyDict for Election.get_metadata()
---
 v3/server/pages.py   | 20 ++++++++++----------
 v3/steve/election.py | 16 +++++++++++++---
 2 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/v3/server/pages.py b/v3/server/pages.py
index ec6da33..4e60a0d 100644
--- a/v3/server/pages.py
+++ b/v3/server/pages.py
@@ -205,8 +205,8 @@ async def vote_on_page(election):
     result.title = 'Vote On Election'
     result.eid = election.eid
 
-    md = election.get_metadata()
-    result.e_title = md[1]
+    result.election = election.get_metadata()
+    result.e_title = result.election.title
 
     result.issues = election.list_issues()
     result.issue_count = len(result.issues)
@@ -266,9 +266,9 @@ async def manage_page(election):
     result.title = 'Manage an Election'
     result.eid = election.eid
 
-    md = election.get_metadata()
-    result.e_title = md[1]
-    result.e_state = md[2]
+    result.election = election.get_metadata()
+    result.e_title = result.election.title
+    result.e_state = result.election.state
 
     result.issues = election.list_issues()
     result.issue_count = len(result.issues)
@@ -291,9 +291,9 @@ async def manage_stv_page(election, issue):
     result.eid = election.eid
     result.issue = issue
 
-    md = election.get_metadata()
-    result.e_title = md[1]
-    result.e_state = md[2]
+    result.election = election.get_metadata()
+    result.e_title = result.election.title
+    result.e_state = result.election.state
 
     kv = edict(issue.kv)
     result.seats = kv.seats
@@ -342,7 +342,7 @@ async def do_open_endpoint(election):
 
     _LOGGER.info(f'User[U:{result.uid}] opened election[E:{election.eid}]')
 
-    _, title, _ = election.get_metadata()
+    title = election.get_metadata().title
     await flash_success(f'Opened election: {title}')
 
     # Return to the management page for this Election.
@@ -362,7 +362,7 @@ async def do_close_endpoint(election):
 
     _LOGGER.info(f'User[U:{result.uid}] closed election[E:{election.eid}]')
 
-    _, title, _ = election.get_metadata()
+    title = election.get_metadata().title
     await flash_success(f'Closed election: {title}')
 
     # Return to the management page for this Election.
diff --git a/v3/steve/election.py b/v3/steve/election.py
index 2229bad..2311aa5 100644
--- a/v3/steve/election.py
+++ b/v3/steve/election.py
@@ -21,7 +21,7 @@ import sqlite3
 import pathlib
 
 import asfpy.db
-import easydict
+from easydict import EasyDict as edict
 
 from . import crypto
 from . import vtypes
@@ -188,7 +188,17 @@ class Election:
         md = self._all_metadata()
         # NOTE: do not return the SALT or OPENED_KEY
 
-        return md.eid, md.title, self._compute_state(md)
+        return edict(
+            eid=md.eid,
+            title=md.title,
+            owner_pid=md.owner_pid,
+            authz=md.authz,
+            closed=md.closed,  ### should we process this?
+            open_at=md.open_at,  ### should we process this?
+            close_at=md.close_at,  ### should we process this?
+
+            state=self._compute_state(md),
+        )
 
     def get_issue(self, iid):
         "Return TITLE, DESCRIPTION, TYPE, and KV for issue IID."
@@ -252,7 +262,7 @@ class Election:
         "Return ordered EasyDicgt<IID, TITLE, DESCRIPTION, TYPE, KV> for all 
ISSUES."
 
         def extract_issue(row):
-            return easydict.EasyDict(
+            return edict(
                 iid=row.iid,
                 title=row.title,
                 description=row.description,

Reply via email to