Skip to content

Commit

Permalink
validate survey during update
Browse files Browse the repository at this point in the history
  • Loading branch information
jadmsaadaot committed Jul 7, 2023
1 parent 6688559 commit f76d643
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 23 deletions.
20 changes: 2 additions & 18 deletions met-api/src/met_api/resources/report_setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,31 +53,15 @@ def get(survey_id):
except ValueError as err:
return str(err), HTTPStatus.INTERNAL_SERVER_ERROR

@staticmethod
# @TRACER.trace()
@cross_origin(origins=allowedorigins())
@_jwt.requires_auth
def post(survey_id):
"""Refresh the report setting to match the questions on survey."""
try:
requestjson = request.get_json()
report_setting = ReportSettingService().refresh_report_setting(requestjson)

return jsonify(report_setting), HTTPStatus.OK
except KeyError as err:
return str(err), HTTPStatus.INTERNAL_SERVER_ERROR
except ValueError as err:
return str(err), HTTPStatus.INTERNAL_SERVER_ERROR

@staticmethod
# @TRACER.trace()
@cross_origin(origins=allowedorigins())
@_jwt.requires_auth
def patch(survey_id):
"""Update saved report setting partially."""
try:
requestjson = request.get_json()
report_setting = ReportSettingService().update_report_setting(requestjson)
new_report_settings = request.get_json()
report_setting = ReportSettingService().update_report_setting(survey_id, new_report_settings)

return jsonify(report_setting), HTTPStatus.OK
except KeyError as err:
Expand Down
16 changes: 11 additions & 5 deletions met-api/src/met_api/services/report_setting_service.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Service for report setting management."""

from met_api.models.report_setting import ReportSetting as ReportSettingModel
from met_api.models.survey import Survey as SurveyModel
from met_api.schemas.report_setting import ReportSettingSchema
from met_api.constants.report_setting_type import FormIoComponentType

Expand Down Expand Up @@ -136,15 +137,20 @@ def _delete_questions_removed_from_form(cls, survey_id, survey_question_keys):
ReportSettingModel.delete_report_settings(survey_id, report_setting['question_key'])

@classmethod
def update_report_setting(cls, report_setting_data):
def update_report_setting(cls, survey_id, new_report_settings):
"""Update report setting."""
for data in report_setting_data:
report_setting_id = data.get('id', None)
survey = SurveyModel.find_by_id(survey_id)
if not survey:
raise KeyError(f'No survey found for {survey_id}')
for setting in new_report_settings:
report_setting_id = setting.get('id', None)
report_setting = ReportSettingModel.find_by_id(report_setting_id)
if not report_setting:
raise ValueError(f'No report setting found for {report_setting_id}')
if report_setting.survey_id != survey_id:
raise KeyError(f'Report setting {report_setting.id} does not belong to survey {survey_id}')

report_setting.display = data.get('display', None)
report_setting.display = setting.get('display', None)
report_setting.save()

return report_setting_data
return new_report_settings

0 comments on commit f76d643

Please sign in to comment.