From da33b5547d0894f551477331bcdf86377077178c Mon Sep 17 00:00:00 2001 From: Patrick Hoste Date: Thu, 9 Feb 2023 09:25:08 +0000 Subject: [PATCH] [IMP] survey: add clone action on question After this commit, the user will be able to clone a question inside a survey, the cloned question will have the same sequence as the original and thus will be displayed just below it. This commit also remove the is_conditional icon on the overall questions tree view and the misplaced warning which was previously introduced in commit [1]. [1] : b1d185624599b9e4a5457399a99525a04de9d9bb Task-3088848 closes odoo/odoo#112385 X-original-commit: bdcc2e6c4bec23c200a3fa2a2b4dd1bb06943f39 Signed-off-by: Thibault Delavallee (tde) --- addons/survey/models/survey_question.py | 10 ++++++++++ .../question_page_list_renderer.js | 8 ++++++++ .../survey_question_trigger.js | 18 +----------------- .../survey_question_trigger_widget_tests.js | 3 +-- addons/survey/views/survey_question_views.xml | 5 +---- addons/survey/views/survey_survey_views.xml | 4 +++- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/addons/survey/models/survey_question.py b/addons/survey/models/survey_question.py index a23576b3db9..6e13b07c4cf 100644 --- a/addons/survey/models/survey_question.py +++ b/addons/survey/models/survey_question.py @@ -386,6 +386,16 @@ class SurveyQuestion(models.Model): # CRUD # ------------------------------------------------------------ + @api.returns('self', lambda value: value.id) + def copy(self, default=None): + self.ensure_one() + clone = super().copy(default) + if self.is_conditional: + clone.is_conditional = True + clone.triggering_question_id = self.triggering_question_id.id + clone.triggering_answer_id = self.triggering_answer_id.id + return clone + def unlink(self): """ Makes sure no question is left depending on the question we're deleting.""" depending_questions = self.env['survey.question'].search([('triggering_question_id', 'in', self.ids)]) diff --git a/addons/survey/static/src/question_page/question_page_list_renderer.js b/addons/survey/static/src/question_page/question_page_list_renderer.js index d460946cf5f..72932d54d85 100644 --- a/addons/survey/static/src/question_page/question_page_list_renderer.js +++ b/addons/survey/static/src/question_page/question_page_list_renderer.js @@ -50,6 +50,14 @@ export class QuestionPageListRenderer extends ListRenderer { return classNames.join(" "); } + getCellClass(column, record) { + const classNames = super.getCellClass(column, record); + if (column.type === "button_group") { + return `${classNames} text-end`; + } + return classNames; + } + getSectionColumns(columns) { const sectionColumns = []; diff --git a/addons/survey/static/src/views/widgets/survey_question_trigger/survey_question_trigger.js b/addons/survey/static/src/views/widgets/survey_question_trigger/survey_question_trigger.js index 7a2202a3bdd..1ff39fa569a 100644 --- a/addons/survey/static/src/views/widgets/survey_question_trigger/survey_question_trigger.js +++ b/addons/survey/static/src/views/widgets/survey_question_trigger/survey_question_trigger.js @@ -73,12 +73,7 @@ export class SurveyQuestionTriggerWidget extends Component { return ""; } const triggerId = record.data.triggering_question_id[0]; - let triggerRecord; - if (this.props.isSurveyForm) { // embedded list - triggerRecord = record.model.root.data.question_and_page_ids.records.find(rec => rec.data.id === triggerId); - } else { - triggerRecord = record.model.root.records.find(rec => rec.resId === triggerId); - } + let triggerRecord = record.model.root.data.question_and_page_ids.records.find(rec => rec.data.id === triggerId); if (!triggerRecord) { return "MISSING_TRIGGER_ERROR"; @@ -97,17 +92,6 @@ export class SurveyQuestionTriggerWidget extends Component { SurveyQuestionTriggerWidget.template = "survey.surveyQuestionTrigger"; SurveyQuestionTriggerWidget.props = { ...standardWidgetProps, - isSurveyForm: { type: Boolean, optional: true }, -}; - -SurveyQuestionTriggerWidget.defaultProps = { - isSurveyForm: false -}; - -SurveyQuestionTriggerWidget.extractProps = ({ attrs }) => { - return { - isSurveyForm: attrs.options.isSurveyForm - }; }; SurveyQuestionTriggerWidget.displayName = 'Trigger'; diff --git a/addons/survey/static/tests/components/survey_question_trigger_widget_tests.js b/addons/survey/static/tests/components/survey_question_trigger_widget_tests.js index 0aab60ea4eb..8ef2f584378 100644 --- a/addons/survey/static/tests/components/survey_question_trigger_widget_tests.js +++ b/addons/survey/static/tests/components/survey_question_trigger_widget_tests.js @@ -77,7 +77,6 @@ QUnit.module("SurveyQuestionTriggerWidget", (hooks) => { - `, @@ -101,7 +100,7 @@ QUnit.module("SurveyQuestionTriggerWidget", (hooks) => { - + diff --git a/addons/survey/views/survey_question_views.xml b/addons/survey/views/survey_question_views.xml index 51be3b49b6b..82df7bf7e4a 100644 --- a/addons/survey/views/survey_question_views.xml +++ b/addons/survey/views/survey_question_views.xml @@ -267,13 +267,10 @@ survey.question - - - - + diff --git a/addons/survey/views/survey_survey_views.xml b/addons/survey/views/survey_survey_views.xml index 8e4aa4dce44..08c233d6710 100644 --- a/addons/survey/views/survey_survey_views.xml +++ b/addons/survey/views/survey_survey_views.xml @@ -71,6 +71,7 @@ + @@ -83,7 +84,8 @@ - + +