Commit Graph
31 Commits
Author SHA1 Message Date
Nicolas Bayet 4813f42997 [IMP] mail,*: replace jinja with qweb
Jinja as a templating engine was problematic in differents respect:
- introduce external dependency to Odoo (less controll)
- add another templating mechanism in the stack
- specific feature in qweb cannot be reused
- difficulty in rendering easily editable templates
- more knowledge required with no betterment

By replacing jinja with qweb we can now build tools to edit a qweb
that will work with the previously jinja encoded document
(essentially `mail.template` records).

There is a catch however. Some email fields (eg. email_to) used jinja
syntax for rendering dynamic variables (ie. ${object.something} and
${object.something_that_should_not_be_escaped | safe}).

We still want user to use dynamic variables for some char fields (eg.
subject, from, to, ...). We made a new rendering engine called
"inline_template" that will render an expression enclosed by `{{` and
`}}`.

To be able to edit the templates from the backend interface, a
plugin to the Odoo editor has been made for seamlessly edit the
document.

This qweb plugin includes:
- make dynamic variables (eg. `<t t-out="variable"/>`) not editable
  (for preventing the user to shoot himself in the foot)
- group and hide related logical branching (ie. t-if, t-elif, and t-else)
  in order to see only one at once
- a floating select input to switch visibility of a particular logical
  branching

Task-27033

X-original-commit: odoo/odoo@68182baff4
Part-of: odoo/odoo#77377
2021-09-28 23:42:54 +00:00
std-odoo cc012a0864 [IMP] mail, various: add email templates management levels
Purpose
=======

Purpose of this commit is to add a new group for the mail template designer.
Goal is to make roles clearer: managers edit templates, users use them. This
commit allow some designers / managers to make email template and to let
others users use those email templates.

Specifications
==============

When this feature is enabled in the Settings page, a new group is required to
modify email templates in a composer like wizard or to make dynamic content.
This allows to separate managers editing / composing templates from standard
users that use them.

If the current does not have this group, the email body will be in readonly
mode if he selected an email template. That way we force him to use the email
template that the manager made.

Technical
=========

New Group
---------

Only users in this group will be able to create / write email template or
to write Jinja code in the mail composer (including other fields like subject
in mailing).

By default, all internal users have this group. Mass mailing users also have
this group as writing mailings is about the same management level as writing
templates.

Mail Composer Mixin
-------------------

In comment mode, the template is rendered and then saved on the body field
so non-"Mail Template Editor" users can load email templates.

But in mass mode, the body of the template is saved and then rendered and
many things change the body (HTML sanitizer, web editor move inline CSS
properties, add / remove spaces...). So in this case, we can not know if
the user changed the body or not. That is why we put the body field in
readonly mode so, it is not modified by the web editor.

Jinja code detection
--------------------

To detect dynamic Jinja content, we compile the template, and we browse the
AST. If we do not have a single "Template Data" node, we assume that the
template is dynamic.

When we detect the template as static, we do not render it. That way we
avoid unnecessary rendering.

Code cleaning
-------------

Move Jinja import into tools so that it is outside of mail framework code.

Task-2187263

closes odoo/odoo#75840

Related: odoo/enterprise#20547
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2021-09-02 03:42:54 +00:00
Thibault Delavallée 822f468059 [MOV] mail: move rendering code to mail render mixin
We also have to update code calling directly the rendering itself. Indeed
some code bits does some rendering directly on jinja-enabled input and not
through templates. Those calls have to be updated accordingly.

LINKS

Task ID 1963529
Community PR odoo/odoo#32397
2020-03-24 10:24:19 +00:00
Thibault Delavallée a03f6483d6 [REF] mail: clean code about rendering in mail_template
PURPOSE

Clean and rename code about language management and template rendering in mail
template model.

SPECIFICATIONS

Clean method naming and try to make code easier to understand and call. Also
add and/or clean docstrings of rendering methods.

Notably

  * ``_classify_per_lang``: for each lang-contextualized template, give the list
    of record ids;
  * ``_render_template``: now working only on a valid list of IDs instead of
    allowing both int / list and having a return type depending on the input
    type. It allows to simplify code and delegate some processing to callers;

Introduce new API method

  * ``_render_lang``: for each record id return the lang matching it;
  * ``_render_field``: render a field of mail.template, on given set of record
    ids. Usage: template._render_field('body_html', records.ids). Language
    computation is available for this method;

Remove the "multi mode" support of rendering that either returned a rendered
value, either a dict based on given ids. Now all methods always work in batch
and caller have to fetch the correct result if necessary.

LINKS

Task ID 1963529
Community PR odoo/odoo#32397
2020-03-24 10:24:18 +00:00
RomainLibert a03faab03f [IMP] event, website_event: Make ics file generation available in event
Ics file generation should be possible even when only event is
installed as it is a basic feature of events.

Moreover we need to be able to generate such files in order to replace
the old outlook api used in the event templates, api which is not
supported anymore.

We decided to use ics files because it is supported by most calendar
schedulers hence working with outlook.

Linked to task #1853063

closes odoo/odoo#28477
2018-12-17 11:46:48 +00:00
Thibault Delavallée b3a9dbe231 [IMP] portal: add portal.mixin for portal access records
This mixin holds the replacement for website_published.mixin
website_url field. This field is called portal_url to avoid confusion
with the website and enforce the new portal use.

It also contains get_share_url method that will be used to generate
the URL to use in emails or various communication for customers.
2017-08-09 17:46:21 +02:00
Thibault Delavallée ea27c1b7a3 [MOV] website_portal, portal: move customer portal to portal module
This commit moves the whole customer portal to the portal module.
It now completely uses portal and http_routing features and is not
dependent on website anymore.

An override of web controller is added in portal in order to redirect
portal users to /my instead of /web. That way once having the customer
portal installed all share users are correctly redirected to their
account.

All modules defining customer portal templates and controllers are
updated accordingly.
2017-08-08 14:58:49 +02:00
Thibault Delavallée da8d418ff0 [ADD] portal: add module for customer portal and sharing features
This module adds required base code for a fully integrated customer
portal. It contains the base controller class and base templates.
Business addons will add their specific templates and controllers
to extend the customer portal.

This module contains most code coming from odoo v10 website_portal.
Purpose of this module is to allow the display of a customer portal
without having a dependency towards website edition and customization
capabilities.

Some CSS files used in frontend assets are already moved to have a
working portal skeleton. A is_public method on users is also added
as it will be used in various portal code soon.
2017-08-08 14:23:58 +02:00
Jérome Maes 3e3105151b [REM] portal: kill the module
All portal features were moved into base
and website_portal, portal module is obsolete.
This commit remove its code, and modify the modules
dependencies accordingly. website_portal now depends
on auth_signup.
2017-03-23 10:00:51 +01:00
Jérome Maes 2b4eeb908f [MOV] portal,website_portal: move wizard and tests into website_portal
The goal is to prepare the removal of
'portal' module.

Converting a partner into a portal user,
though the wizard is moved in website_portal.

'base' will manage portal user and group, but if
website_portal is not installed, there is nothing
to display for portal user.
2017-03-23 09:59:58 +01:00
Jérome Maes d60e040096 [MOV] portal : reorganize module directory 2016-05-31 14:16:58 +02:00
Géry Debongnie 6a9ec89522 [REM] portal: remove override of inbox action for portal users
The mail_message_action_inbox_portal xml_id does not exist anymore.  We might need
to override this action later, depending on the needs for portal users.
2015-09-01 20:58:09 +02:00
Thibault Delavallée 01ab75f597 [IMP] mail: notification emails with button
Notification emails have been redesigned. They notably include buttons
allowing to perform some action directly from the email.

The notification creation and sending has been partially rewritten
and improved. The purpose is to lessen the number of rendering to perform
when sending emails to recipients. Recipients are first categorized into
groups. Basic groups are partners and users. The notification template
is then rendered twice, one for followers and one for not-followers. In most
cases there will be few rendering to perform. Through inheritance it
is possible to further categorize users. For example HR users / officers
that have approve / refuse buttons in their email.

A custom data structure is used to store data about buttons and actions.
URLs, follow / unfollow are added in the structure and used in the
template to render the email for a given group.

New routes are added in mail. Those allow to perform some action, like
going to a form in create mode, following / unfollowing, executing a method,
sending a signal for a workflow. Those routes are for users only and rely
on classic access rights.

A generic route for viewing records is added. It replaces the old redirect
action. According to some specific action given by the already-existing
get_access_action, the record will be visible for everybody (forum, blog)
or restricted (going on the Inbox / login / form view, according to access
rights).

The next commit will add the various inherits necessary to add the actions
in the main addons.
2015-08-28 17:30:42 +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
Jignesh Rathod a7543cc1ac [MOV] portal, mail: move some code on mail.message model from portal
to mail, as the portal group is now defined in base. Same for access rights.
There is no need to keep them in the portal module.
2015-03-24 10:18:20 +01:00
Leonardo Donelli 4a0b13ed92 [REF] remove vim modelines and resulting trailing blank lines
Let 2015 be a year without modelines!
cf #4174
2014-12-31 15:52:13 +01:00
Thibault Delavallée 2e7b5991b7 [REF] portal, portal_sale, payment: refactored old acquirer in portal
now based on the new implementation of payment.

[REM] portal: removed acquirer model, views and implementation
[REF] portal_sale: now using payment rendering methods
[IMP] payment: added render_payment_block, taken from old
acquirer, that renders all portal_published acquirers.

bzr revid: tde@openerp.com-20140122190022-lef4b3o1tpcua3vx
2014-01-22 20:00:22 +01:00
Thibault Delavallée cd278d83ab [MERGE] Sync with trunk
bzr revid: tde@openerp.com-20130522103305-yi5ql1chdx9qxxlx
bzr revid: tde@openerp.com-20130522114236-qi2s3i2dl2lemdvh
2013-05-22 13:42:36 +02:00
Christophe Matthieu 77e51ba1e2 [FIX] portal mail: Override of _search and check_access_rule of mail_message to add specific access rights of mail.message, to remove all no discussion message if uid is a portal user.
bzr revid: chm@openerp.com-20130513144024-m1o4q8in62fe123b
2013-05-13 16:40:24 +02:00
Thibault Delavallée a75cc23573 [REF] mail: refactored system to generate links in signatures. A new server action is used that choose to redirect to the document or to the Inbox (Portal or Classic Inbox, depending on the user).
bzr revid: tde@openerp.com-20130417122225-faf0bb5vyhbcx7ys
2013-04-17 14:22:25 +02:00
Olivier Dony 20c81b5e2f [ADD] portal: added portal.payment.acquirer model
portal.payment.acquirer stores payment processor
options (formally called payment acquirers). Each
acquirer is just a name and an HTML form template,
used to render an HTML snippet that can be included
in views where a payment option should be displayed.
The aquirer model has a generic method for rendering
a complete block of HTML to be included in form views
directly (with matching CSS): render_payment_block().

This method takes a few parameters to figure out
the name/reference, amount, currency, etc. to pay.

bzr revid: odo@openerp.com-20121024131554-j01ucniecjmoz3jq
2012-10-24 15:15:54 +02:00
Thibault Delavallée 30fb693c20 [IMP] Portal: override of mail_mail to add the signin link into footer of send notifications.
bzr revid: tde@openerp.com-20120912155300-8ilg2g24yl7qsjfg
2012-09-12 17:53:00 +02:00
Thibault Delavallée 988e04188a [RM] Portal: removed res_users override, because partner_id is now in base. Removed view and update init and openerp files accordingly.
bzr revid: tde@openerp.com-20120814093202-7do78o1h9z44aj53
2012-08-14 11:32:02 +02:00
Raphael Collet 406ec22fa3 [IMP] portal: remove hack to retrieve menu root for portal users, it now works for all users
bzr revid: rco@openerp.com-20120209121817-b2wcrl4mg1vkr2b2
2012-02-09 13:18:17 +01:00
Numerigraphe - Lionel Sausin 779fa653c1 [IMP] Added missing vim mode lines
lp bug: https://launchpad.net/bugs/524279 fixed

bzr revid: ls@numerigraphe.fr-20111122085138-x6u2lcl6vrpyybp9
2011-11-22 09:51:38 +01:00
Raphael Collet 07b25fe662 [FIX] import changes to res.users
bzr revid: rco@openerp.com-20110531065829-emsd2ylq22pb2zv1
2011-05-31 08:58:29 +02:00
Raphael Collet 9c75110fc5 [IMP] fix copyright notice
bzr revid: rco@openerp.com-20110523131605-34dxgmw9ffrh85xa
2011-05-23 15:16:05 +02:00
Raphael Collet 11e1f4bca2 [FIX] hack in ir.ui.menu for web client 6.0
bzr revid: rco@openerp.com-20110429090856-wlng0lhq1x6vvn8u
2011-04-29 11:08:56 +02:00
Raphael Collet 622b95ab7e [IMP] first sketch of wizard to create users from partner contacts
bzr revid: rco@openerp.com-20110422144122-w0hq230zj8imva77
2011-04-22 16:41:22 +02:00
Raphael Collet c3c735400f refactor portal; it now '_inherits' from res.groups
bzr revid: rco@openerp.com-20110420080910-frx67xxjz0tqm2y8
2011-04-20 10:09:10 +02:00
Raphael Collet 2582be6492 add wizard to add/remove groups to portal users
bzr revid: rco@openerp.com-20110405101712-nfednzpixzim86i4
2011-04-05 12:17:12 +02:00