diff options
| author | Thibault Delavallée <tde@odoo.com> | 2019-11-25 12:26:57 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2019-12-05 15:21:28 +0000 |
| commit | 2592e72f2cd80f09fb23b4b16f8eb92ba253ff67 (patch) | |
| tree | ed6af2529339fc37003f28384aab8499bde85aa0 | |
| parent | 84bb9c748db26656d3ecd062183afe5f042dc569 (diff) | |
[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
19 files changed, 182 insertions, 175 deletions
diff --git a/addons/hr_recruitment_survey/data/survey_demo.xml b/addons/hr_recruitment_survey/data/survey_demo.xml index 86b25eec9d2..11f02802989 100644 --- a/addons/hr_recruitment_survey/data/survey_demo.xml +++ b/addons/hr_recruitment_survey/data/survey_demo.xml @@ -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> diff --git a/addons/survey/data/survey_demo_certification.xml b/addons/survey/data/survey_demo_certification.xml index e0e3f83e7fd..4c16664c273 100644 --- a/addons/survey/data/survey_demo_certification.xml +++ b/addons/survey/data/survey_demo_certification.xml @@ -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> diff --git a/addons/survey/data/survey_demo_feedback.xml b/addons/survey/data/survey_demo_feedback.xml index 293b38684df..40467a2428c 100644 --- a/addons/survey/data/survey_demo_feedback.xml +++ b/addons/survey/data/survey_demo_feedback.xml @@ -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> diff --git a/addons/survey/models/survey_question.py b/addons/survey/models/survey_question.py index dcfb8ef0126..f58f8347282 100644 --- a/addons/survey/models/survey_question.py +++ b/addons/survey/models/survey_question.py @@ -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.")) diff --git a/addons/survey/models/survey_survey.py b/addons/survey/models/survey_survey.py index fbd8be671cb..25a8b2df3e9 100644 --- a/addons/survey/models/survey_survey.py +++ b/addons/survey/models/survey_survey.py @@ -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') diff --git a/addons/survey/models/survey_user.py b/addons/survey/models/survey_user.py index e535253605f..eb0a0127c12 100644 --- a/addons/survey/models/survey_user.py +++ b/addons/survey/models/survey_user.py @@ -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): diff --git a/addons/survey/security/ir.model.access.csv b/addons/survey/security/ir.model.access.csv index 2bf75531ba4..12f19339230 100644 --- a/addons/survey/security/ir.model.access.csv +++ b/addons/survey/security/ir.model.access.csv @@ -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 diff --git a/addons/survey/security/survey_security.xml b/addons/survey/security/survey_security.xml index 46bf54e53ac..4b53a1d29fa 100644 --- a/addons/survey/security/survey_security.xml +++ b/addons/survey/security/survey_security.xml @@ -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"/> diff --git a/addons/survey/tests/common.py b/addons/survey/tests/common.py index 9d000da6f13..74a74dc463c 100644 --- a/addons/survey/tests/common.py +++ b/addons/survey/tests/common.py @@ -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') ] diff --git a/addons/survey/tests/test_certification_flow.py b/addons/survey/tests/test_certification_flow.py index 4625fff5d5e..4df1245d2c2 100644 --- a/addons/survey/tests/test_certification_flow.py +++ b/addons/survey/tests/test_certification_flow.py @@ -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 diff --git a/addons/survey/tests/test_survey.py b/addons/survey/tests/test_survey.py index 6c64d47f763..fc79ae5c053 100644 --- a/addons/survey/tests/test_survey.py +++ b/addons/survey/tests/test_survey.py @@ -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) diff --git a/addons/survey/tests/test_survey_flow.py b/addons/survey/tests/test_survey_flow.py index 472eaff55fd..5f45d2856fd 100644 --- a/addons/survey/tests/test_survey_flow.py +++ b/addons/survey/tests/test_survey_flow.py @@ -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) diff --git a/addons/survey/tests/test_survey_ui_certification.py b/addons/survey/tests/test_survey_ui_certification.py index f5a6e5645c4..a98f8966e55 100644 --- a/addons/survey/tests/test_survey_ui_certification.py +++ b/addons/survey/tests/test_survey_ui_certification.py @@ -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, diff --git a/addons/survey/tests/test_survey_ui_feedback.py b/addons/survey/tests/test_survey_ui_feedback.py index 2e10d757f8e..2447f7916dc 100644 --- a/addons/survey/tests/test_survey_ui_feedback.py +++ b/addons/survey/tests/test_survey_ui_feedback.py @@ -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, { diff --git a/addons/survey/views/survey_question_views.xml b/addons/survey/views/survey_question_views.xml index 887e380f3cb..d39254a2246 100644 --- a/addons/survey/views/survey_question_views.xml +++ b/addons/survey/views/survey_question_views.xml @@ -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> diff --git a/addons/survey/views/survey_templates.xml b/addons/survey/views/survey_templates.xml index 6023023d370..78d5bdb3968 100644 --- a/addons/survey/views/survey_templates.xml +++ b/addons/survey/views/survey_templates.xml @@ -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' diff --git a/addons/test_website_slides_full/tests/test_ui_wslides.py b/addons/test_website_slides_full/tests/test_ui_wslides.py index d0785e059dd..921ec175e8c 100644 --- a/addons/test_website_slides_full/tests/test_ui_wslides.py +++ b/addons/test_website_slides_full/tests/test_ui_wslides.py @@ -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, diff --git a/addons/website_slides_survey/data/survey_demo.xml b/addons/website_slides_survey/data/survey_demo.xml index 1d3b05224b4..c1dc1400b5e 100644 --- a/addons/website_slides_survey/data/survey_demo.xml +++ b/addons/website_slides_survey/data/survey_demo.xml @@ -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> diff --git a/addons/website_slides_survey/tests/test_course_certification_failure.py b/addons/website_slides_survey/tests/test_course_certification_failure.py index f370b9d646e..d4c32c4d4fc 100644 --- a/addons/website_slides_survey/tests/test_course_certification_failure.py +++ b/addons/website_slides_survey/tests/test_course_certification_failure.py @@ -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 ] }) |
