コード例 #1
0
    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)
コード例 #2
0
 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)