コード例 #1
0
ファイル: __init__.py プロジェクト: wovari/scoremodel
def v_api_public_section(section_id=None):
    ##
    # Add total score
    def hook_add_total_score(output_data):
        if section_id is not None:
            new_output = output_data
            new_output['total_score'] = SectionApi().total_score(section_id)
        else:
            new_output = []
            for item in output_data:
                item['total_score'] = SectionApi().total_score(item['id'])
                new_output.append(item)
        return new_output

    ##
    # Add multiplication factor
    def hook_add_multiplication_factor(output_data):
        if section_id is not None:
            new_output = output_data
            new_output['multiplication_factor'] = SectionApi(
            ).multiplication_factor(section_id)
        else:
            new_output = []
            for item in output_data:
                item['multiplication_factor'] = SectionApi(
                ).multiplication_factor(item['id'])
                new_output.append(item)
        return new_output

    a_api = ScoremodelRestApi(api_class=SectionApi,
                              o_request=request,
                              api_obj_id=section_id,
                              posthooks=(hook_add_total_score,
                                         hook_add_multiplication_factor))
    return a_api.response
コード例 #2
0
ファイル: benchmark.py プロジェクト: wovari/scoremodel
def v_api_benchmark_report_get(benchmark_report_id):
    ##
    # Add by_section
    def hook_add_by_section(output_data):
        for section_id, benchmarks in BenchmarkReportApi(
        ).questions_by_section(benchmark_report_id).items():
            section_benchmarks = []
            for b in benchmarks:
                b_out = b.output_obj()
                b_out['multiplication_factor'] = SectionApi(
                ).multiplication_factor(b.question.section_id)
                section_benchmarks.append(b_out)
            output_data['benchmarks_by_section'].append({
                'section_id':
                section_id,
                'benchmarks':
                section_benchmarks
            })
        return output_data

    a_api = ScoremodelRestApi(api_class=BenchmarkReportApi,
                              o_request=request,
                              api_obj_id=benchmark_report_id,
                              posthooks=(hook_add_by_section, ))
    return a_api.response
コード例 #3
0
def v_api_user_report_get(user_report_id=None):
    # Create a hook to insert current_user.id in the original data.
    def hook_insert_current_user(input_data):
        parsed_data = input_data
        parsed_data['user_id'] = current_user.id
        return parsed_data

    # Add the multiplication factor for every question_answer
    def hook_add_multiplication_factor(output_data):
        if type(output_data) is not dict:
            return output_data
        new_question_answers_by_section = []
        for section in output_data['question_answers_by_section']:
            question_answers = []
            for qa in section['question_answers']:
                qa['multiplication_factor'] = SectionApi(
                ).multiplication_factor(section['section_id'])
                question_answers.append(qa)
            section['question_answers'] = question_answers
            new_question_answers_by_section.append(section)
        output_data[
            'question_answers_by_section'] = new_question_answers_by_section
        return output_data

    a_api = ScoremodelRestApi(api_class=UserReportApi,
                              o_request=request,
                              api_obj_id=user_report_id,
                              prehooks=(hook_insert_current_user, ),
                              posthooks=(hook_add_multiplication_factor, ))
    return a_api.response
コード例 #4
0
def v_api_question_answer(question_answer_id=None):
    # Create a hook to insert current_user.id in the original data.
    def hook_insert_current_user(input_data):
        input_data['user_id'] = current_user.id
        return input_data

    a_api = ScoremodelRestApi(api_class=QuestionAnswerApi,
                              o_request=request,
                              api_obj_id=question_answer_id,
                              hooks=[hook_insert_current_user])
    return a_api.response
コード例 #5
0
def v_api_user_report(user_report_id=None):
    # Create a hook to insert current_user.id in the original data.
    def hook_insert_current_user(input_data):
        parsed_data = input_data
        parsed_data['user_id'] = current_user.id
        return parsed_data

    a_api = ScoremodelRestApi(api_class=UserReportApi,
                              o_request=request,
                              api_obj_id=user_report_id,
                              hooks=[hook_insert_current_user])
    return a_api.response
コード例 #6
0
ファイル: __init__.py プロジェクト: wovari/scoremodel
def v_api_public_question(question_id=None):
    ##
    # Add maximum score
    def hook_add_maximum_score(output_data):
        if question_id is not None:
            new_output = output_data
            new_output['maximum_score'] = QuestionApi().maximum_score(
                question_id)
        else:
            new_output = []
            for item in output_data:
                item['maximum_score'] = QuestionApi().maximum_score(item['id'])
                new_output.append(item)
        return new_output

    a_api = ScoremodelRestApi(api_class=QuestionApi,
                              o_request=request,
                              api_obj_id=question_id)
    return a_api.response
コード例 #7
0
def v_api_page(page_id=None):
    def hook_check_lang_id_and_menu_link_id(input_data):
        if not page_id:
            # It is a .create()
            return input_data
        parsed_data = input_data
        page_api = PageApi()
        current_page = page_api.read(page_id)
        if 'lang_id' not in parsed_data or 'menu_link_id' not in parsed_data:
            # All failures should be handled by ScoremodelRestApi
            return input_data
        if current_page.lang_id != parsed_data['lang_id']:
            raise RequiredAttributeMissing(_('You cannot update lang_id!'))
        if current_page.menu_link_id != parsed_data['menu_link_id']:
            raise RequiredAttributeMissing(
                _('You cannot update menu_link_id!'))
        return input_data

    a_api = ScoremodelRestApi(api_class=PageApi,
                              o_request=request,
                              api_obj_id=page_id,
                              hooks=[hook_check_lang_id_and_menu_link_id])
    return a_api.response
コード例 #8
0
def v_api_document_edit(document_id):
    def hook_check_filename(input_data):
        parsed_data = input_data
        document_api = DocumentApi()
        try:
            existing_document = document_api.read(document_id)
        except Exception as e:
            return input_data
        if 'original_filename' not in parsed_data:
            return input_data
        if parsed_data[
                'original_filename'] != existing_document.original_filename:
            raise RequiredAttributeMissing(
                _('You cannot modify original_filename!'))
        if 'filename' in parsed_data and parsed_data[
                'filename'] != existing_document.filename:
            raise RequiredAttributeMissing(_('You cannot modify filename!'))
        return input_data

    a_api = ScoremodelRestApi(api_class=DocumentApi,
                              o_request=request,
                              api_obj_id=document_id,
                              hooks=[hook_check_filename])
    return a_api.response
コード例 #9
0
ファイル: __init__.py プロジェクト: wovari/scoremodel
def v_api_public_report(report_id=None):
    a_api = ScoremodelRestApi(api_class=ReportApi,
                              o_request=request,
                              api_obj_id=report_id)
    return a_api.response
コード例 #10
0
ファイル: __init__.py プロジェクト: wovari/scoremodel
def v_api_risk_factor(risk_factor_id=None):
    a_api = ScoremodelRestApi(api_class=RiskFactorApi,
                              o_request=request,
                              api_obj_id=risk_factor_id)
    return a_api.response
コード例 #11
0
ファイル: __init__.py プロジェクト: wovari/scoremodel
def v_api_answer(answer_id=None):
    a_api = ScoremodelRestApi(api_class=AnswerApi,
                              o_request=request,
                              api_obj_id=answer_id)
    return a_api.response
コード例 #12
0
ファイル: __init__.py プロジェクト: wovari/scoremodel
def v_api_question(question_id=None):
    a_api = ScoremodelRestApi(api_class=QuestionApi,
                              o_request=request,
                              api_obj_id=question_id)
    return a_api.response
コード例 #13
0
def v_api_document_create():
    a_api = ScoremodelRestApi(api_class=DocumentApi, o_request=request)
    return a_api.response
コード例 #14
0
def v_api_public_page(page_id=None):
    a_api = ScoremodelRestApi(api_class=PageApi,
                              o_request=request,
                              api_obj_id=page_id)
    return a_api.response
コード例 #15
0
def v_api_document(document_id=None):
    a_api = ScoremodelRestApi(api_class=DocumentApi,
                              o_request=request,
                              api_obj_id=document_id)
    return a_api.response
コード例 #16
0
ファイル: benchmark.py プロジェクト: wovari/scoremodel
def v_api_benchmark_get(benchmark_id=None):
    a_api = ScoremodelRestApi(api_class=BenchmarkApi,
                              o_request=request,
                              api_obj_id=benchmark_id)
    return a_api.response