From ca5446de2141cb07fabafae91b49a77f0bd1e5ce Mon Sep 17 00:00:00 2001 From: Jon Andre Briones Date: Sun, 7 Sep 2025 10:59:31 -0700 Subject: [PATCH 1/3] feat: admins fetching elections get all data --- src/elections/models.py | 4 ++-- src/elections/urls.py | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/elections/models.py b/src/elections/models.py index 2b39614..ce77393 100644 --- a/src/elections/models.py +++ b/src/elections/models.py @@ -1,6 +1,6 @@ from enum import Enum -from pydantic import BaseModel +from pydantic import BaseModel, Field class ElectionTypeEnum(str, Enum): @@ -16,7 +16,7 @@ class ElectionModel(BaseModel): datetime_start_voting: str datetime_end_voting: str available_positions: str - survey_link: str | None + survey_link: str | None = Field(None) class NomineeInfoModel(BaseModel): computing_id: str diff --git a/src/elections/urls.py b/src/elections/urls.py index 65412d4..351430c 100644 --- a/src/elections/urls.py +++ b/src/elections/urls.py @@ -48,9 +48,10 @@ async def _validate_user( response_model=list[ElectionModel] ) async def list_elections( - _: Request, + request: Request, db_session: database.DBSession, ): + is_admin, _, _ = await _validate_user(request, db_session) election_list = await elections.crud.get_all_elections(db_session) if election_list is None or len(election_list) == 0: raise HTTPException( @@ -59,10 +60,16 @@ async def list_elections( ) current_time = datetime.now() - election_metadata_list = [ - election.public_metadata(current_time) - for election in election_list - ] + if is_admin: + election_metadata_list = [ + election.private_details(current_time) + for election in election_list + ] + else: + election_metadata_list = [ + election.public_details(current_time) + for election in election_list + ] return JSONResponse(election_metadata_list) From 1e0335b591b29112bf3d323e46455e76a815bada Mon Sep 17 00:00:00 2001 From: Jon Andre Briones Date: Sun, 7 Sep 2025 11:03:44 -0700 Subject: [PATCH 2/3] fix: Fixed a typing error on the website admin positions --- src/permission/types.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/permission/types.py b/src/permission/types.py index 73939a6..3b9db50 100644 --- a/src/permission/types.py +++ b/src/permission/types.py @@ -4,7 +4,6 @@ from fastapi import HTTPException import database -import elections.crud import officers.constants import officers.crud import utils @@ -52,7 +51,7 @@ async def has_permission(db_session: database.DBSession, computing_id: str) -> b return False class WebsiteAdmin: - WEBSITE_ADMIN_POSITIONS: ClassVar[list[OfficerPosition]] = [ + WEBSITE_ADMIN_POSITIONS: ClassVar[list[str]] = [ OfficerPosition.PRESIDENT, OfficerPosition.VICE_PRESIDENT, OfficerPosition.DIRECTOR_OF_ARCHIVES, From 3e1c8aee52e802c157accada6c7e0af2776fc61c Mon Sep 17 00:00:00 2001 From: Jon Andre Briones Date: Sun, 7 Sep 2025 12:57:48 -0700 Subject: [PATCH 3/3] fix: address code comment --- src/elections/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/elections/models.py b/src/elections/models.py index ce77393..d997739 100644 --- a/src/elections/models.py +++ b/src/elections/models.py @@ -1,6 +1,6 @@ from enum import Enum -from pydantic import BaseModel, Field +from pydantic import BaseModel class ElectionTypeEnum(str, Enum): @@ -16,7 +16,7 @@ class ElectionModel(BaseModel): datetime_start_voting: str datetime_end_voting: str available_positions: str - survey_link: str | None = Field(None) + survey_link: str | None = None class NomineeInfoModel(BaseModel): computing_id: str