Skip to content

Commit fbedee8

Browse files
committed
Refactor scenario creation related function so that creator info is contained in the DTO and now get scenario by id also returns creator info
1 parent f32c2ef commit fbedee8

File tree

5 files changed

+18
-12
lines changed

5 files changed

+18
-12
lines changed

api/src/api/app/apis/scenarios_api.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,13 @@ async def create_scenario(
4545
scenario: Scenario = Body(None, description="")
4646
) -> ID:
4747
"""Create a new scenario to be simulated."""
48+
49+
# Tag creator info
50+
scenario.creator_user_id = request.state.user.userId if request.state.user else None
51+
scenario.creator_org_id = request.state.realm if request.state.realm else None
52+
4853
return await controller.create_scenario(
49-
scenario,
50-
request.state.user.userId if request.state.user else None,
51-
request.state.realm if request.state.realm else None
54+
scenario
5255
)
5356

5457

api/src/api/app/controller/scenario_controller.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,12 @@ class ScenarioController:
6161

6262
async def create_scenario(
6363
self,
64-
scenario: Optional[Scenario],
65-
userId: Optional[str],
66-
orgId: Optional[str]
64+
scenario: Optional[Scenario]
6765
) -> ID:
6866
"""Create a new scenario to be simulated."""
6967
if not scenario:
7068
raise HTTPException(status_code=500, detail="No scenario provided")
71-
return scenario_create(scenario, userId, orgId)
69+
return scenario_create(scenario)
7270

7371

7472
async def delete_scenario(

api/src/api/app/db/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ class Scenario(SQLModel, table=True):
2828
timestampSubmitted: Optional[datetime] = Field(default=None, nullable=True)
2929
timestampSimulated: Optional[datetime] = Field(default=None, nullable=True)
3030

31-
userId: Optional[str] = Field(default=None, nullable=True) # Created by user
32-
orgId: Optional[str] = Field(default=None, nullable=True) # Created by user's LHA/Organization
31+
creatorUserId: Optional[uuid.UUID] = Field(default=None, nullable=True)
32+
creatorOrgId: Optional[str] = Field(default=None, nullable=True)
3333

3434
class ParameterDefinition(SQLModel, table=True):
3535
id: Optional[uuid.UUID] = Field(default_factory=uuid.uuid4, primary_key=True, nullable=False)

api/src/api/app/db/tasks.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ def parameter_definition_delete(id: StrictStr) -> None:
412412

413413

414414
## Scenarios ##
415-
def scenario_create(scenario: Scenario, userId: Optional[str], orgId: Optional[str]) -> ID:
415+
def scenario_create(scenario: Scenario) -> ID:
416416
scenario_obj = db.Scenario(
417417
name=scenario.name,
418418
description=scenario.description,
@@ -423,8 +423,8 @@ def scenario_create(scenario: Scenario, userId: Optional[str], orgId: Optional[s
423423
percentiles=','.join([str(perc) for perc in scenario.percentiles]) if scenario.percentiles else '50',
424424
timestampSubmitted=datetime.now(),
425425
timestampSimulated=None,
426-
userId=userId,
427-
orgId=orgId
426+
creatorUserId=scenario.creator_user_id,
427+
creatorOrgId=scenario.creator_org_id
428428
)
429429
with next(get_session()) as session:
430430
nested_dict = lambda: defaultdict(nested_dict)
@@ -538,6 +538,8 @@ def scenario_get_by_id(id: StrictStr) -> Scenario:
538538
percentiles=[int(perc) for perc in scenario.percentiles.split(',')] if scenario.percentiles else [50],
539539
timestampSubmitted=scenario.timestampSubmitted,
540540
timestampSimulated=scenario.timestampSimulated,
541+
creator_user_id=str(scenario.creatorUserId),
542+
creator_org_id=scenario.creatorOrgId
541543
)
542544

543545
def scenario_get_all() -> List[ReducedScenario]:

api/src/api/app/models/scenario.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ class Scenario(BaseModel):
4949
timestamp_simulated: Optional[datetime] = Field(default=None, alias="timestampSimulated", description="Timestamp when the scenario was finished simulating and data is available")
5050
__properties: ClassVar[List[str]] = ["id", "name", "description", "startDate", "endDate", "modelId", "modelParameters", "nodeListId", "linkedInterventions", "percentiles", "timestampSubmitted", "timestampSimulated"]
5151

52+
creator_user_id: Optional[str] = None
53+
creator_org_id: Optional[str] = None
54+
5255
model_config = {
5356
"populate_by_name": True,
5457
"validate_assignment": True,

0 commit comments

Comments
 (0)