def post(self, survey_id: str): data = get_json_request_body(self) if data.get('survey_id', None) != survey_id: reason = validation_message('submission', 'survey_id', 'invalid') raise tornado.web.HTTPError(422, reason=reason) try: self.write(submission_api.submit(self.db, data)) self.set_status(201) except KeyError as e: reason = validation_message('submission', str(e), 'missing_field') raise tornado.web.HTTPError(422, reason=reason) except IncorrectQuestionIdError: reason = validation_message('submission', 'question_id', 'invalid') raise tornado.web.HTTPError(422, reason=reason)
def _apply_aggregation(self, aggregation_name: str, question_id: str): try: method = getattr(aggregation_api, aggregation_name) return method(self.db, question_id, email=self.get_email()) except AttributeError: reason = json_encode( validation_message('aggregation', aggregation_name, 'no_such_method')) except aggregation_api.InvalidTypeForAggregationError: reason = json_encode( validation_message('aggregation', aggregation_name, 'invalid_type')) except aggregation_api.NoSubmissionsToQuestionError: reason = json_encode( validation_message('aggregation', aggregation_name, 'no_submissions')) raise tornado.web.HTTPError(422, reason=reason)