From 452d7a584a4e9dae2788d10db2d997455389aea6 Mon Sep 17 00:00:00 2001 From: Stuart Campbell Date: Thu, 9 Jan 2025 16:59:20 -0500 Subject: [PATCH] Added LBMS proposals per cycle stats This really needs a rethink - but for now just add the LBMS stats. --- src/nsls2api/api/models/stats_model.py | 3 ++- src/nsls2api/api/v1/stats_api.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/nsls2api/api/models/stats_model.py b/src/nsls2api/api/models/stats_model.py index 5b0b735e..101cbd52 100644 --- a/src/nsls2api/api/models/stats_model.py +++ b/src/nsls2api/api/models/stats_model.py @@ -13,7 +13,8 @@ class StatsModel(pydantic.BaseModel): beamline_count: int commissioning_proposal_count: int facility_data_health: bool - nsls2_proposals_per_cycle: Optional[list[ProposalsPerCycleModel]] = [] + nsls2_proposals_per_cycle: Optional[list[ProposalsPerCycleModel]] + lbms_proposals_per_cycle: Optional[list[ProposalsPerCycleModel]] class AboutModel(pydantic.BaseModel): diff --git a/src/nsls2api/api/v1/stats_api.py b/src/nsls2api/api/v1/stats_api.py index 490e9c84..8a62f1b9 100644 --- a/src/nsls2api/api/v1/stats_api.py +++ b/src/nsls2api/api/v1/stats_api.py @@ -24,8 +24,8 @@ async def stats(): facility_data_health = await facility_service.is_healthy("nsls2") + # Get the NSLS-II proposals per cycle nsls2_proposals_per_cycle: list[ProposalsPerCycleModel] = [] - nsls2_cycle_list = await facility_service.facility_cycles("nsls2") for cycle in nsls2_cycle_list: proposal_list = await proposal_service.fetch_proposals_for_cycle(cycle) @@ -35,6 +35,17 @@ async def stats(): ) nsls2_proposals_per_cycle.append(model) + # Get the LBMS proposals per cycle + lbms_proposals_per_cycle: list[ProposalsPerCycleModel] = [] + lbms_cycle_list = await facility_service.facility_cycles("lbms") + for cycle in lbms_cycle_list: + proposal_list = await proposal_service.fetch_proposals_for_cycle(cycle) + if proposal_list is not None: + model = ProposalsPerCycleModel( + cycle=cycle, proposal_count=len(proposal_list) + ) + lbms_proposals_per_cycle.append(model) + model = StatsModel( facility_count=facilities, beamline_count=beamlines, @@ -42,6 +53,7 @@ async def stats(): commissioning_proposal_count=commissioning, facility_data_health=facility_data_health, nsls2_proposals_per_cycle=nsls2_proposals_per_cycle, + lbms_proposals_per_cycle=lbms_proposals_per_cycle, ) return model