[MERGE] survey: clean and rename models, refactor survey results page code
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
[REF] survey: remove unused or unnecessary fields to clean models. Some fields
are also renamed to better indicate their use.
* On survey.survey, remove question field, unnecessary related on title.
* On survey.survey, remove unused category field.
* On survey.user_input, remove input_type and its garbage collect.
* On survey.{survey, user_input}, remove url fields replaced by methods
* On survey.survey, rename thanks_you_message to description_done
* On survey.survey, rename certificate field to certification
* On survey.survey, rename passing_score field to scoring_success_min
* On survey.user_input, rename quiz_score field to scoring_percentage
* On survey.user_input, rename quizz_passed field to scoring_success
* On survey.user_input, rename token field to access_token
* On survey.user_input, rename question_ids field to predefined_question_ids
[REF] survey: rename some models to ease understanding
In this merge 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;
Main user answer model is ``survey.user_input``. It holds lines related to
answers given to specific questions. In this commit we rename this model from
``survey.user_input_line`` to ``survey.user_input.line`` to be coherent with
general odoo naming guidelines.
[REF] survey: on survey.user_input.line, rename value_suggested{_row}
A new naming recently introduced for ``survey.question.answer`` has been
recently introduced: ``suggested_answer_ids`` and ``matrix_row_ids``. In
this commit we propagate that naming to survey.user_input.line model. New
naming is
* ``suggested_answer_id``: one chosen value for single / multiple choice.
It is also used for matrix columns as those indicates the value to give
on a given row;
* ``matrix_row_id``: the related row of the suggested answer for matrix
questions;
It adds two benefits
* it finishes by _id which is always a good idea for m2o fields;
* it better indicate the use;
[REF] survey: on survey.{question,user_input.line}, make type and field names match
To better understand question type and their input type, we update some of
``survey.question`` ``question_type`` keys :
Type----Old type-----New type
text----free_text----text_box
char----textbox------char_box
Untouched question types: ``numerical_box``, ``date``, ``datetime``,
``simple_choice``, ``multiple_choice``, ``matrix``. Those are already
understandable.
Then ``survey.user_input.line`` ``answer_type`` keys are also updated to
match their question type counterparts
QuestType--------Old type-----New type
text_box---------free_text----text_box
char_box---------text---------char_box
numerical_box----number-------numerical_box
Then ``survey.user_input.line`` fields used to store the value are updated to
propagate the new naming
AnswerLineType----Old field----------New field
text_box----------value_free_text----value_text_box
char_box----------value_text---------value_char_box
numerical_box-----value_number-------value_numerical_box
Untouched answer types and field storing value: ``date``, ``datetime`` still
refer to same question type and use value_date / value_datetime fields.
``simple_choice``, ``multiple_choice`` and ``matrix`` still use ``suggestion``
answer type and ``suggested_answer_id`` (+ ``matrix_row_id``) to store link
to ``survey.question.answer`` records.
[REF] survey: refactor results page
Purpose of this merge is to globally rewrite the way statistics are
pre computed and used in results page of surveys. Indeed current code is
very complex, having a lot of calls to the same methods while taking only
part of its results. It also have a mix of model and controller methods,
data is computed several times a bit differently, ...
In this commit we rewrite that part. Including
* a simpler code flow;
* a simpler data structure;
* use a better naming for methods instead of "prepare_results" called
randomly within the code and re-using part of its returned content;
* use record sets / records instead of giving sub-elements of a record
like question.title, label.value, ...
Data structure
* simply give a question_and_page_ids to the template that will iterate
on pages / questions;
* have a graph_data, table_data dictionaries available for graph and
table display with simple entries;
* graph_data: holding all necessary but minimalist data for graph display
if question allows it;
* table_data: holding all necessary but minimalist data for table / summary
display;
* hold record sets of done / failed answers and answer lines;
In this commit we also simplify and clean pagination in survey graph results
* remove page_range helper tool that can be inlined in the templates
directly, doing a simple range;
* fix and improve pagination code;
[IMP] survey: improve demo data
Add a new demo survey about a quiz: a survey with scoring but no certificate.
Have almost all possible combinations of questions and options (notably choices
to have a scoring) and answer lines in order to be able to, notably, debug
the statistics / result page.
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
closes odoo/odoo#41198
Signed-off-by:
Thibault Delavallee (tde) <tde@openerp.com>
No related branches found
No related tags found
Showing
- addons/hr_recruitment_survey/__manifest__.py 0 additions, 1 deletionaddons/hr_recruitment_survey/__manifest__.py
- addons/hr_recruitment_survey/data/survey_demo.xml 27 additions, 28 deletionsaddons/hr_recruitment_survey/data/survey_demo.xml
- addons/hr_recruitment_survey/models/__init__.py 0 additions, 1 deletionaddons/hr_recruitment_survey/models/__init__.py
- addons/hr_recruitment_survey/models/hr_applicant.py 2 additions, 6 deletionsaddons/hr_recruitment_survey/models/hr_applicant.py
- addons/hr_recruitment_survey/models/hr_job.py 1 addition, 2 deletionsaddons/hr_recruitment_survey/models/hr_job.py
- addons/hr_recruitment_survey/models/survey_survey.py 0 additions, 9 deletionsaddons/hr_recruitment_survey/models/survey_survey.py
- addons/hr_recruitment_survey/tests/test_recruitment_survey.py 2 additions, 2 deletions...ns/hr_recruitment_survey/tests/test_recruitment_survey.py
- addons/hr_recruitment_survey/views/hr_job_views.xml 1 addition, 1 deletionaddons/hr_recruitment_survey/views/hr_job_views.xml
- addons/hr_recruitment_survey/views/survey_survey_views.xml 0 additions, 13 deletionsaddons/hr_recruitment_survey/views/survey_survey_views.xml
- addons/hr_skills_survey/models/survey_user.py 3 additions, 3 deletionsaddons/hr_skills_survey/models/survey_user.py
- addons/survey/__manifest__.py 3 additions, 1 deletionaddons/survey/__manifest__.py
- addons/survey/controllers/main.py 139 additions, 231 deletionsaddons/survey/controllers/main.py
- addons/survey/data/mail_template_data.xml 3 additions, 3 deletionsaddons/survey/data/mail_template_data.xml
- addons/survey/data/survey.user_input.line.csv 11 additions, 11 deletionsaddons/survey/data/survey.user_input.line.csv
- addons/survey/data/survey_demo_certification.xml 37 additions, 82 deletionsaddons/survey/data/survey_demo_certification.xml
- addons/survey/data/survey_demo_feedback.xml 31 additions, 36 deletionsaddons/survey/data/survey_demo_feedback.xml
- addons/survey/data/survey_demo_quiz.xml 284 additions, 0 deletionsaddons/survey/data/survey_demo_quiz.xml
- addons/survey/data/survey_demo_quiz_userinput.xml 406 additions, 0 deletionsaddons/survey/data/survey_demo_quiz_userinput.xml
- addons/survey/models/__init__.py 0 additions, 1 deletionaddons/survey/models/__init__.py
- addons/survey/models/ir_autovacuum.py 0 additions, 13 deletionsaddons/survey/models/ir_autovacuum.py
Loading
Please register or sign in to comment