diff --git a/src/elections/models.py b/src/elections/models.py index 2b39614..d997739 100644 --- a/src/elections/models.py +++ b/src/elections/models.py @@ -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 = 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) 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,