pull/227/head
Tim Pechersky 2021-09-02 19:00:58 +02:00
rodzic dc19407059
commit 0cf4f317d2
1 zmienionych plików z 52 dodań i 13 usunięć

Wyświetl plik

@ -204,26 +204,25 @@ def create_onboarding_resource(
@app.post("/onboarding", tags=["users"], response_model=data.OnboardingState)
async def set_onboarding_state(
request: Request,
data: data.OnboardingState = Body(...),
onboarding_data: data.OnboardingState = Body(...),
) -> data.OnboardingState:
token = request.state.token
print(data)
response = bc.list_resources(
token=token,
params={"type": USER_ONBOARDING_STATE},
timeout=BUGOUT_REQUEST_TIMEOUT_SECONDS,
)
resource_data = {"type": USER_ONBOARDING_STATE, **data.dict()}
resource_data = {"type": USER_ONBOARDING_STATE, **onboarding_data.dict()}
try:
if response.resources:
resource: BugoutResource = bc.update_resource(
resource = bc.update_resource(
token=token,
resource_id=str(response.resources[0].id),
resource_data={"update": resource_data, "drop_keys": []},
)
else:
resource: BugoutResource = create_onboarding_resource(
resource = create_onboarding_resource(
token=token, resource_data=resource_data
)
@ -231,7 +230,21 @@ async def set_onboarding_state(
raise HTTPException(status_code=e.status_code, detail=e.detail)
except Exception as e:
raise HTTPException(status_code=500)
return resource.resource_data
if (
resource.resource_data.get("is_complete") is None
or resource.resource_data.get("steps") is None
):
logger.error(
f"Resources did not return correct onboarding object. Resource id:{resource.id}"
)
raise HTTPException(status_code=500)
result = data.OnboardingState(
is_complete=resource.resource_data.get("is_complete", False),
steps=resource.resource_data.get("steps", {}),
)
return result
@app.get("/onboarding", tags=["users"], response_model=data.OnboardingState)
@ -242,18 +255,31 @@ async def get_onboarding_state(request: Request) -> data.OnboardingState:
params={"type": USER_ONBOARDING_STATE},
timeout=BUGOUT_REQUEST_TIMEOUT_SECONDS,
)
try:
if response.resources:
resource: BugoutResource = response.resources[0]
else:
resource: BugoutResource = create_onboarding_resource(token=token)
if response.resources:
resource = response.resources[0]
else:
resource = create_onboarding_resource(token=token)
except BugoutResponseException as e:
raise HTTPException(status_code=e.status_code, detail=e.detail)
except Exception as e:
raise HTTPException(status_code=500)
return resource.resource_data
if (
resource.resource_data.get("is_complete") is None
or resource.resource_data.get("steps") is None
):
logger.error(
f"Resources did not return correct onboarding object. Resource id:{resource.id}"
)
raise HTTPException(status_code=500)
result = data.OnboardingState(
is_complete=resource.resource_data.get("is_complete", False),
steps=resource.resource_data.get("steps", {}),
)
return result
@app.delete("/onboarding", tags=["users"], response_model=data.OnboardingState)
@ -278,4 +304,17 @@ async def delete_onboarding_state(request: Request) -> data.OnboardingState:
raise HTTPException(status_code=e.status_code, detail=e.detail)
except Exception as e:
raise HTTPException(status_code=500)
return resource.resource_data
if (
resource.resource_data.get("is_complete") is None
or resource.resource_data.get("steps") is None
):
logger.error(
f"Resources did not return correct onboarding object. Resource id:{resource.id}"
)
raise HTTPException(status_code=500)
result = data.OnboardingState(
is_complete=resource.resource_data.get("is_complete", False),
steps=resource.resource_data.get("steps", {}),
)
return result