From 62e7b34f3844eadb35f0bc931511838f407b0b26 Mon Sep 17 00:00:00 2001 From: nmaytan Date: Wed, 29 Jan 2025 19:42:33 -0500 Subject: [PATCH 1/3] Add facility to proposal model --- src/nsls2api/models/proposals.py | 2 ++ src/nsls2api/services/proposal_service.py | 1 + src/nsls2api/services/sync_service.py | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/src/nsls2api/models/proposals.py b/src/nsls2api/models/proposals.py index e7066793..996ac009 100644 --- a/src/nsls2api/models/proposals.py +++ b/src/nsls2api/models/proposals.py @@ -27,6 +27,7 @@ class Proposal(beanie.Document): title: Optional[str] = None type: Optional[str] = None pass_type_id: Optional[str] = None + facility: str instruments: Optional[list[str]] = [] cycles: Optional[list[str]] = [] users: Optional[list[User]] = [] @@ -75,6 +76,7 @@ class Settings: ("proposal_id", pymongo.TEXT), ("data_session", pymongo.TEXT), ("safs.saf_id", pymongo.TEXT), + ("facility", pymongo.TEXT), ("instruments", pymongo.TEXT), ("cycles", pymongo.TEXT), ("title", pymongo.TEXT), diff --git a/src/nsls2api/services/proposal_service.py b/src/nsls2api/services/proposal_service.py index d4353c24..d86530fe 100644 --- a/src/nsls2api/services/proposal_service.py +++ b/src/nsls2api/services/proposal_service.py @@ -526,6 +526,7 @@ async def generate_fake_test_proposal( users=user_list, pass_type_id="666666", data_session=generate_data_session_for_proposal(str(fake_proposal_id)), + facility=["nsls2"], instruments=["TST"], cycles=[fake_cycle], last_updated=datetime.datetime.now(), diff --git a/src/nsls2api/services/sync_service.py b/src/nsls2api/services/sync_service.py index 7d763297..4e70ee12 100644 --- a/src/nsls2api/services/sync_service.py +++ b/src/nsls2api/services/sync_service.py @@ -294,6 +294,9 @@ async def synchronize_proposal_from_pass( ) user_list.append(pi_info) + facility = await facility_service.facility_by_pass_id( + pass_proposal.User_Facility_ID + ) data_session = proposal_service.generate_data_session_for_proposal(proposal_id) proposal = Proposal( @@ -302,6 +305,7 @@ async def synchronize_proposal_from_pass( data_session=data_session, pass_type_id=str(pass_proposal.Proposal_Type_ID), type=pass_proposal.Proposal_Type_Description, + facility=facility.facility_id, instruments=set(beamline_list), safs=saf_list, users=user_list, @@ -315,6 +319,7 @@ async def synchronize_proposal_from_pass( Proposal.data_session: data_session, Proposal.pass_type_id: str(pass_proposal.Proposal_Type_ID), Proposal.type: pass_proposal.Proposal_Type_Description, + Proposal.facility: facility.facility_id, Proposal.instruments: beamline_list, Proposal.safs: saf_list, Proposal.users: user_list, From 21aad9f49c4ef1eb95e19ebb457981539052da15 Mon Sep 17 00:00:00 2001 From: nmaytan Date: Wed, 29 Jan 2025 19:45:06 -0500 Subject: [PATCH 2/3] Add facility query filter when fetching proposals --- src/nsls2api/services/proposal_service.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/nsls2api/services/proposal_service.py b/src/nsls2api/services/proposal_service.py index d86530fe..ceeb7f44 100644 --- a/src/nsls2api/services/proposal_service.py +++ b/src/nsls2api/services/proposal_service.py @@ -165,6 +165,9 @@ async def fetch_proposals( ) -> Optional[list[ProposalFullDetails]]: query = [] + if facility: + query.append(In(Proposal.facility, facility)) + if beamline: query.append(In(Proposal.instruments, beamline)) From 55b67b8d1182fc1e024241d999f6084f71f6b3ee Mon Sep 17 00:00:00 2001 From: nmaytan Date: Wed, 29 Jan 2025 19:45:14 -0500 Subject: [PATCH 3/3] Apply black --- src/nsls2api/services/sync_service.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/nsls2api/services/sync_service.py b/src/nsls2api/services/sync_service.py index 4e70ee12..5894f114 100644 --- a/src/nsls2api/services/sync_service.py +++ b/src/nsls2api/services/sync_service.py @@ -156,9 +156,9 @@ async def worker_synchronize_proposal_types_from_pass( start_time = datetime.datetime.now() try: - pass_proposal_types: list[ - PassProposalType - ] = await pass_service.get_proposal_types(facility_name) + pass_proposal_types: list[PassProposalType] = ( + await pass_service.get_proposal_types(facility_name) + ) except pass_service.PassException as error: error_message = ( f"Error retrieving proposal types from PASS for {facility_name} facility." @@ -393,10 +393,10 @@ async def worker_synchronize_proposals_for_cycle_from_pass( logger.info(f"Synchronizing proposal {proposal_id}.") await synchronize_proposal_from_pass(proposal_id, facility_name) - commissioning_proposals: list[ - PassProposal - ] = await pass_service.get_commissioning_proposals_by_year( - cycle_year, facility_name=facility_name + commissioning_proposals: list[PassProposal] = ( + await pass_service.get_commissioning_proposals_by_year( + cycle_year, facility_name=facility_name + ) ) logger.info( f"Synchronizing {len(proposals)} commissioning proposals for the year {cycle_year}."