Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add facility to proposal model #139

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/nsls2api/models/proposals.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]] = []
Expand Down Expand Up @@ -75,6 +76,7 @@ class Settings:
("proposal_id", pymongo.TEXT),
("data_session", pymongo.TEXT),
("safs.saf_id", pymongo.TEXT),
("facility", pymongo.TEXT),
JunAishima marked this conversation as resolved.
Show resolved Hide resolved
("instruments", pymongo.TEXT),
("cycles", pymongo.TEXT),
("title", pymongo.TEXT),
Expand Down
4 changes: 4 additions & 0 deletions src/nsls2api/services/proposal_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -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))

Expand Down Expand Up @@ -526,6 +529,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(),
Expand Down
19 changes: 12 additions & 7 deletions src/nsls2api/services/sync_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down Expand Up @@ -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(
Expand All @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -388,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}."
Expand Down