[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
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
@@ -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)
|
||||
|
||||
@@ -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
|
||||
# --------------------------------------------------
|
||||
|
||||
@@ -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'})
|
||||
|
||||
@@ -148,9 +148,9 @@
|
||||
|
||||
<!-- USER INPUT LINES
|
||||
.. note:: these views are useful mainly for technical users/administrators -->
|
||||
<record model="ir.ui.view" id="survey_user_input_line_form">
|
||||
<field name="name">survey_user_input_line_form</field>
|
||||
<field name="model">survey.user_input_line</field>
|
||||
<record id="survey_user_input_line_view_form" model="ir.ui.view">
|
||||
<field name="name">survey.user_input.line.view.form</field>
|
||||
<field name="model">survey.user_input.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="User input line details" create="false">
|
||||
<sheet>
|
||||
@@ -174,9 +174,9 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="survey_response_line_tree">
|
||||
<field name="name">survey_response_line_tree</field>
|
||||
<field name="model">survey.user_input_line</field>
|
||||
<record id="survey_response_line_view_tree" model="ir.ui.view">
|
||||
<field name="name">survey.user_input.line.view.tree</field>
|
||||
<field name="model">survey.user_input.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Survey Answer Line" create="false">
|
||||
<field name="survey_id"/>
|
||||
@@ -189,9 +189,9 @@
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="survey_response_line_search" model="ir.ui.view">
|
||||
<field name="name">survey_response_line_search</field>
|
||||
<field name="model">survey.user_input_line</field>
|
||||
<record id="survey_user_input_line_view_search" model="ir.ui.view">
|
||||
<field name="name">survey.user_input.line.view.search</field>
|
||||
<field name="model">survey.user_input.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search User input lines">
|
||||
<field name="user_input_id"/>
|
||||
@@ -204,11 +204,11 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_survey_user_input_line">
|
||||
<record id="survey_user_input_line_action" model="ir.actions.act_window">
|
||||
<field name="name">Detailed Answers</field>
|
||||
<field name="res_model">survey.user_input_line</field>
|
||||
<field name="res_model">survey.user_input.line</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="survey_response_line_search"/>
|
||||
<field name="search_view_id" ref="survey_user_input_line_view_search"/>
|
||||
<field name="context">{'search_default_group_by_survey': True, 'search_default_group_by_user_input': True}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_empty_folder">
|
||||
@@ -224,7 +224,7 @@
|
||||
sequence="1"/>
|
||||
<menuitem name="Detailed Answers"
|
||||
id="menu_survey_response_line_form"
|
||||
action="action_survey_user_input_line"
|
||||
action="survey_user_input_line_action"
|
||||
parent="survey_menu_user_inputs"
|
||||
sequence="4"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
@@ -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',
|
||||
],
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user