first commit
This commit is contained in:
65
helix/api/api.py
Normal file
65
helix/api/api.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from flask import Blueprint, request, session, jsonify
|
||||
|
||||
from helix.calculators.calculator import Calculator
|
||||
from helix.presenters.panel_presenter import ProjectPresenter
|
||||
from helix.session_manager import SessionManager
|
||||
from helix.constants import redis_constant, sql_constant
|
||||
from helix.seismic_validator_user_values import SeismicValidatorUserValues
|
||||
from helix.validators.file_validator import FileValidator
|
||||
from helix.validators.seismic_anchor_validator import SeismicAnchorValidator
|
||||
|
||||
api = Blueprint('api', __name__, template_folder='templates')
|
||||
|
||||
|
||||
@api.route("/panel_data")
|
||||
def panel_data():
|
||||
db_session = sql_constant.sql_session_maker()
|
||||
session_manager = SessionManager(session, redis_constant.redis_store, db_session)
|
||||
user_values = session_manager.user_values()
|
||||
calculator = Calculator(user_values)
|
||||
system_type = user_values.system_type()
|
||||
module_type = user_values.module_type()
|
||||
data = ProjectPresenter(system_type, module_type).get_panel_data(calculator.get_computed_csv_columns(), calculator.subarrays)
|
||||
db_session.close()
|
||||
return jsonify({'panel_data': data})
|
||||
|
||||
|
||||
@api.route("/update_panel_data", methods=['POST'])
|
||||
def update_panel_data():
|
||||
db_session = sql_constant.sql_session_maker()
|
||||
session_manager = SessionManager(session, redis_constant.redis_store, db_session)
|
||||
user_seismic_data = request.get_json()
|
||||
user_values = SeismicValidatorUserValues(session_manager.user_values(), user_seismic_data)
|
||||
calculator = Calculator(user_values)
|
||||
validator = SeismicAnchorValidator(calculator)
|
||||
validation_result = validator.validate(calculator.panels)
|
||||
|
||||
subarrays = calculator.subarray_summary()
|
||||
subarray_data = []
|
||||
for subarray in subarrays:
|
||||
data = {
|
||||
"subarray": subarray.subarray_number,
|
||||
"required_seismic_anchors": subarray.required_seismic_anchors,
|
||||
"weight": round(subarray.weight),
|
||||
}
|
||||
subarray_data.append(data)
|
||||
|
||||
if not validation_result:
|
||||
session_manager.save_user_provided_seismic_anchors(user_seismic_data)
|
||||
panel_data = ProjectPresenter(user_values.system_type(), user_values.module_type()).get_panel_data(calculator.get_computed_csv_columns(),
|
||||
calculator.subarrays)
|
||||
db_session.close()
|
||||
return jsonify({
|
||||
"status": "success",
|
||||
"error": None,
|
||||
"panel_data": panel_data,
|
||||
"subarray_data": subarray_data
|
||||
})
|
||||
else:
|
||||
db_session.close()
|
||||
return jsonify({
|
||||
"status": "error",
|
||||
"error": validation_result.value,
|
||||
"panel_data": None,
|
||||
"subarray_data": subarray_data
|
||||
})
|
||||
Reference in New Issue
Block a user