Skip to content
Snippets Groups Projects
  1. Dec 05, 2019
    • Thibault Delavallée's avatar
      [REF] survey: clean results page and its code generating statistics · 351a4439
      Thibault Delavallée authored
      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
      
      Purpose of this commit 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;
      
      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
      351a4439
    • Thibault Delavallée's avatar
      [FIX] survey: lint JS files and reorganize route code · bb3d4634
      Thibault Delavallée authored
      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
      
      This commit lints JS files located in survey as some typos and mistakes
      were recently introduced. Code related to routes is also slightly reorganized
      to better understand file main sections.
      
      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
      bb3d4634
    • Thibault Delavallée's avatar
      [REF] survey: on survey.user_input{.line}, reorganize and clean model code · a6e9ee91
      Thibault Delavallée authored
      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 survey.user_input.line, clean code about constraints. Purpose is to make
      it easier to read and understand.
      
      Code creating user input lines is moved from survey.user_input.line model to
      survey.user_input. Indeed it is now based on a user_input record, and create
      answer line related to a question, based on values coming from controllers
      (and therefore frontend). It makes more sense to delegate that code to the
      user_input model itself that creates its lines. Code is also rewritten to
      be cleaner and easier to read.
      
      Code computing statistics on user input records is moved from survey model
      to user_input model, where it belongs. Missing translation marks are added
      because translations matter.
      
      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
      a6e9ee91
    • Thibault Delavallée's avatar
      [REF] survey: on survey.{question,user_input.line}, make type and field names match · 0406b704
      Thibault Delavallée authored
      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
      
      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.
      
      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
      0406b704
    • Thibault Delavallée's avatar
      [REF] survey: on survey.user_input, rename question_ids field to predefined_question_ids · 2a35d92b
      Thibault Delavallée authored
      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
      
      ``question_ids`` field name is quite difficult to understand as we wonder why
      there is such a field on user input model. As its purpose is to store questions
      user has to answer (randomly chosen or all chosen) let us rename it to
      ``predefined_question_ids``.
      
      Moreover starting from now on if it is now given at create it is automatically
      computed. Classic flows go through ``survey._create_answer()`` method that
      prepares them accordingly. However tests or demo data do not necessarily go
      through that method and it makes scoring fail (notably) if people forget
      to define them.
      
      Let us automatically generate them at user input create if not given.
      
      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
      2a35d92b
    • Thibault Delavallée's avatar
      [REF] survey: on survey.user_input.line, rename value_suggested{_row} fields · 3a094f22
      Thibault Delavallée authored
      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
      
      A new naming 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 indicates the use;
      
      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
      3a094f22
    • Thibault Delavallée's avatar
      [REF] survey: on survey.user_input, rename some fields to ease understanding · 755ac5f3
      Thibault Delavallée authored
      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: RENAME QUIZ_SCORE ON SURVEY.USER_INPUT
      
      On survey.user_input, quiz_score field to scoring_percentage
      
      ``quiz_score`` field name is related to the old "quiz" behavior of surveys
      that is replaced by certifications and scoring mechanisms. Let us propagate
      the renaming, beginning with a ``scoring_`` prefix.
      
      SPECIFICATIONS: RENAME QUIZZ_PASSED ON SURVEY.USER_INPUT
      
      on survey.user_input, rename quizz_passed field to scoring_success
      
      ``quizz_passed`` field name is related to the old "quiz" behavior of surveys
      that is replaced by certifications and scoring mechanisms. Let us propagate
      the renaming, beginning with a ``scoring_`` prefix.
      
      SPECIFICATIONS: RENAME TOKEN ON SURVEY.USER_INPUT
      
      on survey.user_input, rename token field to access_token
      
      Survey user input model holds two token field. One is used to distinguish
      a pool of attempts linked to a given invite: ``invite_token``. The other
      one is used to control access to a specific user input. It means that
      ``invite_token`` indicates a set of user inputs and each of them is accessed
      through its own ``token``. To be coherent with other naming in odoo this
      latter field is renamed to ``access_token``.
      
      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
      755ac5f3
    • Thibault Delavallée's avatar
      [REF] survey: on survey.survey, rename some fields to ease understanding · 1e668940
      Thibault Delavallée authored
      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: RENAME THANKS_YOU_MESSAGE ON SURVEY.SURVEY
      
      On survey.survey, rename thanks_you_message to description_done
      
      In this commit we rename thanks_you_message field. Indeed for certifications
      or recruitment form, "thank you" is not really the unique content you
      would get in a post-survey message. We therefore rename it to description_done
      to better indicate its use.
      
      SPECIFICATIONS: RENAME CERTIFICATE ON SURVEY.SURVEY
      
      On survey.survey, rename certificate field to certification
      
      All certification related fields on survey model begin with certification_ .
      Only the boolean one telling if a survey is a certification or not is called
      certificate. In order to ease grep and ordering it is renamed to certification.
      
      SPECIFICATIONS: RENAME PASSING_SCORE ON SURVEY.SURVEY
      
      on survey.survey, rename passing_score field to scoring_success_min
      
      ``passing_score`` field name is not really the best name we could find.
      Renaming the field using a ``scoring_`` prefix allow to know this field
      is linked to the scoring mechanism.
      
      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
      1e668940
    • Thibault Delavallée's avatar
      [REF] survey: globally rename survey.user_input_line model to survey.user_input.line · 7edeb24d
      Thibault Delavallée authored
      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
      
      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.
      
      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
      7edeb24d
    • Thibault Delavallée's avatar
      [REF] survey: globally rename survey.label model to survey.question.answer · 2592e72f
      Thibault Delavallée authored
      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
      2592e72f
    • Thibault Delavallée's avatar
      [REF] survey: remove unused or unnecessary fields to clean models · 84bb9c74
      Thibault Delavallée authored
      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: QUESTION FIELD ON SURVEY.SURVEY
      
      On survey.survey, remove question field, unnecessary related on title.
      
      Question model holds two fields for its title: ``title`` and ``question``.
      Question is simply a related on title, making the two fields completely
      redundant. It is mainly due to historical reasons, when updating models for
      certifications and eLearning. In this commit we keep only title field and
      remove the question related field as it adds unnecessary complexity to the
      model.
      
      SPECIFICATIONS: INPUT_TYPE FIELD ON SURVEY.USER_INPUT
      
      On survey.user_input, remove input_type and its garbage collect.
      
      ``input_type`` field exists on user input model to tell whether answer has
      been created through invite or through manual click on a survey page. It
      has been added a long time ago when surveys were either open to everyone,
      either closed and on invite only.
      
      Since eLearning and certification surveys access mode on surveys has evolved.
      Notably being able to distinguish invite from manual survey user input is not
      necessary anymore. Indeed what is important is the way people can reach the
      survey, not how they created their user input.
      
      Invitation creates token and this can be used if people effectively want to
      find invitation-related user inputs.
      
      Since 09ea5c7d manual entries still in draft are garbage collected.
      Reason is still unclear as it is not obvious that tons of unnecessary entries
      will be created. As this seems like unnecessary optimization this commit
      removes that feature along with the input_type field.
      
      SPECIFICATIONS: REPLACE URLS FIELDS BY METHODS ON SURVEY.{SURVEY, USER_INPUT}
      
      On survey.{survey, user_input}, remove url fields replaced by methods
      
      In this commit we remove some remaining of URL fields that are better found
      using methods. Both survey and user input holds a "start" url field that is
      replaced by a method call ``get_start_url`` on both survey (generic) and
      user input (token specific) models. We also introduced a ``get_print_url``
      method doing the same for the printable version of survey / user input.
      
      SPECIFICATIONS: REMOVE CATEGORY FIELD ON SURVEY.SURVEY
      
      On survey.survey, remove unused category field.
      
      Survey model holds a ``category`` field whose purpose is to be able to somehow
      categorize surveys according to their use. However using this field is not
      easy as it is hidden and is a simple selection field. Module should add their
      own key. Its sole use is in ``hr_recruitment_survey`` which is a niche module.
      Let us clean models and lessen model complexity.
      
      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
      84bb9c74
    • Thibault Delavallée's avatar
      [IMP] base: add math floor and ceil to qweb rendering context · ca52dbae
      Thibault Delavallée authored
      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
      
      Add math floor and ceil functions in qweb rendering context. It allows to use
      some math methods directly in templates to avoid unnecessary data preparation
      in controllers that lead to a lot of hard to read code mixed with important
      code. Notably in survey we will use them for some pagination within statistics
      rendering.
      
      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
      ca52dbae
  2. Dec 04, 2019
    • Andrea Grazioso (agr-odoo)'s avatar
      [FIX] account: correctly get "Search More" output · 8c6976a6
      Andrea Grazioso (agr-odoo) authored
      
      Open Bank reconciliation, deactivate some record (-), go to "Manual
      Operations" tab, add Analytic Tags using the "Search More" functionality.
      Resulting tag will be blank and impossible to delete.
      
      This is because:
      1) The field shown is the display name, which is missing.
      2) When selecting analytic tag(s) this way an array of
      results is returned but it is not handled correclty by the view.
      When selecting the analytic tag from the drop down menu a single value
      '{id: , display_name: }' is returned.
      
      opw-2146833
      
      closes odoo/odoo#41419
      
      X-original-commit: 42ae9ce544605314d969ae1210245f5b5bbf2628
      Related: odoo/enterprise#7073
      Signed-off-by: default avatarNicolas Lempereur (nle) <nle@odoo.com>
      8c6976a6
  3. Nov 19, 2019
  4. Dec 05, 2019
  5. Dec 04, 2019
    • Nicolas Lempereur's avatar
      [FIX] pad: no deadlock on pad readonly modification · 9edb13c6
      Nicolas Lempereur authored
      
      When the adapation without jQuery promise was done for 12.3 (in
      bfed5742) the hack for always saving a pad URL was added in
      the deferrence of the start method.
      
      This caused that in the following conditions:
      
      - pad URL is set
      - form is in edit mode
      - a change in the form change the readonly status of the pad
      
      => we would have a mutex lock (of the form change) waiting for the pad
      that is being rerendered to finish its start but that can only be done
      once the mutex is unlocked (because setValue of the pad is protected by
      the same mutex) => so we have deadlock and interface does not allow to
      save or do any other change.
      
      This happened for example if we had a project.project A without
      collaborative pad, project.project B with collaborative pad, and if we
      moved a task from project B to project A then back to project B.
      
      With this change, we get back to the behavior before bfed5742 of not
      waiting for the fake "setValue" in `start` of Pad.
      
      Without the change, added test fails with:
          Expected 1 assertions, but 0 were run
      
      because interface is deadlocked so write does not happen.
      
      opw-2150827
      closes #41346
      
      closes odoo/odoo#41406
      
      X-original-commit: cc73abb218e17756b21824a192f4461eb8537c0e
      Signed-off-by: default avatarNicolas Lempereur (nle) <nle@odoo.com>
      9edb13c6
  6. Dec 05, 2019
  7. Dec 04, 2019
  8. Dec 05, 2019
  9. Dec 04, 2019
  10. Dec 03, 2019
  11. Dec 04, 2019
Loading