added routing to the suggested ventilation transition times
This commit is contained in:
parent
04fb99848a
commit
0237bc0c77
5 changed files with 50 additions and 11 deletions
|
|
@ -284,7 +284,7 @@ CAiMIRA backend includes a REST API for programmatic interaction with its models
|
|||
|
||||
2. **Test the API**:
|
||||
|
||||
Send a `POST` request to `http://localhost:8081/virus_report` with the required inputs in the body. Example request formats can be found in the [Virus Validator Code](https://gitlab.cern.ch/caimira/caimira/blob/master/caimira/src/caimira/calculator/validators/virus/virus_validator.py#L565).
|
||||
Send a `POST` request to `http://localhost:8081/virus/report` with the required inputs in the body. Example request formats can be found in the [Virus Validator Code](https://gitlab.cern.ch/caimira/caimira/blob/master/caimira/src/caimira/calculator/validators/virus/virus_validator.py#L565).
|
||||
|
||||
3. **Example Response**:
|
||||
A successful response will return data in the following format:
|
||||
|
|
@ -293,7 +293,7 @@ CAiMIRA backend includes a REST API for programmatic interaction with its models
|
|||
{
|
||||
"status": "success",
|
||||
"message": "Results generated successfully",
|
||||
"report_data": {
|
||||
"results": {
|
||||
...
|
||||
},
|
||||
...
|
||||
|
|
|
|||
|
|
@ -17,7 +17,28 @@ def generate_report(model: CO2DataModel) -> typing.Dict:
|
|||
return dict(model.CO2_fit_params())
|
||||
|
||||
|
||||
def submit_CO2_form(form_data: typing.Dict) -> typing.Dict:
|
||||
def generate_transition_times(CO2model: CO2DataModel, vent_transition_times: list) -> list:
|
||||
# The entire ventilation changes consider the initial and final occupancy state change
|
||||
occupancy_transition_times = list(CO2model.occupancy.transition_times)
|
||||
all_vent_transition_times: list = sorted(
|
||||
[occupancy_transition_times[0]] +
|
||||
[occupancy_transition_times[-1]] +
|
||||
vent_transition_times)
|
||||
return all_vent_transition_times
|
||||
|
||||
|
||||
def request_CO2_transition_times(form_data: typing.Dict) -> list:
|
||||
data_registry: DataRegistry = DataRegistry()
|
||||
|
||||
form_obj: CO2FormData = generate_form_obj(form_data=form_data, data_registry=data_registry)
|
||||
CO2model: CO2DataModel = generate_model(form_obj=form_obj)
|
||||
vent_transition_times: list = form_obj.find_change_points()
|
||||
all_vent_transition_times: list = generate_transition_times(CO2model, vent_transition_times)
|
||||
|
||||
return all_vent_transition_times
|
||||
|
||||
|
||||
def request_CO2_report(form_data: typing.Dict) -> typing.Dict:
|
||||
data_registry: DataRegistry = DataRegistry()
|
||||
|
||||
form_obj: CO2FormData = generate_form_obj(form_data=form_data, data_registry=data_registry)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import typing
|
|||
|
||||
from caimira.calculator.validators.virus.virus_validator import VirusFormData
|
||||
from caimira.calculator.store.data_registry import DataRegistry
|
||||
from caimira.calculator.models.models import ExposureModel
|
||||
import caimira.calculator.report.virus_report_data as rg
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import traceback
|
|||
import sys
|
||||
from caimira.api.routes.base_handler import BaseRequestHandler
|
||||
from caimira.api.controller.virus_report_controller import submit_virus_form
|
||||
from caimira.api.controller.co2_report_controller import submit_CO2_form
|
||||
from caimira.api.controller.co2_report_controller import request_CO2_transition_times, request_CO2_report
|
||||
|
||||
|
||||
class VirusReportHandler(BaseRequestHandler):
|
||||
|
|
@ -22,7 +22,25 @@ class VirusReportHandler(BaseRequestHandler):
|
|||
response_data = {
|
||||
"status": "success",
|
||||
"message": "Results generated successfully",
|
||||
"report_data": report_data,
|
||||
"results": report_data,
|
||||
}
|
||||
|
||||
self.write(response_data)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
self.write_error(status_code=400, exc_info=sys.exc_info())
|
||||
|
||||
|
||||
class CO2SuggestionsHandler(BaseRequestHandler):
|
||||
def post(self):
|
||||
try:
|
||||
form_data = json.loads(self.request.body)
|
||||
suggestion_data = request_CO2_transition_times(form_data)
|
||||
|
||||
response_data = {
|
||||
"status": "success",
|
||||
"message": "Results generated successfully",
|
||||
"results": suggestion_data,
|
||||
}
|
||||
|
||||
self.write(response_data)
|
||||
|
|
@ -35,12 +53,12 @@ class CO2ReportHandler(BaseRequestHandler):
|
|||
def post(self):
|
||||
try:
|
||||
form_data = json.loads(self.request.body)
|
||||
report_data = submit_CO2_form(form_data)
|
||||
report_data = request_CO2_report(form_data)
|
||||
|
||||
response_data = {
|
||||
"status": "success",
|
||||
"message": "Results generated successfully",
|
||||
"report_data": report_data,
|
||||
"results": report_data,
|
||||
}
|
||||
|
||||
self.write(response_data)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
from caimira.api.routes.landing_routes import LandingPageHandler
|
||||
from caimira.api.routes.report_routes import VirusReportHandler, CO2ReportHandler
|
||||
from caimira.api.routes.report_routes import VirusReportHandler, CO2SuggestionsHandler, CO2ReportHandler
|
||||
|
||||
routes = [
|
||||
(r"/", LandingPageHandler),
|
||||
(r"/co2_report", CO2ReportHandler),
|
||||
(r"/virus_report", VirusReportHandler),
|
||||
(r"/co2/transition_times", CO2SuggestionsHandler),
|
||||
(r"/co2/report", CO2ReportHandler),
|
||||
(r"/virus/report", VirusReportHandler),
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in a new issue