コード例 #1
0
ファイル: schema_parser.py プロジェクト: qateam123/eq
    def parse(self):
        """Parse the schema

        :returns: A questionnaire object

        :raises: A SchemaParserException if there is a problem while parsing the schema

        """
        questionnaire = Questionnaire()
        questionnaire.id = ParserUtils.get_required_string(
            self._schema, "questionnaire_id")
        questionnaire.title = ParserUtils.get_required_string(
            self._schema, "title")
        questionnaire.survey_id = ParserUtils.get_required_string(
            self._schema, "survey_id")
        logger.debug("title: " + questionnaire.title)
        questionnaire.description = ParserUtils.get_optional_string(
            self._schema, "description")
        questionnaire.theme = ParserUtils.get_required_string(
            self._schema, "theme")
        questionnaire.data_version = ParserUtils.get_required_string(
            self._schema, "data_version")

        if "introduction" in self._schema.keys():
            questionnaire.introduction = self._parse_introduction(
                self._schema['introduction'])

        if "groups" in self._schema.keys():
            for group_schema in self._schema['groups']:
                questionnaire.add_group(
                    self._parse_group(group_schema, questionnaire))
        else:
            raise SchemaParserException(
                'Questionnaire must contain at least one group')

        if 'messages' in self._schema.keys():
            # re-use the parse validation method
            self._parse_validation(questionnaire, self._schema)

        questionnaire.register_aliases()

        return questionnaire