Commit Graph
100 Commits
Author SHA1 Message Date
Thibault Delavallée 19a8c8fac6 [FIX] event_booth_sale: fix ACLs issues at unlink
When unlinking booths a check is done on sale orders to prevent their deletion when
a SO is linked and raise a nice error message. However as there is a group on the
field (coming from Sales app) we should sudo the filtered.

Task-2842621

X-original-commit: 9cdc2eec25dd57a74be993b0db0fd81460d6aed6
Part-of: odoo/odoo#94475
2022-06-24 10:29:50 +02:00
Thibault Delavallée dd1a842c32 [IMP] event_booth(_sale): improve tests execution
Notably using post-install allows to run event_booth tests even when sale
dependencies are installed. Otherwise they cannot run at install due to
required column not being filled in DB.

X-original-commit: aa769df87c0ef0e7ac6924c3e8f5595e8c82eba7
Part-of: odoo/odoo#94475
2022-06-24 10:29:50 +02:00
Thibault Delavallée deb66c90d8 [FIX] sales_team: ensure determinism when finding sales team
Current sales team ordering is based on sequence. However several sales teams
with same sequence may exist. This leads to a not deterministic behavior as
we are unsure how database will choose the ordering.

This is fixed with this commit: when having teams with same sequence we take
the newest one first.

Task-2852947

X-original-commit: 34da99f6bec92553febfae7bc9c80ccebb38f70f
Part-of: odoo/odoo#94045
2022-06-20 16:51:14 +02:00
Thibault Delavallée 741a7e376e [IMP] sales_team: improve default team fetch tests
Purpose of this commit is to improve a bit tests about default team computation.
Coverage is improved, notably about default context value usage that is about
to be updated.

Task-2852947

X-original-commit: 8e18a27352d2fd9e68cd2b54e49dfca6fb658eaa
Part-of: odoo/odoo#94045
2022-06-20 16:51:13 +02:00
Thibault Delavallée c4133ec2eb [FIX] mail: do not fetch followers in user_notification mode
When fetching recipients information for user_notification we don't need to
check for followers, as only explicit recipients are considered.

Task-2859935

Part-of: odoo/odoo#92868
2022-06-18 10:23:02 +02:00
Thibault Delavallée b71455c328 [UPD] various: update query counters
Update to latest runbot state, at least for tests known to be
deterministic.

Notably mail tests are lower than before, probably due to odoo/odoo#73271

closes odoo/odoo#93470

X-original-commit: 6118ecba8d807ac5ebc69ae4877e1f202b0daeb1
Related: odoo/enterprise#28308
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-06-13 19:10:58 +02:00
Thibault Delavallée f446e54cbd [MOV] mass_mailing: reorganize controllers and templates
PURPOSE

Reorganize addon according to guidelines, helping finding and updating

SPECIFICATIONS

Reorganize templates in order to see a bit what's going on here. Notably split
subscription (opt-out, blacklist) from management (view, reporting) templates.

Reorganize controller code by main section in order to separate a bit various
code purpose.

This commit contains only file split / renaming and code move.

Task-2864264 (Mass Mailing Module Reorganization)

Part-of: odoo/odoo#92509
2022-05-31 16:02:25 +02:00
Thibault Delavallée 4f39a80e76 [MOV] mass_mailing(_sms): split models and views
PURPOSE

Reorganize addon according to guidelines, helping finding and updating code.

SPECIFICATIONS

Move subscription model into its own file, to ease future improvements. Do
the same for its views.

Also move menu entries into a specific file for menus, allowing to easily
understand menu organization in mass mailing.

A duplicated menu about link trackers in SMS is also removed.

Task-2864264 (Mass Mailing Module Reorganization)

Part-of: odoo/odoo#92509
2022-05-31 16:02:24 +02:00
Thibault Delavallée c617923664 [MOV][FIX] mass_mailing: reorganize data and models, remove duplicated data
PURPOSE

Reorganize addon according to guidelines, helping finding and updating code.

SPECIFICATIONS

Correctly split data into separate files. A lot of content was put a bit
randomly in data files, leading to a hard discovery of code and features.

We also fix duplicated attachments definition, both in mass_mailing_data and
ir_attachment files. It has been merged into the attachment data file.

Task-2864264 (Mass Mailing Module Reorganization)

Part-of: odoo/odoo#92509
2022-05-31 16:02:24 +02:00
Thibault Delavallée 19b02759ca [LNT] mass_mailing(_sms): perform various linting
PURPOSE

Reorganize addon according to guidelines, helping finding and updating code.

SPECIFICATIONS

Perform various code linting and cleanups, line breaks, linter issues...
No code or feature change should occur with this commit.

Task-2864264 (Mass Mailing Module Reorganization)

Part-of: odoo/odoo#92509
2022-05-31 16:02:24 +02:00
Thibault Delavallée 5c354ece04 [IMP] mail: strengthen assert email values check
Purpose is to ensure tools are called like intended, notably by filtering
input and raising if an unexpected value check is asked. Some code is also
made a bit more generic to have the same kind of parameters when searching
for mail.mail.

In this commit we therefore fix some bad calls to assertSentEmails which
were not checking the right stuff.

closes odoo/odoo#90082

X-original-commit: d9759b2ee86b79b4fb2739a4aebd24a8044cf947
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-04-29 12:06:03 +02:00
Thibault Delavallée bc8421f022 [FW][IMP] mail: add message_id in references to help thread formation
Issue: when using Amazon's SES SMTP service they rewrite the Message-Id of all
outgoing messages. When someone replies, In-Reply-To contains the SES Message-Id
which we don't know. Threading is therefore broken. Amazon requires to remember
new Message-Id and handle it ourself, which is complicated [1].

Possible solution: copy the Message-Id to References in outgoing message as if
we were pretending that the message is part of a pre-existing thread with
itself. Since Amazon does not alter References it is kept during transport.
Replies will therefore contain both Amazon Message-Id and Odoo Message-Id as
well as original parent Message-Id in case of nested replies.

  * ``In-Reply-To``: Amazon Msg-Id
  * ``References``: Odoo Parent Msg-Id Odoo Msg-Id

Task-2643114 (Mail: Message-Id in references to ease thread formation)

[1] https://docs.aws.amazon.com/ses/latest/DeveloperGuide/header-fields.html

closes odoo/odoo#89328

X-original-commit: bc568747bdf92c6bbca400ce3ba11f6487679f3a
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-04-22 12:04:34 +02:00
Thibault Delavallée bd8a39d8aa [FW][FIX] mail: fixup gateway parent finding
Followup of odoo/odoo@de7c119e66 where the parent finding was incorrectly refactored.
Indeed due to a typo new_parent was not updated. Instead of getting higher in
the parent chain until the first message, only the first parent's parent was
considered.

Moreover ``_mail_flat_thread`` is incorrectly taken into account. Due to the
hereabove issue it was not really impacting discussion channels, as anyway
parent finding was not working.

New parent management, depending on ``_mail_flat_thread`` is now
  * ``_mail_flat_thread`` True: no free message. If no parent, find the first
    posted message and attach new message to it. If parent, get back to the
    first ancestor and attach it. We don't keep hierarchy (one level of
    threading);
  * ``_mail_flat_thread`` False: free message = new thread (think of mailing
    lists). If parent get up one level to try to flatten threads without
    completely removing hierarchy;

Tests show that parent is correctly flattened on business documents and left
untouched for channel-like documents.

Task-2822652 (Mail: fix parent message fetch / flattening)

X-original-commit: 86f21c1f384e37a4555b4b1ce4831904c8d40b6f
Part-of: odoo/odoo#89328
2022-04-22 12:04:34 +02:00
Thibault Delavallée 4193b1ee64 [FW][IMP] test_mail: test gateway with multiple references
Purpose is to test behavior when having multiple references in mail headers.
We have to check that parent_id is correctly taken (as it impacts internal
flag), and that flattening is performance when posting the message (always
attaching to the thread first message being the default behavior).

Note that tests highlighted that flattening is currently a bit broken as it
does not go up until the first ancestor, which is the expected behavior for
business documents having ``_mail_flat_thread``. Next commit will fix that.

Task-2822652 (Mail: fix parent message fetch / flattening)
Task-2643114 (Mail: Message-Id in references to ease thread formation)

X-original-commit: f7d4f1d29213c71e76564c485db2bbecf0bbf37c
Part-of: odoo/odoo#89328
2022-04-22 12:04:33 +02:00
Thibault Delavallée d4816d740e [FIX] mail: limit reply-to name part
Python library currently holds a limitation when we use a formatted email
that is longer than 78 characters (e.g. "Long Company Name With Long Record
Name <email@domain.com>"). Python folds address if is longer than 78 chars
and a bad management of quotes breaks the reply-to. Even if anything should
technically be ok with the RFC python seems to incorrectly handle it (please
refer to [1] for more details and discussions).

Until this is finally sorted out we decided to avoid issues by shortening
reply-to. To avoid that issue when formataddr would return more than 78 chars
we return a simplified name/email to try to stay under 78 chars. If not
possible we return only the email and skip the formataddr which causes the
issue in python. We do not use hacks like crop the name part as encoding and
quoting would be error prone.

Task-2602862
OPW-2733513

[1] See https://bugs.python.org/issue44637

closes odoo/odoo#89081

X-original-commit: d2d705708a11de68d8dd9d9edf62e0a33ddb066b
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-04-19 19:40:14 +02:00
Thibault Delavallée 4809d8f596 [FW][FIX] sms: remove sms notifications at uninstall
Currently when uninstalling SMS notifications linked to SMS are kept but set as
email notifications. This makes no sense as they are not linked to any outgoing
mail.mail or email address. As the SMS are removed and as the SMS feature is
not available anymore it is better to simply remove existing SMS notifications.

Task-2778461

closes odoo/odoo#88970

X-original-commit: f307a6c19a2dbe64ba6120a00610063f256102d5
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-04-19 09:48:16 +02:00
Thibault Delavallée 563a6262d4 [FIX] website_crm_partner_assign: split costly search
On an heavy database searching for company leads or assigned leads can be
costly. Having an OR does not necessarily triggers index usage and query plan
uses an index scan.

It is less costly to do two searches: one for the base domain (based on
commercial entity) and one for the assign domain (based on partner assigned).

Task-2770994

closes odoo/odoo#88538

X-original-commit: 6957d7a57cb3bf25d552d3f8f2760db46ace5e3a
Signed-off-by: Thibault Francois <tfr@odoo.com>
2022-04-12 16:50:01 +02:00
Thibault Delavallée 93b6282ed6 [FIX] various: remove unnecessary .id in domains
Even if ORM normally filters them out, no need to specify .id in domains.
This leads to better and easier to read queries / domains.

Task-2816580

closes odoo/odoo#85648

Related: odoo/enterprise#24911
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-04-12 08:21:08 +02:00
Thibault Delavallée bc6c87f19d [UPD] various: update query counters according to runbot state
Seems various flows are positively impacted by recent changes.

closes odoo/odoo#87899

Related: odoo/enterprise#25873
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-04-04 17:48:46 +02:00
Thibault Delavallée 05c7e84239 [IMP] rating: make methods private
Purpose is to lessen access to internal methods and make them private. No
need to expose internal computation.

Task-2812665 (Rating: Cleanup rating flow code)

Part-of: odoo/odoo#80707
2022-04-04 17:48:23 +02:00
Thibault Delavallée cce67a0a4d [REF] rating, various: cleanup rating from routes
PURPOSE

Cleanup code and flow of customer rating: routes, rating_apply, rating and
message creation and update.

SPECIFICATIONS

Cleanup code about rating controllers and rating_apply. Notably correctly
link a message to a rating once a feedback is posted, whatever the flow.

Update ``rating_apply`` to use either a token, either an existing rating to
udpate it and post a message. Always link the message and the rating to
be sure DB data are coherent.

This requires an update in several demo data to correctly set tokens on
ratings and use it in calls to ``rating_apply`` done in xml files.

Extract default subtype computation of rating_apply in a sub-method to allow
setting this parameter without having to deal with ``rating_apply`` details.

CODE CLEANUP

Split behavior that is generic but actually used only in project about stage
update based on rating. Move it directly in project. As it is used only once
and as generic approach is hardcoded based on fields names better keep it
localized.

Task-2812665 (Rating: Cleanup rating flow code)

Part-of: odoo/odoo#80707
2022-04-04 17:48:23 +02:00
Thibault Delavallée 084ed6920b [MOV] rating, *: move main rating views directly into rating module
*= im_livechat, project, website_slides

MAIN PURPOSE

Purpose is to give access to some standardized views for rating directly
in rating application. Three main new views are defined

  * form view with text instead of image (used notably in livechat and also
    customized in project);
  * form view with detailed information (consumed, ...), will be used in
    technical menus used to debug and have a global view of ratings (less
    business);
  * kanban with stars instead of image (used notably in elearning);

As usage of rating is going to be improved let us have some default views
easy to customize. It will lessen number of hardcoded custom views.

In this commit we also set some higher priorities to module specific views
(higher = less chances to be default). That way views now have explicit
priorities and ordering is clearer.

WEBSITE_SLIDES VERSIONNING

We also set back website_slides to 2.6 as two bumps were done during saas
15.3 development (see odoo/odoo@6d33510beb and odoo/odoo@db63c03af9).

Task-2812665 (Rating: Cleanup rating flow code)

Part-of: odoo/odoo#80707
2022-04-04 17:48:22 +02:00
Thibault Delavallée 85ddb867b5 [REM] rating: remove dead controllers
``/rating/`` routes are deprecated since odoo/odoo@8ca96078db (before v14).
Let us remove them as we are now going to v16.

Task-2812665 (Rating: Cleanup rating flow code)

Part-of: odoo/odoo#80707
2022-04-04 17:48:22 +02:00
Thibault Delavallée bf1adc2d2c [IMP] test_mail_full: add portal and rating dependencies and tests
Purpose of this commit is to add some first tests about rating and rating
mixin. Indeed those are not really tested by standard python unit tests.

In this commit we add tests about

  * rating preparation: token, information from the record to rate;
  * rating apply: posting message, author;

Task-2673913 (TestMail: Cleanup and improve test coverage)
Task-2704390 (TestMailFull: add first rating tests)

Part-of: odoo/odoo#86393
2022-03-24 13:57:36 +01:00
Thibault Delavallée 363f626a1b [IMP] test_mail_full: add performance tests
Purpose is to add some query counters tests in test_mail_full that allows to
test more complete flows. Soon portal and rating will be added as dependencies
to see their potential impact. This also serves as a basis for adding new
tests with all sub mail modules in a near future.

Task-2673913 (TestMail: Cleanup and improve test coverage)

Part-of: odoo/odoo#86393
2022-03-24 13:57:36 +01:00
Thibault Delavallée 41c3ed7693 [IMP] test_mail: add and improve posting tests
PURPOSE

Cleanup and improve post-related tests. As composer and posting methods will
soon be improved better ensure we don't break flows.

SPECIFICATIONS

Cleanup tests added for message_post and the related API (notify, log, with
view or template, ...) as well as sub-methods (notify, recipients computation
and classification, ...).

Use existing tools, reorder and add some details check on content. Add some
tests with attachments, notably with main_attachment management.

Task-2673913 (TestMail: Cleanup and improve test coverage)

Part-of: odoo/odoo#86393
2022-03-24 13:57:36 +01:00
Thibault Delavallée 94ab6963cf [IMP] test_mail: add and improve tests for composer
PURPOSE

Cleanup and improve composer-related tests. As composer will soon be improved
better ensure we don't break flows.

SPECIFCIATIONS

Cleanup existing tests: rename, make it use tools, reoder them.

Add some tests about composer in order to better spot changes and differences
as well as to help debugging mail composer code update. Notably add tests
with Form tool, add tests for reply-to computation, auto-delete, mail server.

Performance tests about composer are added, notably using the Form tool. This
helps determining differences between creating / manipulating a composer in
code and in UI. Indeed notably onchange and some side effects may lead to
different query counters, which is the case as highlighted here. Tests
involving attachments are also added to see their impact on posting process.

Task-2673913 (TestMail: Cleanup and improve test coverage)

Part-of: odoo/odoo#86393
2022-03-24 13:57:36 +01:00
Thibault Delavallée bf508a808e [IMP] test_mail: add multicompany test models
PURPOSE

Purpose of this commit is to add a company field on test mail models used to
replicate ticket / project behavior (``mail.test.ticket`` and ``mail.test.
container``).

SPECIFICATIONS

To avoid messing with existing tests and ease comparison through all Odoo
versions (notably performance) this is done by adding new models inheriting
from current mail models. A company_id field is added as well as MC rules.

Those models will be used to add tests for mail thread behavior in a multi
company environment (aliases management, performance, emails and notification
layouts, ...).

In this commit we also update ACLs for ticket-like models to add rules for
portal users, based on followers. This mimics classic rules from Odoo used
notably in a light project-like environment. This allows to test a bit more
in details recipients, access tokens, links in emails, ...

Task-2673913 (TestMail: Cleanup and improve test coverage)

Part-of: odoo/odoo#86393
2022-03-24 13:57:35 +01:00
Thibault Delavallée d895f3514e [IMP] test_mail: add tests for mail failure management
PURPOSE

Add tests related to mail failure management and its effect on mail.mail
and related mail.notification records.

SPECIFICATIONS

Test wrong configurations when sending emails (email_from, email_to) and/or
use mocks to enable sending issues (SMTP issues, Memory errors, assertion
errors, ...) that may happen when sending emails.

Add unit tests for as much use cases as possible to assert current behavior
even if some tests show that it is not always accurate. Notably

  * invalid / missing email failure types that are not correctly distinguished
    even if it should;
  * email_from invalid value goes a bit incognito;
  * sometimes mail is marked as sent even if it was not sent;

Future commits will (probably) fix or improve behavior while impacting as
less as possible the global behavior of the outgoing gateway that is quite
tricky to modify.

Task-2673913 (TestMail: Cleanup and improve test coverage)

Part-of: odoo/odoo#86393
2022-03-24 13:57:35 +01:00
Thibault Delavallée e31504f3a3 [IMP] test_mail: make performance test use standard mail test class
PURPOSE

Improve tooling of mail tests. Lessen custom code, try to use same tools
in all tests.

SPECIFICATIONS

Use MailCommon as a base class for performance test. It now uses the same
boilerplate as other tests, leading to easier to reproduce and understand
testing setup.

This notably now adds outgoing mail servers which means adding one query
to some tests involving emails.

Task-2673913 (TestMail: Cleanup and improve test coverage)

Part-of: odoo/odoo#86393
2022-03-24 13:57:35 +01:00
Thibault Delavallée 6d166d6088 [IMP] base, mail_*: use MockSmtplibCase and improve tests tooling
mail_* = mail, test_mail, test_mail_full, test_mass_mailing

PURPOSE

Improve tooling of mail tests. Use SMTP mockup class available in base tests
in mail tests to have a better and simplified mock tool when dealing with
mail tests. Remove old fashioned code.

SPECIFICATIONS

Include ``MockSmtplibCase`` directly into ``MockEmail`` so that we re-use
existing components for mocking outgoing emails. Also make parameters for
gateway coherent between those two classes (use same test values).

Remove 'sim_error' weird parameter of Mail ``mock_mail_gateway`` and use
standard mock 'side_effect' instead in some specific tests, notably on
SMTP.connect() mock.

Add some assert / tools method and improve existing tools, used for creating
or improving test data. This will be used in future commits when adding new
tests.

Add outgoing mail servers data in mail tests, allowing to make tests closer
to real life use cases.

Remove unnecessary calls to ``_init_mail_gateway`` as it is automatically
done in ``MailCommon.setUpClass()``.

Try to consolidate starting test data, notably with countries, phone numbers
or email in mind to be sure test mail are deterministic.

Task-2673913 (TestMail: Cleanup and improve test coverage)

Part-of: odoo/odoo#86393
2022-03-24 13:57:35 +01:00
Thibault Delavallée c2fd9a4965 [IMP] (test_)mail: allow attachment propagation in all activity feedback methods
Activity-level feedback method accepts attachment_ids but not its mixin-level
counterpart. This commit fixes that by adding the parameter. The activity-level
action_feedback_schedule_next method now also accepts attachments in addition
to the feedback, making the API coherent through all entry points.

At activity level ``action_done`` now goes through ``action_feedback``. This
means it now has two main methods
  * ``action_feedback``;
  * ``action_feedback_schedule_next``;

All methods finally end up calling ``_action_done`` and correctly propagate
feedback and attachments. We have a bit less entry points with possible API
changes.

Test mail models are updated to be able to use this small addition.

Task-2710804 (Mail: Clean MailThread API)

Part-of: odoo/odoo#86393
2022-03-24 13:57:34 +01:00
Thibault Delavallée 9c144ab432 [FIX] portal, website_crm_partner_assign: fix access action from mail
Two lines have been inverted in ``_get_access_action`` override, leading
to access rights not being correctly checked. This currently leads customers
with token to land on portal without token, which is not the expected
behavior.

Followup of odoo/odoo@a018735

closes odoo/odoo#86646

X-original-commit: dd7d60aca8718763aaa211e138f684d8797f5d8c
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-18 12:26:36 +01:00
Thibault Delavallée 76b8d8f550 [REV] account: remove mail performance tests
Query counter tests related to account composer are actually dependent on
l10n due to extra queries, related to account.move fields and/or COA
specific code. Moreover some COA might skip or delay the sending, leading to
emails not being sent.

Purpose would be to run those tests only with generic_coa. Those tests will
be moved and improved soon, removing it currently to avoid frictions with
L10N builds.

This reverts odoo/odoo@d0e0db3b8e

closes odoo/odoo#86540

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-16 23:22:43 +01:00
Thibault Delavallée a0a991d08f [REM] calendar_sms: remove unnecessary rule
A duplicate of SMS rule for SMS template model for admins exist in calendar_sms
application.

Followup of odoo/odoo@23c82340c1 that broke some rule and was fixed with
odoo/odoo@13bf64b376 where a dummy rule was used to avoid removing data
in stable.

We can now remove some useless rule data.

closes odoo/odoo#86254

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-14 17:28:27 +00:00
Thibault Delavallée 11d44b9062 [IMP] account, website_sale: improve docstrings / notes
Purpose is to cleanup some remaining notes in code to better know some cleaning
is long awaited, planned but still not in WIP. Brol is not a recognized word
in the whole world. Also add some query counters explanation as counters are
a bit different depending on accounting, community and enterprise runs.

Part-of: odoo/odoo#86254
2022-03-14 17:28:26 +00:00
Thibault Delavallée d0e0db3b8e [IMP] account: add performance test on account invoice send wizard
Just have some numbers before working on composer onchange removal and see
its impact.

Task-2789182 (Account: Invoice send performance test)
Prepares Task-2088884 (Mail: Composer onchange removal)

closes odoo/odoo#85902

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-08 16:48:42 +00:00
Thibault Delavallée 3dd09d63fc [FIX] crm: update counter for rare extra queries on runbot
Still having sometimes a test failing due to extra queries...

closes odoo/odoo#85929

X-original-commit: 34eebe66f12bf43dbf7c16800e177907fe39f2ba
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-07 12:36:17 +00:00
Thibault Delavallée 1fb856a980 [UPD] various: update query counters (and comments)
Purpose is to update counters according to current runbot's state. This eases
checking impact of future performance improvements done.

Task-2631088 (Appointment: profile and add performance tests)

closes odoo/odoo#85838

X-original-commit: b0c7a6397526ad2698fac0701e4323c019ea8bf6
Related: odoo/enterprise#25002
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-07 10:41:47 +00:00
Thibault Delavallée 8772e71b04 [FIX] mail: fix trailing comma
Die, you commies ! You wouldn't bear our mighty OdooTrailingComma force !

closes odoo/odoo#85864

X-original-commit: 1be8592c160d69c630efcd312a7603cf1d8c1359
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-04 21:12:42 +00:00
Thibault Delavallée 927ec3a999 [FIX] mail: fix MailMail failure type naming when sending
Followup of odoo/odoo@c178a7829f where a failure type renaming was badly
propagated. This commit fixes failure type naming allowing to correctly
distinguish a missing email from an invalid email.

Task-2684479 (Mail: Better send error storage and display)

X-original-commit: 1a08b3f4b3aa849549783348c51c393a1f84a409
Part-of: odoo/odoo#85864
2022-03-04 21:12:41 +00:00
Thibault Delavallée a740bdd7f8 [IMP] mail: remove unnecessary indexes on composer model
Those indexes probably come from previous implementation of composer model
when it was inheriting from mail.message. It was also inheriting from the
custom search / read manual ACLs implementation doing some SQL directly to
check access. Those indexes should not be necessary anymore as anyway this
is a transient model.

Prepares Task-2088884 (MailComposer: Onchange to editable computed stored)

closes odoo/odoo#85841

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-04 15:00:58 +00:00
Thibault Delavallée 81e782250a [IMP] base: remove postmaster-odoo default bounce
Coming from odoo/odoo@a4597fe34f . This code is not necessary anymore since we better
handle From, SMTP-From, as well as allowing mail server filtering. We can
now use standard aliases and servers instead of relying on hardcoded value
"postmaster-odoo".

Task-2784996

closes odoo/odoo#85837

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-03-04 15:00:54 +00:00
Thibault Delavallée 1af6dfe47b [IMP] website_slides: add a standard publisher tour
Purpose of this commit is to add a publisher tour in standard that is not
only run using external tags. Indeed external tours are not monitored and
previous commits show that they can be broken since a long time.

In this commit we somehow copy the publisher tour with an article-based
slide instead of a video slide. That way it can be launched with other
standard tours.

Task-2780920 (eLearning: fix publisher tour)

Part-of: odoo/odoo#74171
2022-02-28 11:07:41 +00:00
Thibault Delavallée 7a5e81f9e1 [FIX] website_slides: fix publisher tour
Not sure how it was working before anyway.

Task-2780920 (eLearning: fix publisher tour)

Part-of: odoo/odoo#74171
2022-02-28 11:07:41 +00:00
Thibault Delavallée 3ccd903b5f [FIX] website_slides: fix tour using image selector
Since "I don't know" image selection tour is broken as the current image
selector is quite different from the time this tour was run. Update it to
use an external URL as it seems we don't have any default image anymore.

Task-2780920 (eLearning: fix publisher tour)

Part-of: odoo/odoo#74171
2022-02-28 11:07:40 +00:00
Thibault Delavallée fb83d30290 [FIX] website_slides: fix tour with video URLs
Followup of odoo/odoo@7b5427f6d6 where a frontend form was updated but
not the tour using it.

Task-2780920 (eLearning: fix publisher tour)

Part-of: odoo/odoo#74171
2022-02-28 11:07:40 +00:00
Thibault Delavallée 7cc7800e78 [FIX] website_slides: fix new content used in tour
Followup of odoo/odoo@60fadfeaf6 where navbar was updated to be responsive.
However that broke eLearning tours. Youpie.

Task-2780920 (eLearning: fix publisher tour)

Part-of: odoo/odoo#74171
2022-02-28 11:07:40 +00:00
Thibault Delavallée c1ab7ae88a [FIX] website_slides: fix youtube video usage
Linked video is not reachable anymore on youtube. Let us replace it by
another great video.

Task-2780920 (eLearning: fix publisher tour)

Part-of: odoo/odoo#74171
2022-02-28 11:07:40 +00:00
Thibault Delavallée e50bc749f6 [IMP] base: support decimalized in integer qweb formatting
Purpose of this commit is to allow decimalized formatting of numbers when
rendering integer fields in qweb. This is done through an option and will
be used notably in elearning.

Task-2607416

Part-of: odoo/odoo#74171
2022-02-28 11:07:39 +00:00
Thibault Delavallée 2a3d8dd1c2 [MOV] various: move ir.qweb.fields code into right files
When working on qweb fields it is difficult to find some custom override as
they are never in the right file. Finding them is always a bit of random pick.

Task-2607416

Part-of: odoo/odoo#74171
2022-02-28 11:07:39 +00:00
Thibault Delavallée 924ca810ef [IMP] website_slides: add views and access for slide progress
Purpose of this commit is to have access to slide.slide.partner model that
holds member progress on specific slide. It is used notably to build completion
on slide.channel.partner or to store vote data. It is interesting to have
access to it to have some detailed informations.

It is now reachable through the "attendees" smart button that replaces the
'views' button. Public / other views are moved in slide details as those
buttons do not add much to the slide usability.

Task-2607416

Part-of: odoo/odoo#74171
2022-02-28 11:07:38 +00:00
Thibault Delavallée 1bcd34ea6b [REF] website_slides: cleanup membership fields
Purpose of this commit is to finalize the cleanup of current user's membership
on a given slide.

As a followup of odoo/odoo@8b2f887c29 we remove now dead ``_compute_user_info``
method. We also introduce a shortcut to ``user_membership_id.sudo().completed``
by adding its computation directly while computing user_membership_id as well
as user_vote. It allows to remove some sudo on user_membership_id.

Task-2607416

Part-of: odoo/odoo#74171
2022-02-28 11:07:37 +00:00
Thibault Delavallée c0d56da9b0 [IMP] website_slides: quickly lint tests
Purpose is to make a quick reordering / linting of tests while passing by.

Task-2607416

Part-of: odoo/odoo#74171
2022-02-28 11:07:37 +00:00
Thibault Delavallée 83d2affbe9 [MOV][FIX] rating: move rating values, thresholds and converters into a single file
Purpose is to try to have a single entry point when dealing with rating
values. Also fix incoherency introduced with odoo/odoo@32ba417549 where grades
are not coherent in all computation. This new computation seems better as
bad is now limited to <= 1 everywhere.

Task-2728564

Part-of: odoo/odoo#82792
2022-02-22 19:47:52 +00:00
Thibault Delavallée c04e0fa10a [MOV] rating: split rating mixin
It currently holds two different mixins. Let us split it into two files in
order to have a file per model. Also a quick reordering of rating model is
performed just to sort a bit things

Task-2728564

Part-of: odoo/odoo#82792
2022-02-22 19:47:52 +00:00
Thibault Delavallée d44e6a5ab7 [FIX] sale_management: fix wrong domain in search
Followup of odoo/odoo@f448b3314e

closes odoo/odoo#84763

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-02-17 08:10:23 +00:00
Thibault Delavallée 766e0c98c4 [IMP] website_crm_partner_assign: use read_group for computed fields
PURPOSE

Improve performance in often used views and fields in a normal Odoo usage.

SPECIFICATIONS

On res.partner model in website_crm_partner_assign, convert the computed field
``_compute_implemented_partner_count`` to use read_group. Performance test
have shown it could be costly.

Also rename ``implemented_count`` to ``implemented_partner_count`` to better
match ``implemented_partner_ids`` naming.

Task-2752043

Part-of: odoo/odoo#83806
2022-02-15 10:25:58 +00:00
Thibault Delavallée 82f3ee064c [MOV] website_crm_partner_assign: split models and views into separate files
Give a little coup de jeune to this module by reorganizing models and views
into separate files.

Task-2752043

Part-of: odoo/odoo#83806
2022-02-15 10:25:58 +00:00
Thibault Delavallée 5664ee04f4 [IMP] crm: remove outdated fields
PURPOSE

Improve performance in often used views and fields in a normal Odoo usage.

SPECIFICATIONS

On crm.lead model

  * remove field user_email and user_login fields. Those are related non stored
    and used in kanban for no reason (or even not used). Those can be removed
    completely;

Original commit seems to be odoo/odoo@ea2e8b64c4 which seems to show those
fields were added to add a gravtar based on user email, and its login was used
to display "responsible". Maybe an internal Odoo related spec, anyway not used
anymore.

Task-2752043

Part-of: odoo/odoo#83806
2022-02-15 10:25:57 +00:00
Thibault Delavallée ef9429231c [IMP] various: update query counters
Notably after odoo/odoo@f9442f47eb query counters are heavily impacted
and a lot of them has lessened.

closes odoo/odoo#83832

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-02-02 18:14:54 +00:00
Thibault Delavallée bc9943f188 [FIX] test_mail: re-add groups for notification, allowing bw tests
To ease comparisons for query counters let us try to keep the same test flow
through v15+. We therefore now also compute recipient groups for portal users
for some test models, like before odoo/odoo@faeb5e7fee .

Part-of: odoo/odoo#83832
2022-02-02 18:14:54 +00:00
Thibault Delavallée f9736c0238 [FIX] website_sale/forum: fixup renaming
Somehow a naming update was not correctly applied in all files.

Followup of odoo/odoo@faeb5e7fee

Part-of: odoo/odoo#83832
2022-02-02 18:14:54 +00:00
Thibault Delavallée fa477a21f9 [FIX] sale: do not create activities on transient records
Oversight of odoo/odoo@cd885ad2cd . On transient record (having newID) this
line leads to creating activities with res_id being 0.

Part-of: odoo/odoo#81292
2022-02-01 13:38:49 +00:00
Thibault Delavallée 04ef6bee10 [IMP][FIX] mail, mass_mailing: add constraint for required res_id
Activities and mailing trace are linked to documents through a model and
a many2one reference field. The latter one is required but is implemented like
an integer field, meaning writing 0 is actually a valid value for 'required'.

In this commit we add a constraint to ensure we never update activities with
a void res_id value. Same for mailing traces. This allows to remove the
required attribute on fields to avoid having redundant sql constraints.

Source: internal feedback about activities with 0 as res_id

Task-2694133

Part-of: odoo/odoo#81292
2022-02-01 13:38:49 +00:00
Thibault Delavallée 5aa0580531 [IMP] mail, various: add subtitle to notification layout
PURPOSE

Allow to somehow decorate notification emails headers with a subtitle holding
the record name and some main informations.

SPECIFICATIONS

Next to access button in "Pay Now" notification email, display a subtitle
for some of the main "Send by email" based email flows. It should be something
like 'Invoice REF/01 \n35€ due 11/2022' for account.move or equivalent for
sale.order models.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:35 +00:00
Thibault Delavallée 83a0df8693 [IMP] base: add a default signature on users
When creating a new user, add a default signature if none is given. It
should be a simple one like

```
--
<user_name>
```

Implement it using an editable computed field based on name. That way users
can set it explicitly as void, but changing user's name sets a default one
when it is not set.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:35 +00:00
Thibault Delavallée f879cf2867 [IMP] sale: give followers links in notification emails
In this commit we get the old "Pay Now" behavior back that gives a standard
link to followers. It is done manually on sale order as it implements portal
rules. Follower group for notification layout is therefore activated.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:35 +00:00
Thibault Delavallée 876ecb48aa [IMP] mail: lessen default email notification groups
Purpose of this commit is to add potential groups but de-activate them by
default. Indeed each group require about 20 queries for rendering and
sending. If no specific behavior (access button, content) is made for this
recipient group it can be included in lower-version of the group.

Specifications

  * de-activate portal group in mail as it has no additional rights compared
    to customers;
  * add follower group but de-activate it for the same reason;
  * activate portal group in portal_mixin and include links to the record in
    notification emails, using standard mail/view link. ACLs are managed in
    each specific model, generally based on followers;

Update a test in test_mail as it was playing with public and portal users
that are now not really differentiated when sending notification emails.
Better have more real-life scenarios with portal and internal users.

Task-2739294 (Mail: Batch recipients fetch and improve its usage)

Part-of: odoo/odoo#82167
2022-01-31 17:47:34 +00:00
Thibault Delavallée a62927e7e2 [REF] mail: improve recipients computation
Purpose of this commit is to improve notification recipients computation.

Code cleaning

  * make it batch enabled. Currently it works only for a single record. It
    should evolve towards real multi computation, allowing to prepare post
    and notification in batch;
  * better manage multi users. Now when several users are linked to the same
    partner, we try to find an internal user or fallback on share user. This
    is cleaned compared to a distinct done previously;
  * support recipients without subtype (pids + records) as a new case to
    include follower computation;

Improvements

  * include follower status if linked to records (is_follower can be used
    notably in link computation to redirect to the portal);
  * fetch partner lang directly in the SQL query. While fetching partner data
    let us add its lang. That way it will be easier to improve lang support
    in layouts;

Task-2739294 (Mail: Batch recipients fetch and improve its usage)

Part-of: odoo/odoo#82167
2022-01-31 17:47:34 +00:00
Thibault Delavallée d44a535579 [IMP] mail: add constraint at db level for partner / message notification
Add a constraint directly at db level ensuring no duplicated notification
exist on partner / message pair, if partner is set. Partner can be void notably
with SMS notification process which may target numbers directly.

Task-2710804 (Mail: Clean Mail.Thread API)

Part-of: odoo/odoo#82167
2022-01-31 17:47:34 +00:00
Thibault Delavallée e401ec18ad [IMP] auth_signup: remove colored background on emails
Purpose is to have a white background like templates used in SO, invoices, ...

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:34 +00:00
Thibault Delavallée 0c3ee2401c [IMP] website_sale: improve recovery email layout
Purpose is to remove custom styling and use the 'Pay Now' notification layout.

Extra table is removed from template body (table with order name, 'sent by'
footer, ...) and only main content is kept. Some extra padding is removed.
Action now uses the 'Pay Now' email layout to add the access button, company
logo, footer, ... meaning it is now more standard.

An override of recipient groups and access button is also performed in order
to align header with email purpose. Link redirects to the /cart page (instead
of classic portal SO view for customers) and is labelled as 'Resume order'
(instead of 'Validate and Pay Order' used in portal).

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:34 +00:00
Thibault Delavallée 75979fccdf [REF] mail, *: improve 'pay now' notification template
* = sale, purchase

PURPOSE

Purpose of this commit is to improve the 'Pay Now' notification template
used notably when using the "Send by email" button on

  * invoices
  * sale orders
  * RFQ and purchase orders

SPECIFICATIONS

Global specifications

  * remove gray background that is around the white content (aka have an
    email with an uniform white background);
  * move button on top of email like other notification templates (top-left
    and company logo is top-right);
  * fix various small wording issues;
  * fix signature usage;

Technical specifications

Remove custom definition of access links and labels in 'Pay Now' notification
template (``mail_notification_paynow``). It is now done at model level through
the ``_notify_get_groups`` that is generic to notification emails. This allows
to remove QWeb override in purchase and sale notably. Displaying access links
is now controller by the ``has_button_access`` value. Model computes links,
access and labels while view only displays what is requested. That way any
template can use those values instead of being defined in a template subject
to user changes.

Sale / Purchase

Overrides of those modules is not necessary anymore since button labelling
and URLs are managed at model level.

Purchase "specific" buttons for Accept / Update dates are now email layout
actions, like used in other modules like HR or Project.

Continuation of odoo/odoo#76418 .

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:33 +00:00
Thibault Delavallée 8ebef14256 [REF] mail: remove unnecessary layout field on composer
This field is a duplicate of email_layout_xmlid and is actually never used.
Followup of odoo/odoo#76418 .

Task-2732660 (Mail: Remove duplicate layout field on composer)

Part-of: odoo/odoo#82167
2022-01-31 17:47:33 +00:00
Thibault Delavallée bf6c805b66 [FIX] mail, *: add signature in email layouts only if requested and set
* = account, purchase, sale

Purpose of this commit is to add signature only if really asked. A variable
is available for that purpose (``email_add_signature``, recently renamed from
``add_sign``). We also correctly check signature is not void or pseudo-void
using tool ``is_html_empty``. Indeed editor may generates pseudo-void content
like ``<p><br /></p>``.

As signature is not added when a template is used (see composer code) we ensure
it is defined in mail templates used in "Send by email" flows. Indeed we cannot
know if a template already has a signature or not. To avoid having twice a
signature no signature is added in email notification layout when a template
is involved.

Continuation of odoo/odoo#76418 .

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:33 +00:00
Thibault Delavallée b78344f99c [REF] mail: rename 'add_sign' fields
In order to make fields a bit more explicit, let us rename "add_sign" to
"email_add_signature". It indicates it is linked to the email notification
process, adding the signature depending on the notification layout itself.
This is done on both mail.message and mail.compose.message models. It is
also updated as rendering value parameter used in notification emails.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:33 +00:00
Thibault Delavallée a018735ec4 [REF] base, mail, various: make get_access_action private and explicit
Purpose of this commit is to make ``get_access_action`` private as it is not
necessary to expose it directly. Website management is also made explicit
using a ``force_website`` parameter instead of relying on context key of the
same name. This allows to better understand the method code flow.

Contains also some code fix / improvements :

  * Website forum: update code to better skip the frontend redirection if the
    forum is not active and frontend is not forced;
  * Website slides: respect force website parameter in redirection;

Task-2710804 (Mail: Clean Mail.Thread API)

Part-of: odoo/odoo#82167
2022-01-31 17:47:32 +00:00
Thibault Delavallée ef7e6009f8 [FIX] mail: remove unnecessary model decorator
A method that actually runs on recordsets should not have a model decorator.
Even if there is no issue this is may be confusing.

Task-2710804 (Mail: Clean Mail.Thread API)

Part-of: odoo/odoo#82167
2022-01-31 17:47:31 +00:00
Thibault Delavallée 271859b552 [FIX] mail: support portal redirection in _notify_get_action_link
Purpose is to support portal parameters in ``_notify_get_action_link``. This
method generates a ``mail/view`` link that may redirect to frontend e.g. with
portal. We already support parameters coming from auth_signup and tokens from
portal. Supporting pid / hash allowing to post on documents using the frontend
chatter is the next step to generic links. This is just adding them to the
accepted like, not changing any current behavior.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:31 +00:00
Thibault Delavallée ccc35f5ab6 [FIX] mail: fix issue when computing `_get_recipient_data`
If we call ``MailFollowers._get_recipient_data()`` with pids parameter being
set to None there is a crash that is easily solved( list(None), should take
list fallback before hand).

Task-2739294 (Mail: Batch recipients fetch and improve its usage)

Part-of: odoo/odoo#82167
2022-01-31 17:47:31 +00:00
Thibault Delavallée 2ad668d578 [IMP] (test_)mail: add tests for recipients computation on notify
Purpose of this commit is to add tests for recipients fetch. Purpose is to
assess current behavior before going into some cleaning or refactoring.
Notably when dealing with

  * forced recipients (pids, aka 'additional recipients' in composers);
  * subtype-based computation (internal, subtype follower);
  * multi-users per partner (notably as a result of partner merge);

Future improvements will modify this method. Adding some low level tests
for it will ease development and checking differences.

Some tests are also regrouped in the same test class to lessen noise.

Task-2739294 (Mail: Batch recipients fetch and improve its usage)

Part-of: odoo/odoo#82167
2022-01-31 17:47:31 +00:00
Thibault Delavallée 86db4f56c8 [IMP] (test_)mail: add tests for translation of notification layout
Purpose of this commit is to add tests for language-based tweaks of email
notification layouts and composer usage. Purpose is to assess current
behavior before going into some cleaning or refactoring. Notably

  * check layout content is translated;
  * check "view document" button is translated;
  * check action buttons are translated;
  * check content based on templates is translated;

This is currently mainly available through the "lang" context key being
correctly set. Partial support of translations when posting based on template
is tested (content and model description but not notification layout).
Failing support in mass mail mode is tested. Future improvements will be
done in order to improve language support.

Note that ``MailTemplate.send_mail()`` email sending method language support
is tested in ``test_mail_template`` file. Those tests are updated to share
a common base with new tests about language setup.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:30 +00:00
Thibault Delavallée 3eb9680602 [REF] mail: improve propagation and setup of render context when posting messages
PURPOSE

Purpose of this commit is to cleanup flow of values going through message_post
and its sub methods until email generation for notifications.

SPECIFICATIONS

Ensure some values are given directly when creating message linked to post
methods to avoid browsing message when value is not known. Notably make
signature propagation (add_sign) more explicit in message_post and its sub
methods (notify, log, ...).

Prepare future language related improvements by allowing to force company and
lang values for rendering context. Also add ``is_html_empty`` tool method to
use it in notification templates. It will be used notably to check for empty
html blocks, e.g. user signature.

Rename some internal variables to better understand their purpose.

Finally update some outdated and/or badly indented docstrings.

Task-2726501 (Mail: Propagate message values in post methods)

Part-of: odoo/odoo#82167
2022-01-31 17:47:30 +00:00
Thibault Delavallée 517df26613 [REF] mail: cleanup notification email values generation
PURPOSE

Purpose of this commit is to clean notification email values generation
while keeping possibility to override and tweak values. It now has clean
hooks on base mail value and final mail values.

SPECIFICATIONS

Base mail value are values independent from recipients. It allows notably
to tweak values depending on current record without having to browse and
access record for every recipient, saving unnecessary computation.

Final mail values are recipients-dependent and are the values that will be
use to create the final ``mail.mail``. With a mechanism of optional additional
values + hooks for base and final values it should be possible to keep any
custom behavior already implemented with a cleaner interface and code flow.
See notably odoo/odoo@b1a5bf95f8 for example of why some code exist just
for hook purpose.

As a side note, light variable renaming is performed (email -> new_email)
to avoid shadowing email.

Task-2710804 (Mail: Clean Mail.Thread API)

Part-of: odoo/odoo#82167
2022-01-31 17:47:30 +00:00
Thibault Delavallée 1f7c83cc3e [REF] mail, various: clean thread _notify API
PURPOSE

Global purpose is to rename some methods and add some docstrings to clean
API of notification methods used in mail thread. Notably use _notify_thread
prefix for main methods, and _notify_by_'mean' for tool sub-methods.

SPECIFICATIONS

Remove unused arguments coming from old implementation and usage. They were
introduced notably for performance reason when cache was more often invalidated
which is not the case anymore. Anyway when parameters are unused it is always
better to remove them.

Remove ``notify_by_email`` parameter in ``_notify_thread``. It is only used
in channels to avoid notifying people of some automated notifications. The
same behavior has been cleanly implemented at odoo/odoo@018820d .

Rename methods, starting with ``_notify(_records)`` to ease their grouping
and understanding. Add some additional prefixes like ``_notify_by_'mean'``
and ``_notify_get_recipients`` for recipients related computation. Add some
docstrings, notably when parameters usage is not clear.

Some linting is also performed in updated actions, just to lessen styling
issues notably on runbot.

This commit should not change anything functionally as it contains only
some renaming and docstrings updates as well as some outdated parameters
removal.

Task-2710804 (Mail: Clean Mail.Thread API)

Part-of: odoo/odoo#82167
2022-01-31 17:47:30 +00:00
Thibault Delavallée 0b952df5e0 [MOV] account, purchase: move thread code in its own section
Purpose is to better isolate MailThread related methods in those huge files
containing lot of code. Better have them located in a sub-section in order
to have all mail code at the same place.

Task-2710804 (Mail: Clean Mail.Thread API)

Part-of: odoo/odoo#82167
2022-01-31 17:47:29 +00:00
Thibault Delavallée 07fb346919 [IMP] various: update counters
Update some counters at latest runbot results, just to have updated counters.
Note that some counters are somehow not deterministic, hence not updating
everything.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82167
2022-01-31 17:47:29 +00:00
Thibault Delavallée 7bd5b64f67 [MOV] utm: split data and demo in different files
Purpose
=======

This commit cleans the UTM module and uses a different file for each model
data and demo in order to clarify organization and ease reading. Each model
owns its own demo and data file. Security file is reorganized per model.

Task-2245823

Part-of: odoo/odoo#83070
2022-01-20 10:06:47 +00:00
Thibault Delavallée 7db596fdb2 [MOV] utm: split views in different files
Purpose
=======

This commit cleans the UTM module and uses a different file for each model
views in order to clarify organization and ease reading. Each model owns its
own view file.

Task-2245823

Part-of: odoo/odoo#83070
2022-01-20 10:06:47 +00:00
Thibault Delavallée 93c226be41 [REF] website_crm_partner_assign: change conflicting method naming
``get_portal_url`` is already used in portal mixin. As we are in a side
module doing things not really related to portal mixin let us inline it
directly as it is used only once anyway. Indeed this method does not give
any portal url just a base url with a db parameter, used afterwards to let
people connect to the db.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

closes odoo/odoo#82627

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-01-14 16:37:46 +00:00
Thibault Delavallée e7b40e783a [FIX] sale: clean unnecessary portal/access code
Override of ``get_access_action`` in sale_management is useless. Indeed
it redirects to the portal when

  * there is an order template;
  * user is share OR force_website is in context;

This override calls ``get_portal_url``. This method basically crafts link like
``access_url?access_token=TOKEN`` as no other argument is given to portal
url computation method.

Using the standard ``get_access_action`` gives the same result. When having
read rights on the record (which is implied for current code), portal override
already calls ``_get_share_url``. Moreover portal version effectively checks
requested access_uid has read access while current override uses current user
which may lead to strange results depending on call chain.

Removing this kind of override simplifies management of notification emails
and buttons, especially that "Pay Now" template is about to be cleaned.

This notably partially reverts odoo/odoo@b49da62365 and some other commits. Those
are anyway linked to mails sent when sale did not have its portal available
directly from sale as portal was a side module. Website quote was adding its
own portal-related logic (accept and pay). All this is now standard in sale
and it makes sense to use standard ``get_access_action`` code when possible.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82627
2022-01-14 16:37:46 +00:00
Thibault Delavallée 139e900276 [FIX] purchase: fix inherit order of portal and mail thread
Having portal inherit added after mail thread prevent from really entering
portal overrides of mail.thread methods due to Odoo LRU implementation of
inherit. Notably group computation for email is not called in portal. This
means notably access tokens are not always available in notification emails.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82627
2022-01-14 16:37:46 +00:00
Thibault Delavallée 6aa3a88190 [FIX] portal, various: give access to portal in customer emails by default
Records inheriting from portal mixin implement their own access to portal
using tokens. Activating the access button by default seems the right thing
to do instead of having to do it manually in each addon. Access is granted
at record level using tokens and access URLs anyway.

This eases future improvements of "Pay Now" notification template as it
will use the ``has_access_button`` instead of doing custom computation
directly in the template itself.

Task-2712450 (Mail/Sale: Improve 'Pay Now' notification template)

Part-of: odoo/odoo#82627
2022-01-14 16:37:45 +00:00
Thibault Delavallée 37db926fe8 [REF] various: remove usage and dependency on html2text library
We have our own html2plaintext, already used in lot of use cases instead of
just a few for the html2txt library.

Notably for emails: most emails going through Odoo stack use our simple
html2plaintext to format the body alternative. When no body alternative
is given to ``build_email`` an alternative is built using the library to
remove. Using our own parser allows to have the same results compared to
using ``MailMail.send()``. Difference lies in spaces and new lines as well
as markdown. Our html2plaintext is a bit simple and does not try to generate
Markdown but generates a simple plaintext version.

This also helps solving some issues with depending on that library.

Task-2702034

closes odoo/odoo#82486

X-original-commit: b3b9627b655cd7cb928925affed6cc8d92661e8d
Related: odoo/enterprise#23364
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-01-12 16:43:16 +00:00
Thibault Delavallée be878f5d6a [IMP] base: test body alternative done in build_email
Purpose of this commit is to add some tests about body alternative done
in build_email when none is given. It uses a library we are about to
remove and testing it is therefore necessary.

Task-2702034

X-original-commit: 92b102c87bbdb9073f794a414a41460e4146acd2
Part-of: odoo/odoo#82486
2022-01-12 16:43:16 +00:00
Thibault Delavallée 14bbac3f35 [FIX] base: temporary files were not correctly attached 2021-12-23 12:50:14 +01:00
Thibault Delavallée 25c4f406f7 [IMP] crm: avoid unnecessary partner update on convert
Currently when converting leads we may end up with False being compared to
a void partner recordset. Due to the use of != this leads to unnecessary
update of leads when no partner is involved in lead convert.

By comparing recordsets everytime we save queries and performance each
time a convert on a lead without customer is done. This leads to about
saving 150 queries in heavy duty tests.

Task-2722512 (Lead: performance in convert without customer)
Task-2722513 (Lead: performance master task)

closes odoo/odoo#81028

Related: odoo/enterprise#23094
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2021-12-24 14:57:03 +00:00
Thibault Delavallée 16561f042a [ADD] test_crm_full: test module for crm
Purpose of this commit is to add a base module holding tests for the whole
crm ecosystem. It notably holds currently performance tests, allowing to
track future improvements and changes.

Task-2720144 (Crm performance tests)
Also linked to Task-2703285 (Event performance improvements - event_crm)

closes odoo/odoo#81717

Related: odoo/enterprise#23046
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2021-12-21 20:20:50 +00:00
Thibault Delavallée b173dae36b [IMP] test_event_full: go post-install
In order to test performances let us be sure all modules are installed.

Task-2703289 (Event testing and coverage)
Preparing Task-2703285 (Event performance improvements)

Part-of: odoo/odoo#81717
2021-12-21 20:20:50 +00:00