summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
Diffstat (limited to 'addons')
-rw-r--r--addons/hr_recruitment_survey/__manifest__.py1
-rw-r--r--addons/hr_recruitment_survey/data/survey_demo.xml1
-rw-r--r--addons/hr_recruitment_survey/models/__init__.py1
-rw-r--r--addons/hr_recruitment_survey/models/hr_applicant.py8
-rw-r--r--addons/hr_recruitment_survey/models/hr_job.py3
-rw-r--r--addons/hr_recruitment_survey/models/survey_survey.py9
-rw-r--r--addons/hr_recruitment_survey/views/hr_job_views.xml2
-rw-r--r--addons/hr_recruitment_survey/views/survey_survey_views.xml13
-rw-r--r--addons/survey/controllers/main.py3
-rw-r--r--addons/survey/data/mail_template_data.xml2
-rw-r--r--addons/survey/data/survey_demo_certification.xml4
-rw-r--r--addons/survey/data/survey_demo_feedback.xml4
-rw-r--r--addons/survey/models/__init__.py1
-rw-r--r--addons/survey/models/ir_autovacuum.py13
-rw-r--r--addons/survey/models/survey_question.py3
-rw-r--r--addons/survey/models/survey_survey.py51
-rw-r--r--addons/survey/models/survey_user.py22
-rw-r--r--addons/survey/tests/common.py1
-rw-r--r--addons/survey/views/survey_question_views.xml12
-rw-r--r--addons/survey/views/survey_survey_views.xml2
-rw-r--r--addons/survey/views/survey_templates.xml4
-rw-r--r--addons/survey/views/survey_templates_statistics.xml2
-rw-r--r--addons/survey/views/survey_user_views.xml6
-rw-r--r--addons/survey/wizard/survey_invite.py10
-rw-r--r--addons/survey/wizard/survey_invite_views.xml2
-rw-r--r--addons/website_slides_survey/data/survey_demo.xml2
-rw-r--r--addons/website_slides_survey/models/slide_slide.py6
27 files changed, 57 insertions, 131 deletions
diff --git a/addons/hr_recruitment_survey/__manifest__.py b/addons/hr_recruitment_survey/__manifest__.py
index 38a986dde72..32b1f5f4f4c 100644
--- a/addons/hr_recruitment_survey/__manifest__.py
+++ b/addons/hr_recruitment_survey/__manifest__.py
@@ -14,7 +14,6 @@
'security/hr_recruitment_survey_security.xml',
'views/hr_job_views.xml',
'views/hr_applicant_views.xml',
- 'views/survey_survey_views.xml',
'views/res_config_setting_views.xml',
],
'demo': [
diff --git a/addons/hr_recruitment_survey/data/survey_demo.xml b/addons/hr_recruitment_survey/data/survey_demo.xml
index 0b875b7738d..86b25eec9d2 100644
--- a/addons/hr_recruitment_survey/data/survey_demo.xml
+++ b/addons/hr_recruitment_survey/data/survey_demo.xml
@@ -4,7 +4,6 @@
<field name="title">Recruitment Form</field>
<field name="state">open</field>
<field name="access_mode">token</field>
- <field name="category">hr_recruitment</field>
<field name="users_can_go_back" eval="True"/>
<field name="description" type="html">
<p>
diff --git a/addons/hr_recruitment_survey/models/__init__.py b/addons/hr_recruitment_survey/models/__init__.py
index dc295255d0c..b7409ff12e6 100644
--- a/addons/hr_recruitment_survey/models/__init__.py
+++ b/addons/hr_recruitment_survey/models/__init__.py
@@ -3,4 +3,3 @@
from . import hr_job
from . import hr_applicant
-from . import survey_survey
diff --git a/addons/hr_recruitment_survey/models/hr_applicant.py b/addons/hr_recruitment_survey/models/hr_applicant.py
index c778efa0121..969253c7740 100644
--- a/addons/hr_recruitment_survey/models/hr_applicant.py
+++ b/addons/hr_recruitment_survey/models/hr_applicant.py
@@ -18,13 +18,9 @@ class Applicant(models.Model):
else:
response = self.response_id
# grab the token of the response and start surveying
- return self.survey_id.with_context(survey_token=response.token).action_start_survey()
+ return self.survey_id.action_start_survey(answer=response)
def action_print_survey(self):
""" If response is available then print this response otherwise print survey form (print template of the survey) """
self.ensure_one()
- if not self.response_id:
- return self.survey_id.action_print_survey()
- else:
- response = self.response_id
- return self.survey_id.with_context(survey_token=response.token).action_print_survey()
+ return self.survey_id.action_print_survey(answer=self.response_id)
diff --git a/addons/hr_recruitment_survey/models/hr_job.py b/addons/hr_recruitment_survey/models/hr_job.py
index 72550f53e19..32377181af8 100644
--- a/addons/hr_recruitment_survey/models/hr_job.py
+++ b/addons/hr_recruitment_survey/models/hr_job.py
@@ -1,6 +1,6 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from odoo import api, fields, models
+from odoo import fields, models
class Job(models.Model):
@@ -8,7 +8,6 @@ class Job(models.Model):
survey_id = fields.Many2one(
'survey.survey', "Interview Form",
- domain=[('category', '=', 'hr_recruitment')],
help="Choose an interview form for this job position and you will be able to print/answer this interview from all applicants who apply for this job")
def action_print_survey(self):
diff --git a/addons/hr_recruitment_survey/models/survey_survey.py b/addons/hr_recruitment_survey/models/survey_survey.py
deleted file mode 100644
index 21674e84ee6..00000000000
--- a/addons/hr_recruitment_survey/models/survey_survey.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from odoo import fields, models
-
-
-class Survey(models.Model):
- _inherit = 'survey.survey'
-
- category = fields.Selection(selection_add=[('hr_recruitment', 'Recruitment')])
diff --git a/addons/hr_recruitment_survey/views/hr_job_views.xml b/addons/hr_recruitment_survey/views/hr_job_views.xml
index 746b6c645a1..0b147acc90a 100644
--- a/addons/hr_recruitment_survey/views/hr_job_views.xml
+++ b/addons/hr_recruitment_survey/views/hr_job_views.xml
@@ -9,7 +9,7 @@
<label for="survey_id" groups="survey.group_survey_user"/>
<div groups="survey.group_survey_user" class="o_row">
<field name="survey_id"
- context="{'default_category': 'hr_recruitment', 'default_access_mode': 'token'}"/>
+ context="{'default_access_mode': 'token'}"/>
<button string="Display Interview Form" name="action_print_survey" type="object" attrs="{'invisible':[('survey_id','=',False)]}" class="oe_link"/>
</div>
</xpath>
diff --git a/addons/hr_recruitment_survey/views/survey_survey_views.xml b/addons/hr_recruitment_survey/views/survey_survey_views.xml
deleted file mode 100644
index a6f51da722e..00000000000
--- a/addons/hr_recruitment_survey/views/survey_survey_views.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<odoo><data>
- <record id="survey_survey_view_form" model="ir.ui.view">
- <field name="name">survey.survey.view.form.inherit.hr_recruitment</field>
- <field name="model">survey.survey</field>
- <field name="inherit_id" ref="survey.survey_form"/>
- <field name="arch" type="xml">
- <xpath expr="//field[@name='category']" position="attributes">
- <attribute name="invisible">0</attribute>
- </xpath>
- </field>
- </record>
-</data></odoo>
diff --git a/addons/survey/controllers/main.py b/addons/survey/controllers/main.py
index a7f7325a86f..93c4523f5b6 100644
--- a/addons/survey/controllers/main.py
+++ b/addons/survey/controllers/main.py
@@ -182,7 +182,6 @@ class Survey(http.Controller):
def _prepare_retry_additional_values(self, answer):
return {
- 'input_type': answer.input_type,
'deadline': answer.deadline,
}
@@ -524,7 +523,7 @@ class Survey(http.Controller):
Survey = request.env['survey.survey']
result = []
if question.question_type == 'multiple_choice':
- result.append({'key': ustr(question.question),
+ result.append({'key': ustr(question.title),
'values': Survey.prepare_result(question, current_filters)['answers']
})
if question.question_type == 'simple_choice':
diff --git a/addons/survey/data/mail_template_data.xml b/addons/survey/data/mail_template_data.xml
index 5c5d8fecc33..13f09ecd752 100644
--- a/addons/survey/data/mail_template_data.xml
+++ b/addons/survey/data/mail_template_data.xml
@@ -16,7 +16,7 @@
We are conducting a survey and your response would be appreciated.
% endif
<div style="margin: 16px 0px 16px 0px;">
- <a href="${('%s?answer_token=%s' % (object.survey_id.public_url, object.token)) | safe}"
+ <a href="${(object.get_start_url()) | safe}"
style="background-color: #875A7B; padding: 8px 16px 8px 16px; text-decoration: none; color: #fff; border-radius: 5px; font-size:13px;">
% if object.survey_id.certificate:
Start Certification
diff --git a/addons/survey/data/survey_demo_certification.xml b/addons/survey/data/survey_demo_certification.xml
index f531ea7d89d..e0e3f83e7fd 100644
--- a/addons/survey/data/survey_demo_certification.xml
+++ b/addons/survey/data/survey_demo_certification.xml
@@ -312,7 +312,6 @@
<record model="survey.user_input" id="survey_vendor_certification_answer_1">
<field name="survey_id" ref="survey.vendor_certification" />
- <field name="input_type">manually</field>
<field name="partner_id" ref="base.res_partner_address_3"/>
<field name="email">douglas.fletcher51@example.com</field>
<field name="state">done</field>
@@ -329,7 +328,6 @@
</record>
<record model="survey.user_input" id="survey_vendor_certification_answer_2">
<field name="survey_id" ref="survey.vendor_certification" />
- <field name="input_type">manually</field>
<field name="partner_id" ref="base.res_partner_address_7"/>
<field name="email">billy.fox45@example.com</field>
<field name="state">done</field>
@@ -346,7 +344,6 @@
</record>
<record model="survey.user_input" id="survey_vendor_certification_answer_3">
<field name="survey_id" ref="survey.vendor_certification" />
- <field name="input_type">manually</field>
<field name="partner_id" ref="base.res_partner_address_15"/>
<field name="email">brandon.freeman55@example.com</field>
<field name="state">done</field>
@@ -363,7 +360,6 @@
</record>
<record model="survey.user_input" id="survey_vendor_certification_answer_4">
<field name="survey_id" ref="survey.vendor_certification" />
- <field name="input_type">manually</field>
<field name="partner_id" ref="base.res_partner_address_25"/>
<field name="email">oscar.morgan11@example.com</field>
<field name="state">done</field>
diff --git a/addons/survey/data/survey_demo_feedback.xml b/addons/survey/data/survey_demo_feedback.xml
index 538231a4e61..293b38684df 100644
--- a/addons/survey/data/survey_demo_feedback.xml
+++ b/addons/survey/data/survey_demo_feedback.xml
@@ -198,28 +198,24 @@
<record model="survey.user_input" id="survey_answer_1">
<field name="survey_id" ref="survey.survey_feedback" />
- <field name="input_type">manually</field>
<field name="partner_id" ref="base.partner_demo"/>
<field name="email">mark.brown23@example.com</field>
<field name="state">done</field>
</record>
<record model="survey.user_input" id="survey_answer_2">
<field name="survey_id" ref="survey.survey_feedback" />
- <field name="input_type">manually</field>
<field name="partner_id" ref="base.res_partner_address_7"/>
<field name="email">billy.fox45@example.com</field>
<field name="state">done</field>
</record>
<record model="survey.user_input" id="survey_answer_3">
<field name="survey_id" ref="survey.survey_feedback" />
- <field name="input_type">manually</field>
<field name="partner_id" eval="False"/>
<field name="email">Evelyne Gargouillis &lt;evelyne@example.com&gt;</field>
<field name="state">done</field>
</record>
<record model="survey.user_input" id="survey_answer_4">
<field name="survey_id" ref="survey.survey_feedback" />
- <field name="input_type">manually</field>
<field name="partner_id" eval="False"/>
<field name="email">Martin Tamarre &lt;martin@example.com&gt;</field>
<field name="state">skip</field>
diff --git a/addons/survey/models/__init__.py b/addons/survey/models/__init__.py
index b539d063303..82414c70e61 100644
--- a/addons/survey/models/__init__.py
+++ b/addons/survey/models/__init__.py
@@ -1,7 +1,6 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from . import ir_autovacuum
from . import survey_survey
from . import survey_question
from . import survey_user
diff --git a/addons/survey/models/ir_autovacuum.py b/addons/survey/models/ir_autovacuum.py
deleted file mode 100644
index 466cfda6f0d..00000000000
--- a/addons/survey/models/ir_autovacuum.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from odoo import api, models
-
-
-class AutoVacuum(models.AbstractModel):
- _inherit = 'ir.autovacuum'
-
- @api.model
- def power_on(self, *args, **kwargs):
- self.env['survey.user_input'].do_clean_emptys()
- return super(AutoVacuum, self).power_on(*args, **kwargs)
diff --git a/addons/survey/models/survey_question.py b/addons/survey/models/survey_question.py
index db6f8f43e6f..dcfb8ef0126 100644
--- a/addons/survey/models/survey_question.py
+++ b/addons/survey/models/survey_question.py
@@ -37,7 +37,7 @@ class SurveyQuestion(models.Model):
"""
_name = 'survey.question'
_description = 'Survey Question'
- _rec_name = 'question'
+ _rec_name = 'title'
_order = 'sequence,id'
@api.model
@@ -49,7 +49,6 @@ class SurveyQuestion(models.Model):
# question generic data
title = fields.Char('Title', required=True, translate=True)
- question = fields.Char('Question', related="title")
description = fields.Html('Description', help="Use this field to add additional explanations about your question", translate=True)
survey_id = fields.Many2one('survey.survey', string='Survey', ondelete='cascade')
scoring_type = fields.Selection(related='survey_id.scoring_type', string='Scoring Type', readonly=True)
diff --git a/addons/survey/models/survey_survey.py b/addons/survey/models/survey_survey.py
index 135aa653acf..fbd8be671cb 100644
--- a/addons/survey/models/survey_survey.py
+++ b/addons/survey/models/survey_survey.py
@@ -3,10 +3,10 @@
import random
import uuid
+import werkzeug
from collections import Counter, OrderedDict
from itertools import product
-from werkzeug import urls
from odoo import api, fields, models, _
from odoo.exceptions import UserError
@@ -36,10 +36,6 @@ class Survey(models.Model):
('draft', 'Draft'), ('open', 'In Progress'), ('closed', 'Closed')
], string="Survey Stage", default='draft', required=True,
group_expand='_read_group_states')
- category = fields.Selection([
- ('default', 'Generic Survey')], string='Category',
- default='default', required=True,
- help='Category is used to know in which context the survey is used. Various apps may define their own categories when they use survey like jobs recruitment or employee appraisal surveys.')
# questions
question_and_page_ids = fields.One2many('survey.question', 'survey_id', string='Sections and Questions', copy=True)
page_ids = fields.One2many('survey.question', string='Pages', compute="_compute_page_and_question_ids")
@@ -65,7 +61,6 @@ class Survey(models.Model):
users_login_required = fields.Boolean('Login Required', help="If checked, users have to login before answering even with a valid token.")
users_can_go_back = fields.Boolean('Users can go back', help="If checked, users can go back to previous pages.")
users_can_signup = fields.Boolean('Users can signup', compute='_compute_users_can_signup')
- public_url = fields.Char("Public link", compute="_compute_survey_url")
# statistics
answer_count = fields.Integer("Registered", compute="_compute_survey_statistic")
answer_done_count = fields.Integer("Attempts", compute="_compute_survey_statistic")
@@ -150,12 +145,6 @@ class Survey(models.Model):
for survey in self:
survey.update(stat.get(survey._origin.id, default_vals))
- def _compute_survey_url(self):
- """ Computes a public URL for the survey """
- base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
- for survey in self:
- survey.public_url = urls.url_join(base_url, "survey/start/%s" % (survey.access_token))
-
@api.depends('question_and_page_ids')
def _compute_page_and_question_ids(self):
for survey in self:
@@ -448,18 +437,6 @@ class Survey(models.Model):
def action_close(self):
self.write({'state': 'closed'})
- def action_start_survey(self):
- """ Open the website page with the survey form """
- self.ensure_one()
- token = self.env.context.get('survey_token')
- trail = "?answer_token=%s" % token if token else ""
- return {
- 'type': 'ir.actions.act_url',
- 'name': "Start Survey",
- 'target': 'self',
- 'url': self.public_url + trail
- }
-
def action_send_survey(self):
""" Open a window to compose an email, pre-filled with the survey message """
# Ensure that this survey has at least one page with at least one question.
@@ -486,16 +463,26 @@ class Survey(models.Model):
'context': local_context,
}
- def action_print_survey(self):
+ def action_start_survey(self, answer=None):
+ """ Open the website page with the survey form """
+ self.ensure_one()
+ url = '%s?%s' % (self.get_start_url(), werkzeug.urls.url_encode({'answer_token': answer.token or None}))
+ return {
+ 'type': 'ir.actions.act_url',
+ 'name': "Start Survey",
+ 'target': 'self',
+ 'url': url,
+ }
+
+ def action_print_survey(self, answer=None):
""" Open the website page with the survey printable view """
self.ensure_one()
- token = self.env.context.get('survey_token')
- trail = "?answer_token=%s" % token if token else ""
+ url = '%s?%s' % (self.get_print_url(), werkzeug.urls.url_encode({'answer_token': answer.token or None}))
return {
'type': 'ir.actions.act_url',
'name': "Print Survey",
'target': 'self',
- 'url': '/survey/print/%s%s' % (self.access_token, trail)
+ 'url': url
}
def action_result_survey(self):
@@ -555,6 +542,12 @@ class Survey(models.Model):
'url': '/survey/%s/get_certification_preview' % (self.id)
}
+ def get_start_url(self):
+ return 'survey/start/%s' % self.access_token
+
+ def get_print_url(self):
+ return 'survey/print/%s' % self.access_token
+
# ------------------------------------------------------------
# GRAPH / RESULTS
# ------------------------------------------------------------
@@ -609,7 +602,7 @@ class Survey(models.Model):
labels = label
else:
labels = Label.browse([row_id, answer_id])
- filter_display_data.append({'question_text': question.question,
+ filter_display_data.append({'question_text': question.title,
'labels': labels.mapped('value')})
return filter_display_data
diff --git a/addons/survey/models/survey_user.py b/addons/survey/models/survey_user.py
index 926221ed758..e535253605f 100644
--- a/addons/survey/models/survey_user.py
+++ b/addons/survey/models/survey_user.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-import datetime
import logging
import uuid
@@ -24,9 +23,6 @@ class SurveyUserInput(models.Model):
scoring_type = fields.Selection(string="Scoring", related="survey_id.scoring_type")
start_datetime = fields.Datetime('Start date and time', readonly=True)
deadline = fields.Datetime('Deadline', help="Datetime until customer can open the survey and submit answers")
- input_type = fields.Selection([
- ('manually', 'Manual'), ('link', 'Invitation')],
- string='Answer Type', default='manually', required=True, readonly=True)
state = fields.Selection([
('new', 'Not started yet'),
('skip', 'Partially completed'),
@@ -113,16 +109,6 @@ class SurveyUserInput(models.Model):
user_input.attempt_number = attempt_number
- @api.model
- def do_clean_emptys(self):
- """ Remove empty user inputs that have been created manually
- (used as a cronjob declared in data/survey_cron.xml)
- """
- an_hour_ago = fields.Datetime.to_string(datetime.datetime.now() - datetime.timedelta(hours=1))
- self.search([('input_type', '=', 'manually'),
- ('state', '=', 'new'),
- ('create_date', '<', an_hour_ago)]).unlink()
-
def action_resend(self):
partners = self.env['res.partner']
emails = []
@@ -175,9 +161,13 @@ class SurveyUserInput(models.Model):
if challenges:
Challenge._cron_update(ids=challenges.ids, commit=False)
- def _get_survey_url(self):
+ def get_start_url(self):
+ self.ensure_one()
+ return '%s?answer_token=%s' % (self.survey_id.get_start_url(), self.token)
+
+ def get_print_url(self):
self.ensure_one()
- return '/survey/start/%s?answer_token=%s' % (self.survey_id.access_token, self.token)
+ return '%s?answer_token=%s' % (self.survey_id.get_print_url(), self.access_token)
class SurveyUserInputLine(models.Model):
diff --git a/addons/survey/tests/common.py b/addons/survey/tests/common.py
index f279ef9e445..9d000da6f13 100644
--- a/addons/survey/tests/common.py
+++ b/addons/survey/tests/common.py
@@ -191,7 +191,6 @@ class TestSurveyCommon(common.SavepointCase):
'survey_id': survey.id,
'partner_id': partner.id if partner else False,
'email': kwargs.pop('email', False),
- 'input_type': 'manually',
}
base_avals.update(kwargs)
return self.env['survey.user_input'].create(base_avals)
diff --git a/addons/survey/views/survey_question_views.xml b/addons/survey/views/survey_question_views.xml
index 6d924c0b562..887e380f3cb 100644
--- a/addons/survey/views/survey_question_views.xml
+++ b/addons/survey/views/survey_question_views.xml
@@ -167,7 +167,7 @@
<field name="arch" type="xml">
<tree string="Survey Question" create="false">
<field name="sequence" widget="handle"/>
- <field name="question"/>
+ <field name="title"/>
<field name="survey_id"/>
<field name="question_type"/>
</tree>
@@ -178,11 +178,11 @@
<field name="model">survey.question</field>
<field name="arch" type="xml">
<search string="Search Question">
- <field name="question" string="Question"/>
+ <field name="title"/>
<field name="survey_id" string="Survey"/>
<field name="question_type" string="Type"/>
<group expand="1" string="Group By">
- <filter name="group_by_type" string="Type" domain="[]" context="{'group_by':'question_type'}"/>
+ <filter name="group_by_type" string="Type" domain="[]" context="{'group_by':'question_type'}"/>
</group>
</search>
</field>
@@ -221,8 +221,10 @@
<field name="model">survey.label</field>
<field name="arch" type="xml">
<search string="Search Label">
- <field name="question_id" string="Question"/>
- <filter name="group_by_question" string="Question" domain="[]" context="{'group_by':'question_id'}"/>
+ <field name="question_id"/>
+ <group expand="1" string="Group By">
+ <filter name="group_by_question" string="Question" domain="[]" context="{'group_by':'question_id'}"/>
+ </group>
</search>
</field>
</record>
diff --git a/addons/survey/views/survey_survey_views.xml b/addons/survey/views/survey_survey_views.xml
index 56d20ca768b..d53dcfb8242 100644
--- a/addons/survey/views/survey_survey_views.xml
+++ b/addons/survey/views/survey_survey_views.xml
@@ -49,7 +49,6 @@
<group>
<group>
<field name="active" invisible="1"/>
- <field name="category" invisible="1"/>
</group>
</group>
<notebook>
@@ -244,7 +243,6 @@
<filter invisible="1" string="Upcoming Activities" name="activities_upcoming_all"
domain="[('activity_ids.date_deadline', '&gt;', context_today().strftime('%Y-%m-%d'))]"/>
<group expand="0" string="Group By">
- <filter string="Category" name="groupby_category" context="{'group_by': 'category'}"/>
<filter string="State" name="groupby_state" context="{'group_by': 'state'}"/>
</group>
</search>
diff --git a/addons/survey/views/survey_templates.xml b/addons/survey/views/survey_templates.xml
index 1a599b41477..6023023d370 100644
--- a/addons/survey/views/survey_templates.xml
+++ b/addons/survey/views/survey_templates.xml
@@ -172,7 +172,7 @@
<t t-set="answer_lines" t-value="answer.user_input_line_ids.filtered(lambda line: line.question_id == question)"/>
<div class="js_question-wrapper" t-att-id="question.id">
<h4>
- <span t-field='question.question' />
+ <span t-field='question.title' />
<span t-if="question.constr_mandatory" class="text-danger">*</span>
</h4>
<div t-field='question.description' class="text-muted oe_no_empty"/>
@@ -372,7 +372,7 @@
<t t-set="answer_lines" t-value="answer.user_input_line_ids.filtered(lambda line: line.question_id == question)"/>
<div class="js_question-wrapper" t-att-id="question.id">
<h2>
- <span t-field='question.question' />
+ <span t-field='question.title'/>
<span t-if="question.constr_mandatory" class="text-danger">*</span>
<span t-if="quizz_correction" class="badge badge-pill" t-att-data-score-question="question.id"></span>
</h2>
diff --git a/addons/survey/views/survey_templates_statistics.xml b/addons/survey/views/survey_templates_statistics.xml
index 66e5a225661..73bd99e867a 100644
--- a/addons/survey/views/survey_templates_statistics.xml
+++ b/addons/survey/views/survey_templates_statistics.xml
@@ -50,7 +50,7 @@
<t t-set="question_with_correct_answers" t-value="survey.scoring_type in ['scoring_with_answers', 'scoring_without_answers'] and question.question_type in ['simple_choice', 'multiple_choice']" />
<h4>
<b>Question </b>
- <span t-field='question.question'></span>
+ <span t-field='question.title'></span>
<t t-if="question.question_type == 'matrix'">
<small><span class="badge badge-secondary">Matrix: <span t-field='question.matrix_subtype'/></span></small>
</t>
diff --git a/addons/survey/views/survey_user_views.xml b/addons/survey/views/survey_user_views.xml
index 8b9c454c1f2..9012ffc18c5 100644
--- a/addons/survey/views/survey_user_views.xml
+++ b/addons/survey/views/survey_user_views.xml
@@ -14,8 +14,6 @@
<filter string="Partially Completed" name="partially_completed" domain="[('state', '=', 'skip')]"/>
<filter string="New" name="new" domain="[('state', '=', 'new')]"/>
<separator/>
- <filter string="Invite" name="invite" domain="[('input_type', '=', 'link')]"/>
- <separator/>
<filter string="Quizz passed" name="quizz_passed" domain="[('quizz_passed','=', True)]"/>
<separator/>
<filter string="Test Entries" name="test" domain="[('test_entry','=', True)]"/>
@@ -46,7 +44,6 @@
<group>
<field name="survey_id"/>
<field name="create_date"/>
- <field name="input_type"/>
<field name="is_attempts_limited" invisible="1"/>
<label for="attempt_number" string="Attempt n°" attrs="{'invisible': ['|', ('is_attempts_limited', '=', False), '|', ('test_entry', '=', True), ('state', '!=', 'done')]}"/>
<div attrs="{'invisible': ['|', ('is_attempts_limited', '=', False), '|', ('test_entry', '=', True), ('state', '!=', 'done')]}">
@@ -93,7 +90,6 @@
<field name="deadline"/>
<field name="partner_id"/>
<field name="email"/>
- <field name="input_type" groups="base.group_no_one"/>
<field name="attempt_number" />
<field name="state"/>
<field name="test_entry" invisible="True"/>
@@ -112,7 +108,6 @@
<field name="create_date"/>
<field name="partner_id"/>
<field name="email"/>
- <field name="input_type"/>
<field name="state"/>
<templates>
<t t-name="kanban-box">
@@ -121,7 +116,6 @@
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title"><t t-esc="record.survey_id.value"/></strong>
</div>
- <span class="badge badge-pill"><t t-esc="record.input_type.value"/></span>
</div>
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left">
diff --git a/addons/survey/wizard/survey_invite.py b/addons/survey/wizard/survey_invite.py
index 7efec41e16f..241be409333 100644
--- a/addons/survey/wizard/survey_invite.py
+++ b/addons/survey/wizard/survey_invite.py
@@ -3,6 +3,7 @@
import logging
import re
+import werkzeug
from odoo import api, fields, models, tools, _
from odoo.exceptions import UserError
@@ -65,7 +66,7 @@ class SurveyInvite(models.TransientModel):
mail_server_id = fields.Many2one('ir.mail_server', 'Outgoing mail server')
# survey
survey_id = fields.Many2one('survey.survey', string='Survey', required=True)
- survey_url = fields.Char(related="survey_id.public_url", readonly=True)
+ survey_start_url = fields.Char('Survey URL', compute='_compute_survey_start_url')
survey_access_mode = fields.Selection(related="survey_id.access_mode", readonly=True)
survey_users_login_required = fields.Boolean(related="survey_id.users_login_required", readonly=True)
survey_users_can_signup = fields.Boolean(related='survey_id.users_can_signup')
@@ -99,6 +100,12 @@ class SurveyInvite(models.TransientModel):
self.existing_text = existing_text
+ @api.depends('survey_id.access_token')
+ def _compute_survey_start_url(self):
+ base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
+ for invite in self:
+ invite.survey_start_url = werkzeug.urls.url_join(base_url, invite.survey_id.get_start_url()) if invite.survey_id else False
+
@api.onchange('emails')
def _onchange_emails(self):
if self.emails and (self.survey_users_login_required and not self.survey_id.users_can_signup):
@@ -187,7 +194,6 @@ class SurveyInvite(models.TransientModel):
def _get_answers_values(self):
return {
- 'input_type': 'link',
'deadline': self.deadline,
}
diff --git a/addons/survey/wizard/survey_invite_views.xml b/addons/survey/wizard/survey_invite_views.xml
index ec53e189524..1c2d66cc59c 100644
--- a/addons/survey/wizard/survey_invite_views.xml
+++ b/addons/survey/wizard/survey_invite_views.xml
@@ -13,7 +13,7 @@
<field name="survey_users_can_signup" invisible="1"/>
<field name="survey_id" readonly="context.get('default_survey_id')"/>
<field name="existing_mode" widget="radio" invisible="1" />
- <field name="survey_url" label="Public share URL" readonly="1" widget="CopyClipboardChar"
+ <field name="survey_start_url" label="Public share URL" readonly="1" widget="CopyClipboardChar"
attrs="{'invisible':[('survey_access_mode', '!=', 'public')]}"
class="mb16"/>
<field name="partner_ids"
diff --git a/addons/website_slides_survey/data/survey_demo.xml b/addons/website_slides_survey/data/survey_demo.xml
index 040ee42bc56..1d3b05224b4 100644
--- a/addons/website_slides_survey/data/survey_demo.xml
+++ b/addons/website_slides_survey/data/survey_demo.xml
@@ -107,7 +107,6 @@
<record model="survey.user_input" id="furniture_certification_answer_1">
<field name="survey_id" ref="website_slides_survey.furniture_certification" />
- <field name="input_type">manually</field>
<field name="partner_id" ref="base.res_partner_address_3"/>
<field name="email">douglas.fletcher51@example.com</field>
<field name="state">done</field>
@@ -119,7 +118,6 @@
</record>
<record model="survey.user_input" id="furniture_certification_answer_2">
<field name="survey_id" ref="website_slides_survey.furniture_certification" />
- <field name="input_type">manually</field>
<field name="partner_id" ref="base.res_partner_address_7"/>
<field name="email">billy.fox45@example.com</field>
<field name="state">done</field>
diff --git a/addons/website_slides_survey/models/slide_slide.py b/addons/website_slides_survey/models/slide_slide.py
index 3b3ceadefa7..b3844550130 100644
--- a/addons/website_slides_survey/models/slide_slide.py
+++ b/addons/website_slides_survey/models/slide_slide.py
@@ -103,7 +103,7 @@ class Slide(models.Model):
last_user_input = next(user_input for user_input in user_membership_id_sudo.user_input_ids.sorted(
lambda user_input: user_input.create_date, reverse=True
))
- certification_urls[slide.id] = last_user_input._get_survey_url()
+ certification_urls[slide.id] = last_user_input.get_start_url()
else:
user_input = slide.survey_id.sudo()._create_answer(
partner=self.env.user.partner_id,
@@ -114,7 +114,7 @@ class Slide(models.Model):
},
invite_token=self.env['survey.user_input']._generate_invite_token()
)
- certification_urls[slide.id] = user_input._get_survey_url()
+ certification_urls[slide.id] = user_input.get_start_url()
else:
user_input = slide.survey_id.sudo()._create_answer(
partner=self.env.user.partner_id,
@@ -123,5 +123,5 @@ class Slide(models.Model):
'slide_id': slide.id
}
)
- certification_urls[slide.id] = user_input._get_survey_url()
+ certification_urls[slide.id] = user_input.get_start_url()
return certification_urls