From 7edeb24de91ade5e21ba7542d32e97f023ec0c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 25 Nov 2019 15:01:51 +0000 Subject: [PATCH] [REF] survey: globally rename survey.user_input_line model to survey.user_input.line 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 --- addons/survey/__manifest__.py | 2 +- addons/survey/controllers/main.py | 2 +- ...ut_line.csv => survey.user_input.line.csv} | 0 addons/survey/models/survey_question.py | 2 +- addons/survey/models/survey_survey.py | 2 +- addons/survey/models/survey_user.py | 6 +-- addons/survey/security/ir.model.access.csv | 8 ++-- addons/survey/tests/common.py | 2 +- addons/survey/tests/test_survey_flow.py | 4 +- addons/survey/tests/test_survey_security.py | 38 +++++++++---------- addons/survey/views/survey_user_views.xml | 26 ++++++------- addons/website_slides_survey/__manifest__.py | 2 +- ...ut_line.csv => survey.user_input.line.csv} | 0 13 files changed, 47 insertions(+), 47 deletions(-) rename addons/survey/data/{survey.user_input_line.csv => survey.user_input.line.csv} (100%) rename addons/website_slides_survey/data/{survey.user_input_line.csv => survey.user_input.line.csv} (100%) diff --git a/addons/survey/__manifest__.py b/addons/survey/__manifest__.py index 99b1d6717fb..e178bf40252 100644 --- a/addons/survey/__manifest__.py +++ b/addons/survey/__manifest__.py @@ -45,7 +45,7 @@ sent mails with personal token for the invitation of the survey. 'data/survey_demo_user.xml', 'data/survey_demo_feedback.xml', 'data/survey_demo_certification.xml', - 'data/survey.user_input_line.csv' + 'data/survey.user_input.line.csv' ], 'installable': True, 'auto_install': False, diff --git a/addons/survey/controllers/main.py b/addons/survey/controllers/main.py index 93c4523f5b6..aa402560714 100644 --- a/addons/survey/controllers/main.py +++ b/addons/survey/controllers/main.py @@ -328,7 +328,7 @@ class Survey(http.Controller): for question in questions: answer = prepared_questions[question.id]['answer'] comment = prepared_questions[question.id]['comment'] - request.env['survey.user_input_line'].sudo().save_lines(answer_sudo.id, question, answer, comment) + request.env['survey.user_input.line'].sudo().save_lines(answer_sudo.id, question, answer, comment) if answer_sudo.is_time_limit_reached or survey_sudo.questions_layout == 'one_page': answer_sudo._mark_done() diff --git a/addons/survey/data/survey.user_input_line.csv b/addons/survey/data/survey.user_input.line.csv similarity index 100% rename from addons/survey/data/survey.user_input_line.csv rename to addons/survey/data/survey.user_input.line.csv diff --git a/addons/survey/models/survey_question.py b/addons/survey/models/survey_question.py index f58f8347282..90bb3ecb834 100644 --- a/addons/survey/models/survey_question.py +++ b/addons/survey/models/survey_question.py @@ -112,7 +112,7 @@ class SurveyQuestion(models.Model): constr_error_msg = fields.Char('Error message', translate=True, default=lambda self: _("This question requires an answer.")) # answers user_input_line_ids = fields.One2many( - 'survey.user_input_line', 'question_id', string='Answers', + 'survey.user_input.line', 'question_id', string='Answers', domain=[('skipped', '=', False)], groups='survey.group_survey_user') _sql_constraints = [ diff --git a/addons/survey/models/survey_survey.py b/addons/survey/models/survey_survey.py index 25a8b2df3e9..590bc9c6072 100644 --- a/addons/survey/models/survey_survey.py +++ b/addons/survey/models/survey_survey.py @@ -572,7 +572,7 @@ class Survey(models.Model): domain_filter.insert(0, ('value_suggested.id', 'in', choice)) else: domain_filter = domain_filter[1:] - input_lines = self.env['survey.user_input_line'].search(domain_filter) + input_lines = self.env['survey.user_input.line'].search(domain_filter) filtered_input_ids = [input_line.user_input_id.id for input_line in input_lines] else: filtered_input_ids = [] diff --git a/addons/survey/models/survey_user.py b/addons/survey/models/survey_user.py index eb0a0127c12..c9dddf62ec0 100644 --- a/addons/survey/models/survey_user.py +++ b/addons/survey/models/survey_user.py @@ -40,7 +40,7 @@ class SurveyUserInput(models.Model): partner_id = fields.Many2one('res.partner', string='Partner', readonly=True) email = fields.Char('E-mail', readonly=True) # questions / answers - user_input_line_ids = fields.One2many('survey.user_input_line', 'user_input_id', string='Answers', copy=True) + user_input_line_ids = fields.One2many('survey.user_input.line', 'user_input_id', string='Answers', copy=True) question_ids = fields.Many2many('survey.question', string='Predefined Questions', readonly=True) quizz_score = fields.Float("Score (%)", compute="_compute_quizz_score", store=True, compute_sudo=True) # stored for perf reasons quizz_passed = fields.Boolean('Quizz Passed', compute='_compute_quizz_passed', store=True, compute_sudo=True) # stored for perf reasons @@ -171,10 +171,10 @@ class SurveyUserInput(models.Model): class SurveyUserInputLine(models.Model): - _name = 'survey.user_input_line' + _name = 'survey.user_input.line' _description = 'Survey User Input Line' _rec_name = 'user_input_id' - _order = 'question_sequence,id' + _order = 'question_sequence, id' # survey data user_input_id = fields.Many2one('survey.user_input', string='User Input', ondelete='cascade', required=True) diff --git a/addons/survey/security/ir.model.access.csv b/addons/survey/security/ir.model.access.csv index 12f19339230..89cce9edfc5 100644 --- a/addons/survey/security/ir.model.access.csv +++ b/addons/survey/security/ir.model.access.csv @@ -15,8 +15,8 @@ access_survey_user_input_all,survey.user_input.all,model_survey_user_input,,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 access_survey_user_input_survey_manager,survey.user_input.survey.manager,model_survey_user_input,group_survey_manager,1,1,1,1 -access_survey_user_input_line_all,survey.user_input_line.all,model_survey_user_input_line,,0,0,0,0 -access_survey_user_input_line_user,survey.user_input_line.user,model_survey_user_input_line,base.group_user,0,0,0,0 -access_survey_user_input_line_survey_user,survey.user_input_line.survey.user,model_survey_user_input_line,group_survey_user,1,1,1,1 -access_survey_user_input_line_survey_manager,survey.user_input_line.survey.manager,model_survey_user_input_line,group_survey_manager,1,1,1,1 +access_survey_user_input_line_all,survey.user_input.line.all,model_survey_user_input_line,,0,0,0,0 +access_survey_user_input_line_user,survey.user_input.line.user,model_survey_user_input_line,base.group_user,0,0,0,0 +access_survey_user_input_line_survey_user,survey.user_input.line.survey.user,model_survey_user_input_line,group_survey_user,1,1,1,1 +access_survey_user_input_line_survey_manager,survey.user_input.line.survey.manager,model_survey_user_input_line,group_survey_manager,1,1,1,1 access_gamification_badge_survey_user,gamification.badge.survey.user,model_gamification_badge,group_survey_user,1,1,1,1 diff --git a/addons/survey/tests/common.py b/addons/survey/tests/common.py index 74a74dc463c..539d57aaa59 100644 --- a/addons/survey/tests/common.py +++ b/addons/survey/tests/common.py @@ -208,7 +208,7 @@ class TestSurveyCommon(common.SavepointCase): } base_alvals[answer_fname] = answer_value base_alvals.update(kwargs) - return self.env['survey.user_input_line'].create(base_alvals) + return self.env['survey.user_input.line'].create(base_alvals) def _access_start(self, survey): return self.url_open('/survey/start/%s' % survey.access_token) diff --git a/addons/survey/tests/test_survey_flow.py b/addons/survey/tests/test_survey_flow.py index 5f45d2856fd..a8b3023264e 100644 --- a/addons/survey/tests/test_survey_flow.py +++ b/addons/survey/tests/test_survey_flow.py @@ -61,9 +61,9 @@ class TestSurveyFlow(common.TestSurveyCommon, HttpCase): # fetch starting data to check only newly created data during this flow answers = self.env['survey.user_input'].search([('survey_id', '=', survey.id)]) - answer_lines = self.env['survey.user_input_line'].search([('survey_id', '=', survey.id)]) + answer_lines = self.env['survey.user_input.line'].search([('survey_id', '=', survey.id)]) self.assertEqual(answers, self.env['survey.user_input']) - self.assertEqual(answer_lines, self.env['survey.user_input_line']) + self.assertEqual(answer_lines, self.env['survey.user_input.line']) # Step: customer takes the survey # -------------------------------------------------- diff --git a/addons/survey/tests/test_survey_security.py b/addons/survey/tests/test_survey_security.py index d163adb4dc2..5c7ec4e89eb 100644 --- a/addons/survey/tests/test_survey_security.py +++ b/addons/survey/tests/test_survey_security.py @@ -165,17 +165,17 @@ class TestAccess(common.TestSurveyCommon): with self.assertRaises(AccessError): self.env['survey.user_input'].create({'survey_id': self.survey.id}) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': self.answer_0.id}) + self.env['survey.user_input.line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': self.answer_0.id}) # Read: nope with self.assertRaises(AccessError): self.env['survey.user_input'].search([('survey_id', 'in', [self.survey.id])]) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].search([('survey_id', 'in', [self.survey.id])]) + self.env['survey.user_input.line'].search([('survey_id', 'in', [self.survey.id])]) with self.assertRaises(AccessError): self.env['survey.user_input'].browse(self.answer_0.ids).read(['state']) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].browse(self.answer_0_0.ids).read(['value_number']) + self.env['survey.user_input.line'].browse(self.answer_0_0.ids).read(['value_number']) # Write: nope with self.assertRaises(AccessError): @@ -194,17 +194,17 @@ class TestAccess(common.TestSurveyCommon): with self.assertRaises(AccessError): self.env['survey.user_input'].create({'survey_id': self.survey.id}) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': self.answer_0.id}) + self.env['survey.user_input.line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': self.answer_0.id}) # Read: nope with self.assertRaises(AccessError): self.env['survey.user_input'].search([('survey_id', 'in', [self.survey.id])]) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].search([('survey_id', 'in', [self.survey.id])]) + self.env['survey.user_input.line'].search([('survey_id', 'in', [self.survey.id])]) with self.assertRaises(AccessError): self.env['survey.user_input'].browse(self.answer_0.ids).read(['state']) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].browse(self.answer_0_0.ids).read(['value_number']) + self.env['survey.user_input.line'].browse(self.answer_0_0.ids).read(['value_number']) # Write: nope with self.assertRaises(AccessError): @@ -223,17 +223,17 @@ class TestAccess(common.TestSurveyCommon): with self.assertRaises(AccessError): self.env['survey.user_input'].create({'survey_id': self.survey.id}) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': self.answer_0.id}) + self.env['survey.user_input.line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': self.answer_0.id}) # Read: nope with self.assertRaises(AccessError): self.env['survey.user_input'].search([('survey_id', 'in', [self.survey.id])]) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].search([('survey_id', 'in', [self.survey.id])]) + self.env['survey.user_input.line'].search([('survey_id', 'in', [self.survey.id])]) with self.assertRaises(AccessError): self.env['survey.user_input'].browse(self.answer_0.ids).read(['state']) with self.assertRaises(AccessError): - self.env['survey.user_input_line'].browse(self.answer_0_0.ids).read(['value_number']) + self.env['survey.user_input.line'].browse(self.answer_0_0.ids).read(['value_number']) # Write: nope with self.assertRaises(AccessError): @@ -254,26 +254,26 @@ class TestAccess(common.TestSurveyCommon): # Create: own survey only answer_own = self.env['survey.user_input'].create({'survey_id': survey_own.id}) - answer_line_own = self.env['survey.user_input_line'].create({'question_id': question_own.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': answer_own.id}) + answer_line_own = self.env['survey.user_input.line'].create({'question_id': question_own.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': answer_own.id}) # Read: always answers = self.env['survey.user_input'].search([('survey_id', 'in', [survey_own.id, self.survey.id])]) self.assertEqual(answers, answer_own | self.answer_0) - answer_lines = self.env['survey.user_input_line'].search([('survey_id', 'in', [survey_own.id, self.survey.id])]) + answer_lines = self.env['survey.user_input.line'].search([('survey_id', 'in', [survey_own.id, self.survey.id])]) self.assertEqual(answer_lines, answer_line_own | self.answer_0_0 | self.answer_0_1) self.env['survey.user_input'].browse(answer_own.ids).read(['state']) self.env['survey.user_input'].browse(self.answer_0.ids).read(['state']) - self.env['survey.user_input_line'].browse(answer_line_own.ids).read(['value_number']) - self.env['survey.user_input_line'].browse(self.answer_0_0.ids).read(['value_number']) + self.env['survey.user_input.line'].browse(answer_line_own.ids).read(['value_number']) + self.env['survey.user_input.line'].browse(self.answer_0_0.ids).read(['value_number']) # Create: own survey only (moved after read because DB not correctly rollbacked with assertRaises) with self.assertRaises(AccessError): answer_other = self.env['survey.user_input'].create({'survey_id': self.survey.id}) with self.assertRaises(AccessError): - answer_line_other = self.env['survey.user_input_line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': self.answer_0.id}) + answer_line_other = self.env['survey.user_input.line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': self.answer_0.id}) # Write: own survey only answer_own.write({'state': 'done'}) @@ -300,21 +300,21 @@ class TestAccess(common.TestSurveyCommon): # Create: always answer_own = self.env['survey.user_input'].create({'survey_id': self.survey.id}) answer_other = self.env['survey.user_input'].create({'survey_id': survey_other.id}) - answer_line_own = self.env['survey.user_input_line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': answer_own.id}) - answer_line_other = self.env['survey.user_input_line'].create({'question_id': question_other.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': answer_other.id}) + answer_line_own = self.env['survey.user_input.line'].create({'question_id': self.question_num.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': answer_own.id}) + answer_line_other = self.env['survey.user_input.line'].create({'question_id': question_other.id, 'answer_type': 'number', 'value_number': 3, 'user_input_id': answer_other.id}) # Read: always answers = self.env['survey.user_input'].search([('survey_id', 'in', [survey_other.id, self.survey.id])]) self.assertEqual(answers, answer_own | answer_other | self.answer_0) - answer_lines = self.env['survey.user_input_line'].search([('survey_id', 'in', [survey_other.id, self.survey.id])]) + answer_lines = self.env['survey.user_input.line'].search([('survey_id', 'in', [survey_other.id, self.survey.id])]) self.assertEqual(answer_lines, answer_line_own | answer_line_other | self.answer_0_0 | self.answer_0_1) self.env['survey.user_input'].browse(answer_own.ids).read(['state']) self.env['survey.user_input'].browse(self.answer_0.ids).read(['state']) - self.env['survey.user_input_line'].browse(answer_line_own.ids).read(['value_number']) - self.env['survey.user_input_line'].browse(self.answer_0_0.ids).read(['value_number']) + self.env['survey.user_input.line'].browse(answer_line_own.ids).read(['value_number']) + self.env['survey.user_input.line'].browse(self.answer_0_0.ids).read(['value_number']) # Write: always answer_own.write({'state': 'done'}) diff --git a/addons/survey/views/survey_user_views.xml b/addons/survey/views/survey_user_views.xml index 9012ffc18c5..4eb9f8d5b83 100644 --- a/addons/survey/views/survey_user_views.xml +++ b/addons/survey/views/survey_user_views.xml @@ -148,9 +148,9 @@ - - survey_user_input_line_form - survey.user_input_line + + survey.user_input.line.view.form + survey.user_input.line
@@ -174,9 +174,9 @@
- - survey_response_line_tree - survey.user_input_line + + survey.user_input.line.view.tree + survey.user_input.line @@ -189,9 +189,9 @@ - - survey_response_line_search - survey.user_input_line + + survey.user_input.line.view.search + survey.user_input.line @@ -204,11 +204,11 @@ - + Detailed Answers - survey.user_input_line + survey.user_input.line tree,form - + {'search_default_group_by_survey': True, 'search_default_group_by_user_input': True}

@@ -224,7 +224,7 @@ sequence="1"/> diff --git a/addons/website_slides_survey/__manifest__.py b/addons/website_slides_survey/__manifest__.py index 933a87526c1..10114ec6f6a 100644 --- a/addons/website_slides_survey/__manifest__.py +++ b/addons/website_slides_survey/__manifest__.py @@ -27,6 +27,6 @@ 'demo': [ 'data/survey_demo.xml', 'data/slide_slide_demo.xml', - 'data/survey.user_input_line.csv', + 'data/survey.user_input.line.csv', ], } diff --git a/addons/website_slides_survey/data/survey.user_input_line.csv b/addons/website_slides_survey/data/survey.user_input.line.csv similarity index 100% rename from addons/website_slides_survey/data/survey.user_input_line.csv rename to addons/website_slides_survey/data/survey.user_input.line.csv