Commit Graph
130 Commits
Author SHA1 Message Date
Aurélien Warnon d6f07e659d [REF] survey: add a "_mark_done" method to improve answers state management
As other modules than survey (namely hr_skills) now need a hook to add specific
behavior when a survey answer is marked as 'done', we removed the '_send_certification'
method and replaced it with a '_mark_done' method.

It will make it easier to override this method as it has a more generic meaning.

closes odoo/odoo#32880

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-04-23 12:05:29 +00:00
Hetal Dhanak 926bf780b9 [IMP] survey: hide retry button on print view
-Previously, The Retry button was visible on printable view of the
survey as well as on answers.
	-This commit fixes the issue by passing an extra parameter to
determine whether user is in printable view or simply in answer review.

Task: 1967500

closes odoo/odoo#32618

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-04-25 05:29:09 +00:00
Victor Feyens 50caae5bc0 [REF] survey: replace dynamic survey.stage by a static state on survey.survey
Stages modification through the clickable statusbar wasn't very intuitive.
By fixing default behavior through states (and corresponding buttons), default user experience is simplified.

3 static states available : draft, open, closed

Form view: navigation through states with buttons
Kanban view: disabled modification of survey state

Task ID : 1949110

closes odoo/odoo#32325

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-04-25 14:17:45 +00:00
Aurélien Warnon 2268e747c9 [FIX] survey: allow creating survey with no sections
Task#1958723

This commit fixes the survey form to allow creating, testing and sharing
surveys that don't have sections as long as they don't use the "page_per_section"
layout.

closes odoo/odoo#32159

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-04-10 15:03:10 +00:00
Aurélien Warnon 44ae98d3dd [IMP] survey: add a download button at the end of certification process
Purpose
=======

When the user successfully takes a certification, he can download the certification
document using a new "Download certification" button.
(In addition to receiving an email containing the certification)

Also cleaned a bit the way certifications are downloaded.

Task-1941250
2019-03-15 20:38:58 +00:00
Aurélien Warnon f322816ae8 [ADD] website_slides_survey: add a new bridge between slide and survey
Task #1940360
Subtask of #1902304

Purpose
=======

Adds certification capabilities to the website_slides module.
Channel/courses can now include certifications as a new type of slide.

This new type of slide is available as a "Certification" button on the slide creation
frontend view (next to "Video", "Presentation", ...).
Users have to link the slide to an actual survey that has the 'certificate' field
set to true (that will populate the slide's survey_id field).

Slides of type certification are handled in frontend in a very simple way for now:
- A button "Begin certification" that redirects the user to the related survey frontend.
- A button "Download certification" when the user has succeeded the certification.
- When the survey is done, if it's linked to a slide, a button "Go back to course" allows
  the user to go back to the slide frontend.

(There is a special use case for when the website_publisher designing the survey lands on a
certification slide: he is allowed to test the survey with a survey_input created as test_entry)

Survey creation as well as limited time, limited number of attempts, ... are still completely
handled in the survey module. That means that the user will have to first create a suitable survey
that is a certification and only then create a slide of type "certification" and link
the created survey to it.

Ideally, the taking of the survey should be transparently included in the slide frontend but
it requires a full refactoring of the way surveys are submitted. This will most likely come in
a later commit.

This commit is an advanced merge of full eLearning module (see task #1902304).
2019-02-15 15:32:46 +00:00
Aurélien Warnon b5c90c7866 [IMP] survey: add a route to download a certification pdf
Task #1940360
Subtask of #1902304

Purpose
=======

This commit adds a route allowing to download a certification for
a user that has succeeded it.

It's currently not used in any views but it's a preliminary work
for the future slide bridge.
2019-02-15 14:04:52 +00:00
Aurélien Warnon 99bb017f68 [IMP] survey: add invite_token to user_input to reset the attempts count
Task #1902306

Purpose
=======

When you invite people to take a certification multiple times, the user will have his "attempts" count reset
with every invitation.
This is important when there is a limited number of attempts available.
ex: A user invited twice will have 2 x allowed_attempts_count to succeed the survey.

Attempts are now separated in different pools using a "invite_token" field on the survey.user_input.
2019-02-06 13:20:52 +00:00
Aurélien Warnon 445541989f [IMP] survey: add randomization and survey layout selection
Task #1902306

Purpose
=======

The "page" concept is now only present in the user interface.
Surveys are split in "sections" that have two purposes:
- Organizing a (long) survey/certification
- Allow to pick a random questions count for that section (more information here after)

On the user interface, based on the questions_layout field, surveys are displayed:
- On a single page, where sections still appear but are only used as visual separations
- On multiple pages, having one page per section (this matches the previous behavior)
- On multiple pages, having one page per *question*

On top of that page concept, this commit added randomization for the survey questions.
The randomization mechanism will take X questions per section of the survey.
The survey.user_input is initialized with the selected questions to be sure to keep that
set of questions and avoid showing a new set of questions every time the user refreshes the page.
This also allows to easilly go back and know which question we have to show.
2019-02-06 10:34:43 +00:00
Aurélien Warnon afb1abbb60 [IMP] survey: scoring & certification
Task #1902306

Purpose
=======

This commit adds certification capabilities to the survey module.

A certification is a survey with the "certification" flag set to true than can be linked
to a certification email template that contains a certification document (PDF).
This template can be edited by the user in the technical settings to customize the certification email/document.

To be able to implement this certification concept, we also have to add scoring mechanisms to surveys.
survey.questions of type 'simple_choice' and 'multiple_choice' now have scores for the suggested answers.
These question scores allow to compute a global score that is used to determine whether the user has successfully
passed the certification or not.

As additional features, we also have:
- A time limit with an interface timer that limits the test to X minutes
  When reached, the survey is automatically submitted and unregistered (= unsubmitted) answers are not taken into account.
- A limited number of attempts for the survey/certification
  If reached, the user can't take the survey/certification anymore

The 'survey result' layout was adapted accordingly to show the success rate of participants and the correct answers
to the survey questions.

Specs
=======
- Create a new survey :
  - Add a description field for the survey

- Options on a survey :
  - Passing score : (sum of all good answers) in %
  - If No scoring => No passing score, no certificate
  - If Scoring with answers => Passing score and can see the answers (can create certificate)
  - If Scoring without answers => Passing score but can't review the answers at the end (can create certificate)
  - for the questions, if "no scoring" selected, can 't see the option "good answer" and "score" on the questions
  - If the 2 others options, can see the options "good answer" and "score" on the questions
  - all the types of questions are available for each option.

- Questions
  - Add the option correct answer on the multiples questions (one or more good answers)

- Certifications
  - If scoring, force "mandatory" for "mutliple choices (1or multiple answers)"
  - On the dashboard => visual information that this specific survey is a certification
  - Time Limit : The student is informed on the home screen of the survey of the time limit.
    The clock start when he clicks on "start survey"
  - Template of the certificate : send email with attachment PDF

- Front-end :
  - Add some margin
  - Replace "Back to survey" with the blue-bar from the portal
  - Add a timer (start when the survey starts)
  - Add a progress bar (number of section and number of question inside the section)

- Analyse of the results :
  - First a global graph with the number of people who''ve participated and passed the test

- Stages of a survey :
  - Remove the stage "Permanent"
  - 3 stages :
    - draft : not on-line but can be tested (with phantom token)
    - In progress : on-line
    - closed : not on-line
  - Who can test a survey : the manager and the user. Add this condition to the phantom token.
2019-02-06 10:34:40 +00:00
Thibault Delavallée 0598d975dc [FIX] survey: fix prefill
It seems page_id is now a string instead of an int.

closes odoo/odoo#30639
2019-01-29 09:12:49 +00:00
Thibault Delavallée 61bce6958c [IMP] survey: slightly improve result template
Purpose is to remove an unnecessary template by directly including the "no
result" inside the main result template. It eases understanding and updating
of templates.

This commit is linked to task ID 1932508 and PR #30508.
2019-01-25 13:13:30 +00:00
Thibault Delavallée 2e4ea7c49a [IMP] survey: improve token and answer management
Purpose of this commit is to improve a bit management of user input tokens
and state

 * allow to test closed surveys;
 * better management of answers already filled;

This commit is linked to task ID 1932508 and PR #30508.
2019-01-25 13:12:35 +00:00
Thibault Delavallée 82f5ec044b [IMP] survey: better manage login required and signup
Purpose of this commit is to provide a real signup URL and redirection when
login is required on survey. It depends correctly on current partner state
and auth signup parameters. Redirection is now correctly managed so that
customer will be back on survey with their token.

This commit is linked to task ID 1932508 and PR #30508.
2019-01-25 13:12:32 +00:00
Thibault Delavallée e65bcb24fd [IMP] survey: refine access mode option on survey
Purpose of this merge is to improve access mode and authentication management
introduced at 9771fdfe8f . Purpose of this cleaning is to simplify options and make
them clearer. Instead of a selection with 4 entries we propose to use two
fields on survey model :

 * access_mode: everyone with a public link can access and answer; or only
   invited people;
 * login required: whether people have to login to answer or not;

All main use cases are covered with combination of those two options.

This commit is linked to task ID 1932508 and PR #30508.
2019-01-25 13:12:22 +00:00
Thibault Delavallée c801eecf23 [IMP] survey: access survey through access tokens
Purpose of this commit is to use an access token to access survey instead
of their ID. Routes are updated to use that token instead of the survey ID.
Purpose is to have less discoverable routes and be able to control a bit more
survey access even if it is not really a security parameter.

Some renaming is performed to avoid confusion in terms. Survey token and
answer token are now clearly labeled differently in the code to know which
model we are working on.

Some templates are updated to directly use the answer as base record to
have access to token and test_entry fields instead of giving those parameter
values directly in the controller. It makes some more diff but also allow
easier edition and improvement in templates when having directly survey
and answer record available.

This commit is linked to task ID 1932508 and PR #30508.
2019-01-25 13:11:50 +00:00
David Beguin d2ed4ba93d [IMP] survey : add datetime question type
to be able to choose between asking for a date or a date with time,
a datetime question type is now added.

Task ID : 1911291
Closes PR #29054
2019-01-23 13:28:30 +00:00
Thibault Delavallée 040cf769e5 [IMP] survey: use keep query
closes odoo/odoo#30306
2019-01-17 09:59:43 +00:00
David Beguin 7dea1d7208 [FIX] survey : restore debug mode for survey pages
During cleaning from ee2631cd51,
as the kwargs were removed from arguments for some routes,
debug mode was not accessible anymore as ?debug=x is, de facto,
a post argument.

This commit restores debug mode by restoring kwargs in those routes.

Fix commit from task ID 1911586 and PR #28986
Integrated in task ID 1911291 and PR #29054
2019-01-17 09:49:50 +00:00
Thibault Delavallée e6c0a326d6 [IMP] survey: do not count test user entries as real inputs
Purpose of this commit is to remove test entries from statistics and reports
in survey. Indeed they are not real results and should not be taken into
account. We also display a warning on portal page of surveys when user is
in test mode.

This commit is linked to task ID 1865453 and PR #29316.
2019-01-15 15:54:54 +00:00
Thibault Delavallée 1c5371a966 [IMP] survey: improve some survey pages
Survey has several side pages related to corner cases: closed surveys, void
surveys, ... those templates need a bit of polishing. Other main templates
are left untouched and will probably be improved in other tasks.

This commit is linked to task ID 1911586 and PR #28986.
2019-01-14 15:22:18 +00:00
Thibault Delavallée 7c50807bec [REF] survey: improve access mode options and survey form view
In this commit we extend access option on survey model. Access mode is now
defined as

 * public: everyone can access this survey. People having a link to the survey
   can create answers and fill survey. Those are used for example as
   satisfaction surveys;
 * login required: only users can access this survey. Depending on auth
   signup configuration this either limits survey access or forces people
   to create an account;
 * employees only: only users belonging to base.group_user can access this
   survey. Those are used for example for internal polls;
 * on invitation only: only people receiving a token can access this survey.
   They do not need to be an user, having a token is sufficient. Those are
   used for example for appraisals;

Note that survey officers and managers can always create and update answers
according to their ACLs.

In this commit we also improve a bit survey form view while changing the
access field. Surveys users now have access to all buttons and some labels
have been updated to better fit current Odoo style. Archive button is now
always displayed as it is considered as a standard way of managing surveys.

This commit is linked to task ID 1911586 and PR #28986.
2019-01-14 15:22:18 +00:00
Thibault Delavallée dfc37ecede [REF] survey: adapt controllers and portal flow to new ACLs
Purpose of this commit is to adapt controllers and routes to new ACLs. As
survey access is now controlled routes have to use survey ID and browse
records as sudo when access is granted.

This commit is linked to task ID 1911586 and PR #28986.
2019-01-14 15:22:18 +00:00
Thibault Delavallée ee2631cd51 [REF] survey: clean survey routes definitions
Purpose of this commit is to ease understanding or routes. In this commit
we make token a parameter where it is optional and force is where it is
not; we remove unnecessary list on routes; we rename some controller methods
to ease understanding;

Code calling those URLs is adapted accordingly. No functional change should
occur with this commit.

Some routes are json-http-mixed as a result of old implementation. Those
will be updated in future tasks when cleaning the templates and routes.

This commit is linked to task ID 1911586 and PR #28986.
2019-01-14 15:22:18 +00:00
Thibault Delavallée 8ed2a7e68a [FIX] survey: allow debug parameter in testing route
Adding kwargs in test route of surveys allow notably to avoid crashing when
working in debug mode and testing surveys.

closes odoo/odoo#29996
2019-01-07 14:27:20 +00:00
Thibault Delavallée b65202cb8e [FIX] survey: fix test url redirection
closes odoo/odoo#29381
2018-12-10 10:31:33 +00:00
Thibault Delavallée 8e38d97f69 [FIX] survey: make a specific route for testing surveys
Purpose of this commit is to clean a bit the test mode of surveys before
working a bit on ACLs and survey access. Currently when taking a survey
with a magic 'phantom' token it generates a test answer allowing to go
through the survey process. However it has several drawbacks :

 * 'phantom' is not a real token. Token parameter should be used only for
   real tokens and avoid having corner case when managing simple parameter;
 * token should only be used to ensure people have been granted access to
   answering surveys;
 * it is currently available for every users;
 * it is pure unwanted magic;

In this commit we add a separate route for testing surveys that create the
test answer and then redirects to the survey with this answer. It is now
also limited to survey managers or survey officers testing their own surveys.

Survey JS tour now uses the standard URL and not the testing one. Indeed as
testing is now limited to survey officers and managers tour should test
real life use cases.

This commit is linked to task ID 1916034 and PR #29339.
2018-12-07 09:36:46 +00:00
Christophe Simonis e1f9499d26 [MERGE] forward port branch 12.0 up to 053bb45706 2018-12-05 18:46:15 +01:00
Lucas Perais (lpe) 332d43ebd4 [FIX] survey: adapt prefill controller to new date field
Try to print a survey answer which has a date question

Before this commit there was a traceback because the value_date
which is a Date field was not JSON dumpable

After this commit, the survey answer prints well

OPW 1914984

closes odoo/odoo#29250
2018-12-04 15:48:52 +00:00
David Beguin 06e1a46c04 [FIX] survey : fix review survey page
The prefill of the date field must be done after the initialisation,
otherwise, it would override the value. so prefill must be done inside
the .then to avoid prefill before the locale is ready.

Since the datetime are real datetime in DB, we cannot give real datetime
to JSON but string instead.

Finally, no need to keep the div class row. Otherwise, it would put everything
on same line and the jumbotorn div wouldn't be on top on the rest of the page.

Special thanks to @awa-odoo that gave me his masterpiece brain
to help me on this.

Task ID : 1911291
Closes PR #28966
2018-11-26 12:04:47 +01:00
mreficent 35a5db92c2 [REF] survey: rename survey.user_input type field to input_type
Purpose of this commit is to rename type column to something matching the
the real business use of the field. That way it is easier to find and grep
in the code. It also lessens potential conflicts with type build-in python
function. It also lessens conflicts when using the field in JS as type
is a build-in attribute.

Renaming type column is a long-living issue. We choose to do it at the
beginning of the v13 development to catch errors as soon as possible.

This commit is linked to task ID 1896245. It is also a subpart of community
PR #27599.
2018-10-19 09:13:12 +00:00
mreficent b70ccc45bd [REF] survey: rename survey.question type field to question_type
Purpose of this commit is to rename type column to something matching the
the real business use of the field. That way it is easier to find and grep
in the code. It also lessens potential conflicts with type build-in python
function. It also lessens conflicts when using the field in JS as type
is a build-in attribute.

Renaming type column is a long-living issue. We choose to do it at the
beginning of the v13 development to catch errors as soon as possible.

This commit is linked to task ID 1896245. It is also a subpart of community
PR #27599.
2018-10-19 09:13:09 +00:00
3c0daf39e9 [IMP] survey: remove dependency to website
Set http_routing module as dependency of survey (to allow slug)
create website_survey to have the correct assets

Task-id: 23848
Closes #20485

Co-authored-by: Rawish Murari <rmu@odoo.com>
Co-authored-by: Rohan Patel <rop@odoo.com>
Co-authored-by: Richard Mathot <rim@odoo.com>
2018-02-14 14:28:19 +05:30
Kirti Choudhary 044ece7024 [FIX] survey: Pass 'survey' when rendering 'nopages' template
As survey is used on the template, this will avoid a crash.
2017-09-25 10:58:04 +02:00
Xavier Morel 7dd062f835 [FIX] P3: text model types
* remove references to basestring & unicode (use relevant pycompat
  helpers)
* remove some str calls (either entirely or replaced by relevant
  helper, either text or native)
* use better API to avoid unnecessary conversions
* remove some XML declarations in views
2017-08-20 23:25:54 +02:00
xmo-odoo b4429c2a91 [FIX] Various P3-related import changes
* LDAP import: python-ldap is not python3-compatible, pyldap is

  Warning: only supported from debian Stretch (current testing)?
  https://packages.debian.org/search?searchon=names&keywords=pyldap

* implicitly relative imports
* imports of moved or removed stdlib modules

issue #8530
2017-04-28 09:06:53 +02:00
Jérome Maes 8a399930f3 [REF] website_*: remove render method on website
Since saas-3, website controllers use `request.website.render`
to render the template of a web page. This was kept for retro
compatibility. It's time to stop using deprecated stuff.
Same for `_render` method on website.

'json' route don't use `request.render` since
`JsonRequest` has no `render` method.
2016-08-04 12:02:14 +02:00
Ravi Gadhia 66cb880b74 [MIG] survey: migrate into new api 2016-07-15 12:57:51 +02:00
Jitendra Prajapati f62cfd2980 [FIX] survey: token was lost when user had to log in first 2015-08-06 15:25:38 +02:00
Christophe Simonis 2cf91d16a5 [MERGE] forward port of branch saas-6 up to 63e92cb 2015-07-22 16:17:54 +02:00
Denis Ledoux 812318dcba [FIX] survery: access rights for invitations
When building a new suvery, and sending invitation
trough private emails, it wasn't possible
to fill the survey from the link sent
if you were not logged as the user who sent
the invitation, or as a survey manager

opw-644210
Fixes #7486
2015-07-09 11:01:14 +02:00
Olivier Dony 0bd4545348 [LEGAL] Use global LICENSE/COPYRIGHT files, remove boilerplate text
- Preserved explicit 3rd-party copyright notices
- Explicit boilerplate should not be necessary - copyright law applies
  automatically in all countries thanks to Berne Convention + WTO rules,
  and a reference to the applicable license is clear enough.
2015-06-02 03:16:04 +02:00
Richard Mathot f9376905cc [FIX] survey: avoid navigation crash
If a survey has "allow users to go back" option enabled, users can go back to previous pages and change their answers before submitting the whole survey.

This commit fixes the very special case, when the user reaches the last page of the survey, then click on "Previous" button, then reopen the survey from the invitation URL (/survey/fill/<survey_id>/<token> without the /prev flag in the URL). This won't crash anymore.

This commit fixes #2658 and #2680.
2015-01-16 17:24:15 +01:00
Richard Mathot dbb9c8ebeb [REM] survey: unused import 2015-01-16 17:24:14 +01:00
Denis Ledoux 69e8edb8f2 [FIX] survey: use ustr instead of str for question.question 2014-12-23 11:52:45 +01:00
jas d7ef283f53 [FIX] survey: trace the partner_id taking the survey; if no token, set as the current user's partner. 2014-09-02 11:31:03 +02:00
Christophe Simonis fd4fd35e32 [MERGE] forward port of branch saas-5 up to e4cb520 2014-07-30 20:52:14 +02:00
Christophe Simonis e4cb5202a0 [MERGE] forward port of branch saas-4 up to fa07bc8 2014-07-30 20:30:14 +02:00
Richard Mathot 5e1221b339 [FIX] survey: display comments in results 2014-07-25 14:48:57 +02:00
Richard Mathot eadd1b3907 [FIX] survey: correct counting of finished answers 2014-07-25 13:47:42 +02:00