fixed router and controllers
This commit is contained in:
parent
7a5e33c524
commit
3926bb7c34
6 changed files with 38 additions and 36 deletions
|
|
@ -1,26 +1,27 @@
|
|||
import typing
|
||||
|
||||
from caimira.calculator.validators.co2.co2_validator import CO2FormData
|
||||
from caimira.calculator.store.data_registry import DataRegistry
|
||||
from caimira.calculator.models.models import CO2DataModel
|
||||
|
||||
|
||||
def generate_form_obj(form_data, data_registry):
|
||||
def generate_form_obj(form_data: typing.Dict, data_registry: DataRegistry) -> CO2FormData:
|
||||
return CO2FormData.from_dict(form_data=form_data, data_registry=data_registry)
|
||||
|
||||
|
||||
def generate_model(form_obj, data_registry):
|
||||
sample_size = data_registry.monte_carlo['sample_size']
|
||||
return form_obj.build_model(sample_size=sample_size)
|
||||
def generate_model(form_obj: CO2FormData) -> CO2DataModel:
|
||||
return form_obj.build_model()
|
||||
|
||||
|
||||
def generate_report(model):
|
||||
def generate_report(model: CO2DataModel) -> typing.Dict:
|
||||
return dict(model.CO2_fit_params())
|
||||
|
||||
|
||||
def submit_CO2_form(form_data):
|
||||
data_registry = DataRegistry()
|
||||
def submit_CO2_form(form_data: typing.Dict) -> typing.Dict:
|
||||
data_registry: DataRegistry = DataRegistry()
|
||||
|
||||
form_obj = generate_form_obj(
|
||||
form_data=form_data, data_registry=data_registry)
|
||||
model = generate_model(form_obj=form_obj, data_registry=data_registry)
|
||||
report_data = generate_report(model=model)
|
||||
form_obj: CO2FormData = generate_form_obj(form_data=form_data, data_registry=data_registry)
|
||||
model: CO2DataModel = generate_model(form_obj=form_obj)
|
||||
report_data: typing.Dict = generate_report(model=model)
|
||||
|
||||
return report_data
|
||||
|
|
|
|||
|
|
@ -1,37 +1,37 @@
|
|||
import concurrent.futures
|
||||
import functools
|
||||
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
|
||||
|
||||
|
||||
def generate_form_obj(form_data, data_registry):
|
||||
def generate_form_obj(form_data: typing.Dict, data_registry: DataRegistry) -> VirusFormData:
|
||||
return VirusFormData.from_dict(
|
||||
form_data=form_data,
|
||||
data_registry=data_registry,
|
||||
)
|
||||
|
||||
|
||||
def generate_model(form_obj, data_registry):
|
||||
sample_size = data_registry.monte_carlo['sample_size']
|
||||
return form_obj.build_model(sample_size=sample_size)
|
||||
|
||||
|
||||
def generate_report_results(form_obj):
|
||||
def generate_report(form_obj: VirusFormData, report_generation_parallelism: typing.Optional[int]) -> typing.Dict:
|
||||
return rg.calculate_report_data(
|
||||
form=form_obj,
|
||||
executor_factory=functools.partial(
|
||||
concurrent.futures.ThreadPoolExecutor, None, # TODO define report_parallelism
|
||||
concurrent.futures.ThreadPoolExecutor,
|
||||
report_generation_parallelism,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def submit_virus_form(form_data):
|
||||
data_registry = DataRegistry
|
||||
def submit_virus_form(form_data: typing.Dict, report_generation_parallelism: typing.Optional[int]) -> typing.Dict:
|
||||
data_registry: DataRegistry = DataRegistry()
|
||||
|
||||
form_obj = generate_form_obj(form_data=form_data, data_registry=data_registry)
|
||||
model = generate_model(form_obj=form_obj, data_registry=data_registry)
|
||||
report_data = generate_report_results(form_obj=form_obj, model=model)
|
||||
form_obj: VirusFormData = generate_form_obj(form_data=form_data, data_registry=data_registry)
|
||||
report_data: typing.Dict = generate_report(form_obj=form_obj, report_generation_parallelism=report_generation_parallelism)
|
||||
|
||||
# Handle model representation
|
||||
if report_data['model']: report_data['model'] = repr(report_data['model'])
|
||||
|
||||
return report_data
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from caimira.api.controller.virus_report_controller import submit_virus_form
|
|||
from caimira.api.controller.co2_report_controller import submit_CO2_form
|
||||
|
||||
|
||||
class BaseReportHandler(tornado.web.RedirectHandler):
|
||||
class BaseReportHandler(tornado.web.RequestHandler):
|
||||
def set_default_headers(self):
|
||||
self.set_header("Access-Control-Allow-Origin", "*")
|
||||
self.set_header("Access-Control-Allow-Headers", "x-requested-with")
|
||||
|
|
@ -22,7 +22,14 @@ class VirusReportHandler(BaseReportHandler):
|
|||
def post(self):
|
||||
try:
|
||||
form_data = json.loads(self.request.body)
|
||||
report_data = submit_virus_form(form_data)
|
||||
arguments = self.request.arguments
|
||||
# Report generation parallelism argument
|
||||
try:
|
||||
report_generation_parallelism = int(arguments['report_generation_parallelism'][0])
|
||||
except:
|
||||
report_generation_parallelism = None
|
||||
|
||||
report_data = submit_virus_form(form_data, report_generation_parallelism)
|
||||
|
||||
response_data = {
|
||||
"status": "success",
|
||||
|
|
@ -36,12 +43,7 @@ class VirusReportHandler(BaseReportHandler):
|
|||
self.write_error(status_code=400, exc_info=sys.exc_info())
|
||||
|
||||
|
||||
class CO2ReportHandler(tornado.web.RequestHandler):
|
||||
def set_default_headers(self):
|
||||
self.set_header("Access-Control-Allow-Origin", "*")
|
||||
self.set_header("Access-Control-Allow-Headers", "x-requested-with")
|
||||
self.set_header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
|
||||
|
||||
class CO2ReportHandler(BaseReportHandler):
|
||||
def post(self):
|
||||
try:
|
||||
form_data = json.loads(self.request.body)
|
||||
|
|
|
|||
|
|
@ -807,7 +807,7 @@ class SimplePopulation:
|
|||
number: typing.Union[int, IntPiecewiseConstant]
|
||||
|
||||
#: The times in which the people are in the room.
|
||||
presence: typing.Union[None, Interval]
|
||||
presence: typing.Optional[Interval]
|
||||
|
||||
#: The physical activity being carried out by the people.
|
||||
activity: Activity
|
||||
|
|
|
|||
|
|
@ -193,8 +193,7 @@ class CO2FormData(FormData):
|
|||
vent_states.append(last_time_from_input)
|
||||
return tuple(vent_states)
|
||||
|
||||
def build_model(self, size=None) -> models.CO2DataModel: # type: ignore
|
||||
size = size or self.data_registry.monte_carlo['sample_size']
|
||||
def build_model(self, sample_size = None) -> models.CO2DataModel:
|
||||
# Build a simple infected and exposed population for the case when presence
|
||||
# intervals and number of people are dynamic. Activity type is not needed.
|
||||
if self.occupancy_format == 'dynamic':
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ class FormData:
|
|||
def validate(self):
|
||||
raise NotImplementedError("Subclass must implement")
|
||||
|
||||
def build_model(self, sample_size=None):
|
||||
def build_model(self, sample_size: typing.Optional[int] = None):
|
||||
raise NotImplementedError("Subclass must implement")
|
||||
|
||||
def _compute_breaks_in_interval(self, start, finish, n_breaks, duration) -> models.BoundarySequence_t:
|
||||
|
|
|
|||
Loading…
Reference in a new issue