[REF] survey: globally rename survey.label model to survey.question.answer
PURPOSE
As new features are about to land in survey, notably live interactions [1]
and new survey building [2] performing a pre cleaning is necessary. In this
PR we clean survey models by: removing unnecessary fields, cleaning some code
and finally renaming models.
SPECIFICATIONS
In this commit we rename the long standing ``survey.label`` model. Indeed
a label is something before a question, like an input label. Labels in survey
are used for suggested answers and sometimes as rows for matrix answers.
After much thoughts we rename ``survey.label`` to ``survey.question.answer``.
It indicates this model holds answers. Moreover it is namespaced within the
``survey.question`` model name to avoid conflict with user input / user answer
model.
As model naming changes, some fields also evolve. In survey.question model
* ``labels_id`` is renamed to ``suggested_answer_ids`` to indicate it is
used to display suggested values to the user;
* ``labels_id_2`` is renamed to ``matrix_row_ids`` to indicate it is used
to generate the rows of the matrix-type question. A matrix is therefore
done using ``matrix_row_ids`` for rows and ``suggested_answer_ids`` for
columns which seems easier to understand;
In survey.question.answer (old survey.label) model
* ``question_id_2`` is renamed to ``matrix_question_id`` to ease its
understanding, notably that it is used for matrix questions;
LINKS
[0] Related to Task ID 2061901 (survey models cleaning and preparation)
[1] Task ID 1972640 (live interactions)
[2] Task ID 2119587 (new frontend for building surveys)
PR #40765
This commit is contained in:
@@ -83,58 +83,58 @@
|
||||
<field name="question_type">matrix</field>
|
||||
<field name="matrix_subtype">simple</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_col1" model="survey.label">
|
||||
<record id="survey_recruitment_form_p1_q8_col1" model="survey.question.answer">
|
||||
<field name="question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Not important</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_col2" model="survey.label">
|
||||
<record id="survey_recruitment_form_p1_q8_col2" model="survey.question.answer">
|
||||
<field name="question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Important</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_col3" model="survey.label">
|
||||
<record id="survey_recruitment_form_p1_q8_col3" model="survey.question.answer">
|
||||
<field name="question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Very important</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_row1" model="survey.label">
|
||||
<field name="question_id_2" ref="survey_recruitment_form_p1_q8"/>
|
||||
<record id="survey_recruitment_form_p1_q8_row1" model="survey.question.answer">
|
||||
<field name="matrix_question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Having a good pay</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_row2" model="survey.label">
|
||||
<field name="question_id_2" ref="survey_recruitment_form_p1_q8"/>
|
||||
<record id="survey_recruitment_form_p1_q8_row2" model="survey.question.answer">
|
||||
<field name="matrix_question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Getting on with colleagues</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_row3" model="survey.label">
|
||||
<field name="question_id_2" ref="survey_recruitment_form_p1_q8"/>
|
||||
<record id="survey_recruitment_form_p1_q8_row3" model="survey.question.answer">
|
||||
<field name="matrix_question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Having a nice office environment</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_row4" model="survey.label">
|
||||
<field name="question_id_2" ref="survey_recruitment_form_p1_q8"/>
|
||||
<record id="survey_recruitment_form_p1_q8_row4" model="survey.question.answer">
|
||||
<field name="matrix_question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">Working with state of the art technology</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_row5" model="survey.label">
|
||||
<field name="question_id_2" ref="survey_recruitment_form_p1_q8"/>
|
||||
<record id="survey_recruitment_form_p1_q8_row5" model="survey.question.answer">
|
||||
<field name="matrix_question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">6</field>
|
||||
<field name="value">Office location</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_row6" model="survey.label">
|
||||
<field name="question_id_2" ref="survey_recruitment_form_p1_q8"/>
|
||||
<record id="survey_recruitment_form_p1_q8_row6" model="survey.question.answer">
|
||||
<field name="matrix_question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">7</field>
|
||||
<field name="value">Management quality</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_row7" model="survey.label">
|
||||
<field name="question_id_2" ref="survey_recruitment_form_p1_q8"/>
|
||||
<record id="survey_recruitment_form_p1_q8_row7" model="survey.question.answer">
|
||||
<field name="matrix_question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">8</field>
|
||||
<field name="value">Having freebies such as tea, coffee and stationery</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q8_row8" model="survey.label">
|
||||
<field name="question_id_2" ref="survey_recruitment_form_p1_q8"/>
|
||||
<record id="survey_recruitment_form_p1_q8_row8" model="survey.question.answer">
|
||||
<field name="matrix_question_id" ref="survey_recruitment_form_p1_q8"/>
|
||||
<field name="sequence">9</field>
|
||||
<field name="value">Getting perks such as free parking, gym passes</field>
|
||||
</record>
|
||||
|
||||
@@ -46,12 +46,12 @@
|
||||
<field name="display_mode">dropdown</field>
|
||||
<field name="constr_mandatory" eval="True" />
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_1_choice_1">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_1_choice_1">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_1"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">No</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_1_choice_2">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_1_choice_2">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_1"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Yes</field>
|
||||
@@ -66,34 +66,34 @@
|
||||
<field name="question_type">multiple_choice</field>
|
||||
<field name="column_nb">4</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_2_choice_1">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_2_choice_1">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_2"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Chair floor protection</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_2_choice_2">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_2_choice_2">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_2"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Fanta</field>
|
||||
<field name="answer_score">-1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_2_choice_3">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_2_choice_3">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_2"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Conference chair</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_2_choice_4">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_2_choice_4">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_2"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Drawer</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_2_choice_5">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_2_choice_5">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_2"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">Customizable Lamp</field>
|
||||
@@ -107,34 +107,34 @@
|
||||
<field name="question_type">multiple_choice</field>
|
||||
<field name="column_nb">4</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_3_choice_1">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_3_choice_1">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_3"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Color</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_3_choice_2">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_3_choice_2">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_3"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Height</field>
|
||||
<field name="answer_score">-1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_3_choice_3">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_3_choice_3">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_3"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Width</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_3_choice_4">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_3_choice_4">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_3"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Legs</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_3_choice_5">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_3_choice_5">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_3"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">Number of drawers</field>
|
||||
@@ -149,24 +149,24 @@
|
||||
<field name="display_mode">dropdown</field>
|
||||
<field name="constr_mandatory" eval="True" />
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_4_choice_1">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_4_choice_1">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_4"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">1</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_4_choice_2">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_4_choice_2">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_4"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">2</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">2.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_4_choice_3">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_4_choice_3">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_4"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">3</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_1_question_4_choice_4">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_1_question_4_choice_4">
|
||||
<field name="question_id" ref="vendor_certification_page_1_question_4"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">4</field>
|
||||
@@ -196,34 +196,34 @@
|
||||
<field name="display_mode">dropdown</field>
|
||||
<field name="constr_mandatory" eval="True" />
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_1_choice_1">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_1_choice_1">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_1"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">20$</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_1_choice_2">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_1_choice_2">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_1"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">50$</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_1_choice_3">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_1_choice_3">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_1"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">80$</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_1_choice_4">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_1_choice_4">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_1"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">100$</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">2.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_1_choice_5">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_1_choice_5">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_1"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">200$</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_1_choice_6">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_1_choice_6">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_1"/>
|
||||
<field name="sequence">6</field>
|
||||
<field name="value">300$</field>
|
||||
@@ -236,40 +236,40 @@
|
||||
<field name="question_type">multiple_choice</field>
|
||||
<field name="column_nb">2</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_2_choice_1">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_2_choice_1">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_2"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Corner Desk Right Sit</field>
|
||||
<field name="answer_score">1.0</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_2_choice_2">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_2_choice_2">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_2"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Desk Combination</field>
|
||||
<field name="answer_score">1.0</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_2_choice_3">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_2_choice_3">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_2"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Cabinet with Doors</field>
|
||||
<field name="answer_score">-1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_2_choice_4">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_2_choice_4">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_2"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Large Desk</field>
|
||||
<field name="answer_score">1.0</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_2_choice_5">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_2_choice_5">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_2"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">Letter Tray</field>
|
||||
<field name="answer_score">-1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_2_choice_5">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_2_choice_5">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_2"/>
|
||||
<field name="sequence">6</field>
|
||||
<field name="value">Office Chair Black</field>
|
||||
@@ -284,27 +284,27 @@
|
||||
<field name="display_mode">dropdown</field>
|
||||
<field name="constr_mandatory" eval="True" />
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_3_choice_1">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_3_choice_1">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_3"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Very underpriced</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_3_choice_2">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_3_choice_2">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_3"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Underpriced</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_3_choice_3">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_3_choice_3">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_3"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Correctly priced</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_3_choice_4">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_3_choice_4">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_3"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">A little bit overpriced</field>
|
||||
</record>
|
||||
<record model="survey.label" id="vendor_certification_page_2_question_3_choice_5">
|
||||
<record model="survey.question.answer" id="vendor_certification_page_2_question_3_choice_5">
|
||||
<field name="question_id" ref="vendor_certification_page_2_question_3"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">A lot overpriced</field>
|
||||
|
||||
@@ -48,22 +48,22 @@
|
||||
<field name="comment_count_as_answer" eval="True"/>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p1_q3_sug1">
|
||||
<record model="survey.question.answer" id="survey_feedback_p1_q3_sug1">
|
||||
<field name="question_id" ref="survey_feedback_p1_q3"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Once a day</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p1_q3_sug2">
|
||||
<record model="survey.question.answer" id="survey_feedback_p1_q3_sug2">
|
||||
<field name="question_id" ref="survey_feedback_p1_q3"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Once a week</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p1_q3_sug3">
|
||||
<record model="survey.question.answer" id="survey_feedback_p1_q3_sug3">
|
||||
<field name="question_id" ref="survey_feedback_p1_q3"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Once a month</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p1_q3_sug4">
|
||||
<record model="survey.question.answer" id="survey_feedback_p1_q3_sug4">
|
||||
<field name="question_id" ref="survey_feedback_p1_q3"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Once a year</field>
|
||||
@@ -95,42 +95,42 @@
|
||||
<field name="comments_allowed" eval="True"/>
|
||||
<field name="comment_count_as_answer" eval="False"/>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q1_sug1">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q1_sug1">
|
||||
<field name="question_id" ref="survey_feedback_p2_q1"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">High quality</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q1_sug2">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q1_sug2">
|
||||
<field name="question_id" ref="survey_feedback_p2_q1"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Useful</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q1_sug3">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q1_sug3">
|
||||
<field name="question_id" ref="survey_feedback_p2_q1"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Unique</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q1_sug4">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q1_sug4">
|
||||
<field name="question_id" ref="survey_feedback_p2_q1"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Good value for money</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q1_sug5">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q1_sug5">
|
||||
<field name="question_id" ref="survey_feedback_p2_q1"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">Overpriced</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q1_sug6">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q1_sug6">
|
||||
<field name="question_id" ref="survey_feedback_p2_q1"/>
|
||||
<field name="sequence">6</field>
|
||||
<field name="value">Impractical</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q1_sug7">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q1_sug7">
|
||||
<field name="question_id" ref="survey_feedback_p2_q1"/>
|
||||
<field name="sequence">7</field>
|
||||
<field name="value">Ineffective</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q1_sug8">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q1_sug8">
|
||||
<field name="question_id" ref="survey_feedback_p2_q1"/>
|
||||
<field name="sequence">8</field>
|
||||
<field name="value">Poor quality</field>
|
||||
@@ -143,48 +143,48 @@
|
||||
<field name="matrix_subtype">multiple</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_col1">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_col1">
|
||||
<field name="question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Totally disagree</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_col2">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_col2">
|
||||
<field name="question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Disagree</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_col3">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_col3">
|
||||
<field name="question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Agree</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_col4">
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_col4">
|
||||
<field name="question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Totally agree</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_row1">
|
||||
<field name="question_id_2" ref="survey_feedback_p2_q2"/>
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_row1">
|
||||
<field name="matrix_question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">The new layout and design is fresh and up-to-date</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_row2">
|
||||
<field name="question_id_2" ref="survey_feedback_p2_q2"/>
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_row2">
|
||||
<field name="matrix_question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">It is easy to find the product that I want</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_row3">
|
||||
<field name="question_id_2" ref="survey_feedback_p2_q2"/>
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_row3">
|
||||
<field name="matrix_question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">The tool to compare the products is useful to make a choice</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_row4">
|
||||
<field name="question_id_2" ref="survey_feedback_p2_q2"/>
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_row4">
|
||||
<field name="matrix_question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">The checkout process is clear and secure</field>
|
||||
</record>
|
||||
<record model="survey.label" id="survey_feedback_p2_q2_row5">
|
||||
<field name="question_id_2" ref="survey_feedback_p2_q2"/>
|
||||
<record model="survey.question.answer" id="survey_feedback_p2_q2_row5">
|
||||
<field name="matrix_question_id" ref="survey_feedback_p2_q2"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">I have added products to my wishlist</field>
|
||||
</record>
|
||||
|
||||
@@ -74,15 +74,15 @@ class SurveyQuestion(models.Model):
|
||||
('multiple_choice', 'Multiple choice: multiple answers allowed'),
|
||||
('matrix', 'Matrix')], string='Question Type')
|
||||
# -- simple choice / multiple choice / matrix
|
||||
labels_ids = fields.One2many(
|
||||
'survey.label', 'question_id', string='Types of answers', copy=True,
|
||||
suggested_answer_ids = fields.One2many(
|
||||
'survey.question.answer', 'question_id', string='Types of answers', copy=True,
|
||||
help='Labels used for proposed choices: simple choice, multiple choice and columns of matrix')
|
||||
# -- matrix
|
||||
matrix_subtype = fields.Selection([
|
||||
('simple', 'One choice per row'),
|
||||
('multiple', 'Multiple choices per row')], string='Matrix Type', default='simple')
|
||||
labels_ids_2 = fields.One2many(
|
||||
'survey.label', 'question_id_2', string='Rows of the Matrix', copy=True,
|
||||
matrix_row_ids = fields.One2many(
|
||||
'survey.question.answer', 'matrix_question_id', string='Matrix Rows', copy=True,
|
||||
help='Labels used for proposed choices: rows of matrix')
|
||||
# -- display options
|
||||
column_nb = fields.Selection([
|
||||
@@ -261,7 +261,7 @@ class SurveyQuestion(models.Model):
|
||||
|
||||
def _validate_matrix(self, answers):
|
||||
# Validate that each line has been answered
|
||||
if self.constr_mandatory and len(self.labels_ids_2) != len(answers):
|
||||
if self.constr_mandatory and len(self.matrix_row_ids) != len(answers):
|
||||
return {self.id: self.constr_error_msg}
|
||||
return {}
|
||||
|
||||
@@ -276,26 +276,33 @@ class SurveyQuestion(models.Model):
|
||||
def get_correct_answer_ids(self):
|
||||
self.ensure_one()
|
||||
|
||||
return self.labels_ids.filtered(lambda label: label.is_correct)
|
||||
return self.suggested_answer_ids.filtered(lambda label: label.is_correct)
|
||||
|
||||
|
||||
class SurveyLabel(models.Model):
|
||||
""" A suggested answer for a question """
|
||||
_name = 'survey.label'
|
||||
class SurveyQuestionAnswer(models.Model):
|
||||
""" A preconfigured answer for a question. This model stores values used
|
||||
for
|
||||
|
||||
* simple choice, multiple choice: proposed values for the selection /
|
||||
radio;
|
||||
* matrix: row and column values;
|
||||
|
||||
"""
|
||||
_name = 'survey.question.answer'
|
||||
_rec_name = 'value'
|
||||
_order = 'sequence,id'
|
||||
_order = 'sequence, id'
|
||||
_description = 'Survey Label'
|
||||
|
||||
question_id = fields.Many2one('survey.question', string='Question', ondelete='cascade')
|
||||
question_id_2 = fields.Many2one('survey.question', string='Question 2', ondelete='cascade')
|
||||
matrix_question_id = fields.Many2one('survey.question', string='Question (as matrix row)', ondelete='cascade')
|
||||
sequence = fields.Integer('Label Sequence order', default=10)
|
||||
value = fields.Char('Suggested value', translate=True, required=True)
|
||||
is_correct = fields.Boolean('Is a correct answer')
|
||||
answer_score = fields.Float('Score for this choice', help="A positive score indicates a correct choice; a negative or null score indicates a wrong answer")
|
||||
|
||||
@api.constrains('question_id', 'question_id_2')
|
||||
@api.constrains('question_id', 'matrix_question_id')
|
||||
def _check_question_not_empty(self):
|
||||
"""Ensure that field question_id XOR field question_id_2 is not null"""
|
||||
"""Ensure that field question_id XOR field matrix_question_id is not null"""
|
||||
for label in self:
|
||||
if not bool(label.question_id) != bool(label.question_id_2):
|
||||
if not bool(label.question_id) != bool(label.matrix_question_id):
|
||||
raise ValidationError(_("A label must be attached to only one question."))
|
||||
|
||||
@@ -593,7 +593,7 @@ class Survey(models.Model):
|
||||
"""
|
||||
filter_display_data = []
|
||||
if filters:
|
||||
Label = self.env['survey.label']
|
||||
Label = self.env['survey.question.answer']
|
||||
for current_filter in filters:
|
||||
row_id, answer_id = current_filter['row_id'], current_filter['answer_id']
|
||||
label = Label.browse(answer_id)
|
||||
@@ -616,7 +616,7 @@ class Survey(models.Model):
|
||||
# Calculate and return statistics for choice
|
||||
if question.question_type in ['simple_choice', 'multiple_choice']:
|
||||
comments = []
|
||||
answers = OrderedDict((label.id, {'text': label.value, 'count': 0, 'answer_id': label.id, 'answer_score': label.answer_score}) for label in question.labels_ids)
|
||||
answers = OrderedDict((label.id, {'text': label.value, 'count': 0, 'answer_id': label.id, 'answer_score': label.answer_score}) for label in question.suggested_answer_ids)
|
||||
for input_line in input_lines:
|
||||
if input_line.answer_type == 'suggestion' and answers.get(input_line.value_suggested.id) and (not(current_filters) or input_line.user_input_id.id in current_filters):
|
||||
answers[input_line.value_suggested.id]['count'] += 1
|
||||
@@ -630,8 +630,8 @@ class Survey(models.Model):
|
||||
answers = OrderedDict()
|
||||
res = dict()
|
||||
comments = []
|
||||
[rows.update({label.id: label.value}) for label in question.labels_ids_2]
|
||||
[answers.update({label.id: label.value}) for label in question.labels_ids]
|
||||
[rows.update({label.id: label.value}) for label in question.matrix_row_ids]
|
||||
[answers.update({label.id: label.value}) for label in question.suggested_answer_ids]
|
||||
for cell in product(rows, answers):
|
||||
res[cell] = 0
|
||||
for input_line in input_lines:
|
||||
@@ -692,7 +692,7 @@ class Survey(models.Model):
|
||||
)
|
||||
|
||||
for question in scored_questions:
|
||||
question_answer_correct = question.labels_ids.filtered(lambda answer: answer.is_correct)
|
||||
question_answer_correct = question.suggested_answer_ids.filtered(lambda answer: answer.is_correct)
|
||||
for user_answer in user_answers:
|
||||
user_answer_lines_question = user_answer.user_input_line_ids.filtered(lambda line: line.question_id == question)
|
||||
user_answer_correct = user_answer_lines_question.filtered(lambda line: line.answer_is_correct and not line.skipped).mapped('value_suggested')
|
||||
|
||||
@@ -54,7 +54,7 @@ class SurveyUserInput(models.Model):
|
||||
for user_input in self:
|
||||
total_possible_score = sum([
|
||||
answer_score if answer_score > 0 else 0
|
||||
for answer_score in user_input.question_ids.mapped('labels_ids.answer_score')
|
||||
for answer_score in user_input.question_ids.mapped('suggested_answer_ids.answer_score')
|
||||
])
|
||||
|
||||
if total_possible_score == 0:
|
||||
@@ -196,8 +196,8 @@ class SurveyUserInputLine(models.Model):
|
||||
value_date = fields.Date('Date answer')
|
||||
value_datetime = fields.Datetime('Datetime answer')
|
||||
value_free_text = fields.Text('Free Text answer')
|
||||
value_suggested = fields.Many2one('survey.label', string="Suggested answer")
|
||||
value_suggested_row = fields.Many2one('survey.label', string="Row answer")
|
||||
value_suggested = fields.Many2one('survey.question.answer', string="Suggested answer")
|
||||
value_suggested_row = fields.Many2one('survey.question.answer', string="Row answer")
|
||||
answer_score = fields.Float('Score')
|
||||
answer_is_correct = fields.Boolean('Correct', compute='_compute_answer_is_correct')
|
||||
|
||||
@@ -233,13 +233,13 @@ class SurveyUserInputLine(models.Model):
|
||||
for vals in vals_list:
|
||||
value_suggested = vals.get('value_suggested')
|
||||
if value_suggested:
|
||||
vals.update({'answer_score': self.env['survey.label'].browse(int(value_suggested)).answer_score})
|
||||
vals.update({'answer_score': self.env['survey.question.answer'].browse(int(value_suggested)).answer_score})
|
||||
return super(SurveyUserInputLine, self).create(vals_list)
|
||||
|
||||
def write(self, vals):
|
||||
value_suggested = vals.get('value_suggested')
|
||||
if value_suggested:
|
||||
vals.update({'answer_score': self.env['survey.label'].browse(int(value_suggested)).answer_score})
|
||||
vals.update({'answer_score': self.env['survey.question.answer'].browse(int(value_suggested)).answer_score})
|
||||
return super(SurveyUserInputLine, self).write(vals)
|
||||
|
||||
def _get_save_line_values(self, answer, answer_type):
|
||||
|
||||
@@ -7,10 +7,10 @@ access_survey_question_all,survey.question.all,model_survey_question,,0,0,0,0
|
||||
access_survey_question_user,survey.question.user,model_survey_question,base.group_user,0,0,0,0
|
||||
access_survey_question_survey_user,survey.question.survey.user,model_survey_question,group_survey_user,1,1,1,1
|
||||
access_survey_question_survey_manager,survey.question.survey.manager,model_survey_question,group_survey_manager,1,1,1,1
|
||||
access_survey_label_all,survey.label.all,model_survey_label,,0,0,0,0
|
||||
access_survey_label_user,survey.label.user,model_survey_label,base.group_user,0,0,0,0
|
||||
access_survey_label_survey_user,survey.label.survey.user,model_survey_label,group_survey_user,1,1,1,1
|
||||
access_survey_label_survey_manager,survey.label.survey.manager,model_survey_label,group_survey_manager,1,1,1,1
|
||||
access_survey_question_answer_all,survey.question.answer.all,model_survey_question_answer,,0,0,0,0
|
||||
access_survey_question_answer_user,survey.question.answer.user,model_survey_question_answer,base.group_user,0,0,0,0
|
||||
access_survey_question_answer_survey_user,survey.question.answer.survey.user,model_survey_question_answer,group_survey_user,1,1,1,1
|
||||
access_survey_question_answer_survey_manager,survey.question.answer.survey.manager,model_survey_question_answer,group_survey_manager,1,1,1,1
|
||||
access_survey_user_input_all,survey.user_input.all,model_survey_user_input,,0,0,0,0
|
||||
access_survey_user_input_user,survey.user_input.user,model_survey_user_input,base.group_user,0,0,0,0
|
||||
access_survey_user_input_survey_user,survey.user_input.survey.user,model_survey_user_input,group_survey_user,1,1,1,1
|
||||
|
||||
|
@@ -87,9 +87,9 @@
|
||||
<field name="perm_create" eval="1"/>
|
||||
</record>
|
||||
|
||||
<record id="survey_label_rule_survey_manager" model="ir.rule">
|
||||
<field name="name">Survey label: manager: all</field>
|
||||
<field name="model_id" ref="survey.model_survey_label"/>
|
||||
<record id="survey_question_answer_rule_survey_manager" model="ir.rule">
|
||||
<field name="name">Survey question answer: manager: all</field>
|
||||
<field name="model_id" ref="survey.model_survey_question_answer"/>
|
||||
<field name="domain_force">[(1, '=', 1)]</field>
|
||||
<field name="groups" eval="[(4, ref('group_survey_manager'))]"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
@@ -97,9 +97,9 @@
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
</record>
|
||||
<record id="survey_label_rule_survey_user_read" model="ir.rule">
|
||||
<field name="name">Survey label: officer: read all</field>
|
||||
<field name="model_id" ref="survey.model_survey_label"/>
|
||||
<record id="survey_question_answer_rule_survey_user_read" model="ir.rule">
|
||||
<field name="name">Survey question answer: officer: read all</field>
|
||||
<field name="model_id" ref="survey.model_survey_question_answer"/>
|
||||
<field name="domain_force">[(1, '=', 1)]</field>
|
||||
<field name="groups" eval="[(4, ref('group_survey_user'))]"/>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
@@ -107,10 +107,10 @@
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_create" eval="0"/>
|
||||
</record>
|
||||
<record id="survey_label_rule_survey_user_cw" model="ir.rule">
|
||||
<field name="name">Survey label: officer: create/write/unlink linked to own survey only</field>
|
||||
<field name="model_id" ref="survey.model_survey_question"/>
|
||||
<field name="domain_force">[('survey_id.create_uid', '=', user.id)]</field>
|
||||
<record id="survey_question_answer_rule_survey_user_cw" model="ir.rule">
|
||||
<field name="name">Survey question answer: officer: create/write/unlink linked to own survey only</field>
|
||||
<field name="model_id" ref="survey.model_survey_question_answer"/>
|
||||
<field name="domain_force">['|', ('question_id.survey_id.create_uid', '=', user.id), ('matrix_question_id.survey_id.create_uid', '=', user.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('group_survey_user'))]"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
|
||||
@@ -163,7 +163,7 @@ class TestSurveyCommon(common.SavepointCase):
|
||||
'constr_error_msg': constr_error_msg,
|
||||
}
|
||||
if qtype in ('simple_choice', 'multiple_choice'):
|
||||
base_qvalues['labels_ids'] = [
|
||||
base_qvalues['suggested_answer_ids'] = [
|
||||
(0, 0, {
|
||||
'value': label['value'],
|
||||
'answer_score': label.get('answer_score', 0),
|
||||
@@ -172,11 +172,11 @@ class TestSurveyCommon(common.SavepointCase):
|
||||
]
|
||||
elif qtype == 'matrix':
|
||||
base_qvalues['matrix_subtype'] = kwargs.pop('matrix_subtype', 'simple')
|
||||
base_qvalues['labels_ids'] = [
|
||||
base_qvalues['suggested_answer_ids'] = [
|
||||
(0, 0, {'value': label['value'], 'answer_score': label.get('answer_score', 0)})
|
||||
for label in kwargs.pop('labels')
|
||||
]
|
||||
base_qvalues['labels_ids_2'] = [
|
||||
base_qvalues['matrix_row_ids'] = [
|
||||
(0, 0, {'value': label['value'], 'answer_score': label.get('answer_score', 0)})
|
||||
for label in kwargs.pop('labels_2')
|
||||
]
|
||||
|
||||
@@ -116,13 +116,13 @@ class TestCertificationFlow(common.TestSurveyCommon, HttpCase):
|
||||
csrf_token = self._find_csrf_token(response.text)
|
||||
|
||||
with patch.object(IrMailServer, 'connect'):
|
||||
self._answer_question(q01, q01.labels_ids.ids[3], answer_token, csrf_token)
|
||||
self._answer_question(q02, q02.labels_ids.ids[1], answer_token, csrf_token)
|
||||
self._answer_question(q01, q01.suggested_answer_ids.ids[3], answer_token, csrf_token)
|
||||
self._answer_question(q02, q02.suggested_answer_ids.ids[1], answer_token, csrf_token)
|
||||
self._answer_question(q03, "I think they're great!", answer_token, csrf_token)
|
||||
self._answer_question(q04, q04.labels_ids.ids[0], answer_token, csrf_token, button_submit='previous')
|
||||
self._answer_question(q04, q04.suggested_answer_ids.ids[0], answer_token, csrf_token, button_submit='previous')
|
||||
self._answer_question(q03, "Just kidding, I don't like it...", answer_token, csrf_token)
|
||||
self._answer_question(q04, q04.labels_ids.ids[0], answer_token, csrf_token)
|
||||
self._answer_question(q05, [q05.labels_ids.ids[0], q05.labels_ids.ids[1], q05.labels_ids.ids[3]], answer_token, csrf_token)
|
||||
self._answer_question(q04, q04.suggested_answer_ids.ids[0], answer_token, csrf_token)
|
||||
self._answer_question(q05, [q05.suggested_answer_ids.ids[0], q05.suggested_answer_ids.ids[1], q05.suggested_answer_ids.ids[3]], answer_token, csrf_token)
|
||||
|
||||
user_inputs.invalidate_cache()
|
||||
# Check that certification is successfully passed
|
||||
|
||||
@@ -130,10 +130,10 @@ class TestSurveyInternals(common.TestSurveyCommon):
|
||||
for i in range(3):
|
||||
answer = self._add_answer(self.survey, False, email='public@example.com')
|
||||
self._add_answer_line(
|
||||
question, answer, random.choice(question.labels_ids.ids),
|
||||
question, answer, random.choice(question.suggested_answer_ids.ids),
|
||||
answer_type='suggestion', answer_fname='value_suggested')
|
||||
lines = [line.value_suggested.id for line in question.user_input_line_ids]
|
||||
answers = [{'text': label.value, 'count': lines.count(label.id), 'answer_id': label.id, 'answer_score': label.answer_score} for label in question.labels_ids]
|
||||
answers = [{'text': label.value, 'count': lines.count(label.id), 'answer_id': label.id, 'answer_score': label.answer_score} for label in question.suggested_answer_ids]
|
||||
prp_result = self.env['survey.survey'].prepare_result(question)['answers']
|
||||
self.assertItemsEqual(prp_result, answers)
|
||||
|
||||
@@ -147,12 +147,12 @@ class TestSurveyInternals(common.TestSurveyCommon):
|
||||
for i in range(3):
|
||||
answer = self._add_answer(self.survey, False, email='public@example.com')
|
||||
self._add_answer_line(
|
||||
question, answer, random.choice(question.labels_ids.ids),
|
||||
answer_type='suggestion', answer_fname='value_suggested', value_suggested_row=random.choice(question.labels_ids_2.ids)
|
||||
question, answer, random.choice(question.suggested_answer_ids.ids),
|
||||
answer_type='suggestion', answer_fname='value_suggested', value_suggested_row=random.choice(question.matrix_row_ids.ids)
|
||||
)
|
||||
lines = [(line.value_suggested_row.id, line.value_suggested.id) for line in question.user_input_line_ids]
|
||||
res = {}
|
||||
for i in product(question.labels_ids_2.ids, question.labels_ids.ids):
|
||||
for i in product(question.matrix_row_ids.ids, question.suggested_answer_ids.ids):
|
||||
res[i] = lines.count((i))
|
||||
self.assertEqual(self.env['survey.survey'].prepare_result(question)['result'], res)
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ class TestSurveyFlow(common.TestSurveyCommon, HttpCase):
|
||||
|
||||
# Customer submit second page answers
|
||||
answer_data = {
|
||||
page1_q0.id: {'value': [page1_q0.labels_ids.ids[0], page1_q0.labels_ids.ids[1]]},
|
||||
page1_q0.id: {'value': [page1_q0.suggested_answer_ids.ids[0], page1_q0.suggested_answer_ids.ids[1]]},
|
||||
}
|
||||
post_data = self._format_submission_data(page_1, answer_data, {'csrf_token': csrf_token, 'token': answer_token, 'button_submit': 'next'})
|
||||
r = self._access_submit(survey, answer_token, post_data)
|
||||
|
||||
@@ -38,7 +38,7 @@ class TestUiCertification(HttpCaseWithUserDemo):
|
||||
'question_type': 'simple_choice',
|
||||
'display_mode': 'dropdown',
|
||||
'constr_mandatory': True,
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'No',
|
||||
'sequence': 1,
|
||||
@@ -54,7 +54,7 @@ class TestUiCertification(HttpCaseWithUserDemo):
|
||||
'sequence': 3,
|
||||
'question_type': 'multiple_choice',
|
||||
'column_nb': '4',
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'Chair floor protection',
|
||||
'sequence': 1,
|
||||
@@ -85,7 +85,7 @@ class TestUiCertification(HttpCaseWithUserDemo):
|
||||
'sequence': 4,
|
||||
'question_type': 'multiple_choice',
|
||||
'column_nb': '4',
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'Color',
|
||||
'sequence': 1,
|
||||
@@ -117,7 +117,7 @@ class TestUiCertification(HttpCaseWithUserDemo):
|
||||
'question_type': 'simple_choice',
|
||||
'display_mode': 'dropdown',
|
||||
'constr_mandatory': True,
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 1,
|
||||
'sequence': 1,
|
||||
@@ -150,7 +150,7 @@ class TestUiCertification(HttpCaseWithUserDemo):
|
||||
'question_type': 'simple_choice',
|
||||
'display_mode': 'dropdown',
|
||||
'constr_mandatory': True,
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': '20$',
|
||||
'sequence': 1,
|
||||
@@ -178,7 +178,7 @@ class TestUiCertification(HttpCaseWithUserDemo):
|
||||
'sequence': 9,
|
||||
'question_type': 'multiple_choice',
|
||||
'column_nb': '2',
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'Corner Desk Right Sit',
|
||||
'sequence': 1,
|
||||
@@ -214,7 +214,7 @@ class TestUiCertification(HttpCaseWithUserDemo):
|
||||
'question_type': 'simple_choice',
|
||||
'display_mode': 'dropdown',
|
||||
'constr_mandatory': True,
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'Very underpriced',
|
||||
'sequence': 1,
|
||||
|
||||
@@ -43,7 +43,7 @@ class TestUiFeedback(HttpCaseWithUserDemo):
|
||||
'comments_allowed': True,
|
||||
'comment_count_as_answer': True,
|
||||
'constr_mandatory': True,
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'Once a day',
|
||||
'sequence': 1,
|
||||
@@ -78,7 +78,7 @@ class TestUiFeedback(HttpCaseWithUserDemo):
|
||||
'constr_mandatory': True,
|
||||
'comments_allowed': True,
|
||||
'comment_count_as_answer': False,
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'High quality',
|
||||
'sequence': 1,
|
||||
@@ -113,7 +113,7 @@ class TestUiFeedback(HttpCaseWithUserDemo):
|
||||
'question_type': 'matrix',
|
||||
'matrix_subtype': 'multiple',
|
||||
'constr_mandatory': True,
|
||||
'labels_ids': [(0, 0, {
|
||||
'suggested_answer_ids': [(0, 0, {
|
||||
'value': 'Totally disagree',
|
||||
'sequence': 1
|
||||
}), (0, 0, {
|
||||
@@ -126,7 +126,7 @@ class TestUiFeedback(HttpCaseWithUserDemo):
|
||||
'value': 'Totally agree',
|
||||
'sequence': 4,
|
||||
})],
|
||||
'labels_ids_2': [(0, 0, {
|
||||
'matrix_row_ids': [(0, 0, {
|
||||
'value': 'The new layout and design is fresh and up-to-date',
|
||||
'sequence': 1,
|
||||
}), (0, 0, {
|
||||
|
||||
@@ -102,8 +102,8 @@
|
||||
<field name="survey_id" invisible="1" readonly="1"/>
|
||||
<field name="scoring_type" invisible="1"/>
|
||||
<separator />
|
||||
<label for="labels_ids" string="Columns of the Matrix" attrs="{'invisible': [('question_type', '!=', 'matrix')]}" />
|
||||
<field name="labels_ids" string="Type of answers" context="{'default_question_id': active_id}" attrs="{'invisible': [('question_type', 'not in', ['simple_choice', 'multiple_choice', 'matrix'])]}">
|
||||
<label for="suggested_answer_ids" string="Columns of the Matrix" attrs="{'invisible': [('question_type', '!=', 'matrix')]}" />
|
||||
<field name="suggested_answer_ids" string="Type of answers" context="{'default_question_id': active_id}" attrs="{'invisible': [('question_type', 'not in', ['simple_choice', 'multiple_choice', 'matrix'])]}">
|
||||
<tree editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="value" string="Choices"/>
|
||||
@@ -112,8 +112,8 @@
|
||||
</tree>
|
||||
</field>
|
||||
<separator />
|
||||
<label for="labels_ids_2" attrs="{'invisible': [('question_type', '!=', 'matrix')]}" />
|
||||
<field name="labels_ids_2" context="{'default_question_id_2': active_id}" attrs="{'invisible': [('question_type', '!=', 'matrix')]}">
|
||||
<label for="matrix_row_ids" attrs="{'invisible': [('question_type', '!=', 'matrix')]}" />
|
||||
<field name="matrix_row_ids" context="{'default_matrix_question_id': active_id}" attrs="{'invisible': [('question_type', '!=', 'matrix')]}">
|
||||
<tree editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="value" string="Rows"/>
|
||||
@@ -203,22 +203,22 @@
|
||||
</record>
|
||||
|
||||
<!-- LABELS -->
|
||||
<record model="ir.ui.view" id="survey_label_tree">
|
||||
<field name="name">survey_label_tree</field>
|
||||
<field name="model">survey.label</field>
|
||||
<record id="survey_question_answer_view_tree" model="ir.ui.view">
|
||||
<field name="name">survey.question.answer.view.tree</field>
|
||||
<field name="model">survey.question.answer</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Survey Label" create="false">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="question_id"/>
|
||||
<field name="question_id_2"/>
|
||||
<field name="matrix_question_id"/>
|
||||
<field name="value"/>
|
||||
<field name="answer_score" groups="base.group_no_one"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="survey_label_search" model="ir.ui.view">
|
||||
<field name="name">survey_label_search</field>
|
||||
<field name="model">survey.label</field>
|
||||
<record id="survey_question_answer_view_search" model="ir.ui.view">
|
||||
<field name="name">survey.question.answer.view.search</field>
|
||||
<field name="model">survey.question.answer</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Label">
|
||||
<field name="question_id"/>
|
||||
@@ -229,11 +229,11 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_survey_label_form">
|
||||
<record id="survey_question_answer_action" model="ir.actions.act_window">
|
||||
<field name="name">Suggested Values</field>
|
||||
<field name="res_model">survey.label</field>
|
||||
<field name="res_model">survey.question.answer</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="survey_label_search"/>
|
||||
<field name="search_view_id" ref="survey_question_answer_view_search"/>
|
||||
<field name="context">{'search_default_group_by_question': True}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_empty_folder">
|
||||
@@ -249,7 +249,7 @@
|
||||
sequence="2"/>
|
||||
<menuitem name="Suggested Values"
|
||||
id="menu_survey_label_form1"
|
||||
action="action_survey_label_form"
|
||||
action="survey_question_answer_action"
|
||||
parent="survey_menu_questions"
|
||||
sequence="3"/>
|
||||
</data>
|
||||
|
||||
@@ -241,7 +241,7 @@
|
||||
<select class="form-control o_survey_form_choice_item">
|
||||
<option disabled="1" selected="1" value=""
|
||||
t-att-selected="not answer_line and (not comment_line or not question.comment_count_as_answer) and 'selected' or None">Choose...</option>
|
||||
<t t-foreach='question.labels_ids' t-as='label'>
|
||||
<t t-foreach='question.suggested_answer_ids' t-as='label'>
|
||||
<option t-att-value='label.id'
|
||||
t-att-selected="answer_line and answer_line.value_suggested == label and 'selected' or None"><t t-esc='label.value'/></option>
|
||||
</t>
|
||||
@@ -265,7 +265,7 @@
|
||||
<div t-if="question.display_mode == 'columns'" class="row o_survey_form_choice o_survey_question_simple_choice_radio"
|
||||
t-att-data-name="question.id"
|
||||
data-question-type="simple_choice_radio">
|
||||
<div t-foreach='question.labels_ids' t-as='label' t-attf-class="col-lg-#{question.column_nb}">
|
||||
<div t-foreach='question.suggested_answer_ids' t-as='label' t-attf-class="col-lg-#{question.column_nb}">
|
||||
<label t-att-class="' bg-success ' if quizz_correction and label.answer_score > 0.0 else None">
|
||||
<input type="radio" t-att-value='label.id' class="o_survey_form_choice_item"
|
||||
t-att-checked="answer_line and answer_line.value_suggested.id == label.id and 'checked' or None"/>
|
||||
@@ -293,7 +293,7 @@
|
||||
<div class="row o_survey_form_choice o_survey_question_multiple_choice"
|
||||
t-att-data-name="question.id"
|
||||
t-att-data-question-type="question.question_type">
|
||||
<div t-foreach='question.labels_ids' t-as='label' t-attf-class="col-lg-#{question.column_nb}">
|
||||
<div t-foreach='question.suggested_answer_ids' t-as='label' t-attf-class="col-lg-#{question.column_nb}">
|
||||
<t t-set="answer_line" t-value="answer_lines.filtered(lambda line: line.value_suggested == label)"/>
|
||||
<label t-att-class="' bg-success ' if quizz_correction and label.answer_score > 0.0 else None">
|
||||
<input type="checkbox" t-att-value='label.id' class="o_survey_form_choice_item"
|
||||
@@ -326,13 +326,13 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th t-foreach="question.labels_ids" t-as="col_label"><span t-field="col_label.value" /></th>
|
||||
<th t-foreach="question.suggested_answer_ids" t-as="col_label"><span t-field="col_label.value" /></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="question.labels_ids_2" t-as="row_label">
|
||||
<tr t-foreach="question.matrix_row_ids" t-as="row_label">
|
||||
<th><span t-field="row_label.value" /></th>
|
||||
<td t-foreach="question.labels_ids" t-as="col_label">
|
||||
<td t-foreach="question.suggested_answer_ids" t-as="col_label">
|
||||
<t t-set="answer" t-value="answer_lines.filtered(lambda line: line.value_suggested == col_label and line.value_suggested_row == row_label)"/>
|
||||
<input t-att-type="'checkbox' if question.matrix_subtype == 'multiple' else 'radio'"
|
||||
t-att-name="'%s_%s' % (question_id, row_label.id)" t-att-value='col_label.id'
|
||||
|
||||
@@ -77,7 +77,7 @@ class TestUi(TestUICommon):
|
||||
'question_type': 'simple_choice',
|
||||
'display_mode': 'dropdown',
|
||||
'constr_mandatory': True,
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'Fir',
|
||||
'sequence': 1,
|
||||
@@ -99,7 +99,7 @@ class TestUi(TestUICommon):
|
||||
'sequence': 3,
|
||||
'question_type': 'multiple_choice',
|
||||
'column_nb': '4',
|
||||
'labels_ids': [
|
||||
'suggested_answer_ids': [
|
||||
(0, 0, {
|
||||
'value': 'Chair',
|
||||
'sequence': 1,
|
||||
|
||||
@@ -34,24 +34,24 @@
|
||||
<field name="display_mode">dropdown</field>
|
||||
<field name="constr_mandatory" eval="True" />
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_1_choice_1">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_1_choice_1">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_1"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Fir</field>
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_1_choice_2">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_1_choice_2">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_1"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Oak</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">2.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_1_choice_3">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_1_choice_3">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_1"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Ash</field>
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_1_choice_4">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_1_choice_4">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_1"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Beech</field>
|
||||
@@ -64,34 +64,34 @@
|
||||
<field name="question_type">multiple_choice</field>
|
||||
<field name="column_nb">4</field>
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_2_choice_1">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_2_choice_1">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_2"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="value">Chair</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_2_choice_2">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_2_choice_2">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_2"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="value">Table</field>
|
||||
<field name="answer_score">-1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_2_choice_3">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_2_choice_3">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_2"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">Desk</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_2_choice_4">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_2_choice_4">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_2"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="value">Shelve</field>
|
||||
<field name="is_correct" eval="True" />
|
||||
<field name="answer_score">1.0</field>
|
||||
</record>
|
||||
<record model="survey.label" id="furniture_certification_page_1_question_2_choice_5">
|
||||
<record model="survey.question.answer" id="furniture_certification_page_1_question_2_choice_5">
|
||||
<field name="question_id" ref="furniture_certification_page_1_question_2"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="value">Bed</field>
|
||||
|
||||
@@ -108,7 +108,7 @@ class TestCourseCertificationFailureFlow(TestSurveyCommon):
|
||||
def fill_in_answer(self, answer, questions, good_answers=False):
|
||||
""" Fills in the user_input with answers for all given questions.
|
||||
You can control whether the answer will be correct or not with the 'good_answers' param.
|
||||
(It's assumed that wrong answers are at index 0 of question.labels_ids and good answers at index 1) """
|
||||
(It's assumed that wrong answers are at index 0 of question.suggested_answer_ids and good answers at index 1) """
|
||||
answer.write({
|
||||
'state': 'done',
|
||||
'user_input_line_ids': [
|
||||
@@ -116,7 +116,7 @@ class TestCourseCertificationFailureFlow(TestSurveyCommon):
|
||||
'question_id': question.id,
|
||||
'answer_type': 'suggestion',
|
||||
'answer_score': 1 if good_answers else 0,
|
||||
'value_suggested': question.labels_ids[1 if good_answers else 0].id
|
||||
'value_suggested': question.suggested_answer_ids[1 if good_answers else 0].id
|
||||
}) for question in questions
|
||||
]
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user