Commit Graph
920 Commits
Author SHA1 Message Date
TWA 983c7e8152 [IMP] mail,crm,...: Replace occurences of name_get()[0][1] by display_name
Purpose
=======

display_name is equal to doing name_get()[0][1]

Replacing name_get()[0][1] by display_name could be good for 2 things:
- Uniformization of the code
- Probable optimization if name_get is used inside a for loop on a recordset (as the values will be prefetched and put in the cache).

TaskID: 1849250

closes odoo/odoo#26341
2018-10-09 11:28:00 +00:00
len-odoo a9ce28bfb1 [FIX] mail, mass_mailing: remove implicit dependency on mass_mailing
Fix to commit: a1d6064dcc
Which erroneously put a mass_mailing method in mail,
as mail.mail.statistics is defined in mass_mailing.
Since it does not depend on the records, it been extracted from the
loop.

opw 1890461

closes odoo/odoo#27431
2018-10-05 08:47:49 +00:00
Thibault Delavallée c7ad31f0a0 [IMP] blacklist: sanitize search terms on email
Purpose of this commit is to make search coherent with sanitize of emails
done when storing blacklist entries. We parse search terms in order to
find something related to email field and sanitize it to avoid issues
linked to case insensitivity or formatted addresses.

This commit is related to task ID 33224 (original blacklist implementation
done for v12) and its PR #25966 as well as task ID 1889703 (tests and fixes)
and its PR #27330. Done with collaboration of @dbeguin.
2018-10-02 16:52:33 +02:00
Thibault Delavallée 2b73bed880 [FIX] mail: correctly extract email from email field in computed blacklist fields
Purpose of this commit is to correctly extract email address from the email
field of models inheriting from the blacklist mixin. Indeed email field
could contain a formatted address like "Raoul Grosbedon <RAOUL@example.com>".
Related blacklist entry would be raoul@example.com. We have to extract
the email from the email field and lowerize it in the SQL query or the
computation in order to have a fully working blacklist mixin. This fixes
some bits left at commit 2ff9b379ef.

This commit is related to task ID 33224 (original blacklist implementation
done for v12) and its PR #25966 as well as task ID 1889703 (tests and fixes)
and its PR #27330. Done with collaboration of @dbeguin.
2018-10-02 16:52:30 +02:00
Thibault Delavallée bbe4690066 [FIX] mail: assert email field used in blacklist and correctly use it in computed fields
This commits fixes the use of email field in blacklist mixin as it was based
on 'email' field instead of the one coming from the _primary_email class
attribute since commit 2ff9b379ef.

This commit is related to task ID 33224 (original blacklist implementation
done for v12) and its PR #25966 as well as task ID 1889703 (tests and fixes)
and its PR #27330. Done with collaboration of @dbeguin.
2018-10-02 16:52:19 +02:00
Thibault Delavallée 5743122f60 [FIX] mail: ensure case insensitive check when (de)activating blacklist records
Now that blacklist records are set as lower case be sure all checks in
blacklist are done accordingly by using the sanitizer before comparing
email adresses.

This commit is related to task ID 33224 (original blacklist implementation
done for v12) and its PR #25966 as well as task ID 1889703 (tests and fixes)
and its PR #27330. Done with collaboration of @dbeguin.
2018-10-02 16:52:18 +02:00
Thibault Delavallée 7b0c502d60 [FIX] mail: ensure creation of unique emails in blacklist
Currently blacklist is configured to have unique emails. Notably when creating
new entries it checks for existing records with same email to avoid crashing
about duplicate entries.

However it does not check if given values use unique emails. When importing
a big list of emails you are not sure emails are unique. This commit ensures
values given to create are correct to avoid crashing when importing a lot
of data.

This commit is related to task ID 33224 (original blacklist implementation
done for v12) and its PR #25966 as well as task ID 1889703 (tests and fixes)
and its PR #27330. Done with collaboration of @dbeguin.
2018-10-02 16:52:18 +02:00
Thibault Delavallée 2f82b95dca [FIX] mail: insert only sanitized and lower-case emails in blacklist
Purpose of this commit is to standardize content of blacklist records and
ensure only real email addresses are stored.

We introduce a sanitize method to extract email address from string (like
Raoul Grosbedon <raoul@example.com> -> raoul@example.com) and return a
lower case version of it.

Purpose is to gradually get rid of lower() that appear a lot in the code
and speedup computation by being sure everything is always lower case.
Moreover indexing on blacklist model will be more performant is using
directly email field content instead of having to lowerize it.

This commit is related to task ID 33224 (original blacklist implementation
done for v12) and its PR #25966 as well as task ID 1889703 (tests and fixes)
and its PR #27330. Done with collaboration of @dbeguin.
2018-10-02 16:52:18 +02:00
XavierDo 82da171fcb [FIX] mail: add translation on guidelines subject 2018-10-02 13:40:12 +02:00
XavierDo 775e8a9f2d [FIX] mail: make guideline template a qweb view
The mail template mail_template_channel_send_guidelines should only be used
from send_guidelines action. Anyway, with mail_template on activity
and all demo done to show this mechanic on contacts,
trying to render this one will generate a traceback. This fix
transforms the mail_template to qweb view so that it won't be available in
mail template.
2018-10-02 13:07:02 +02:00
Yannick Tivisse 532d82a7a9 [IMP] mail: Make mail.compose.message code more readable
Purpose
=======

Remove the method 'render_template' in mail.compose.message as the indirection
is not useful. Call the method on the correct model (mail.template) directly.
2018-10-02 12:35:34 +02:00
Christophe Simonis dece365d52 [FIX] mail: avoid reading from abstract models 2018-10-02 11:12:15 +02:00
Christophe Simonis 43b63a0465 [MERGE] forward port branch saas-11.4 up to 57e387b645 2018-10-01 16:01:54 +02:00
David Beguin a8ce59ce36 [FIX] mail : Fix blacklist search method
As building a custom filter on 'Blacklist is false' is creating a filter '!= True'
instead of '= False', the assumption that operator must always be '=' is wrong.
This commit inverts the value and operator if the operator is '!='.

Fix for Task ID 33224
PR #27334
2018-10-01 14:21:19 +02:00
Christophe Simonis 998723b909 [MERGE] forward port branch saas-11.3 up to e980af9df0 2018-10-01 11:27:51 +02:00
Fabien Pinckaers feae553b98 [IMP] mail: typo, launched -> schedule 2018-09-30 15:54:41 +02:00
Olivier Dony 2ff9b379ef [FIX] mail: fix blacklist mechanism
Several quick fixes:

- repair malformed SQL queries and injection problems
- proper token comparisons (consteq)
- better translatable terms (less context-lessplaceholders)
- basic testing of case-(in)sensitivity of blacklist
- safety check for non-implemented cases in search methods for computed
  field

More testing and review is needed for case-sensitivity and email
extraction from generic "addressing fields".
2018-09-29 04:47:44 +02:00
Adrian Torres 3f4f77fd9d [REF] *: adapt code to new related default behaviour
This commit adapts the business code to changes introduced by
the parent commit in order to keep the same behaviour as before.

All readonly=False fields will have to be checked afterwards to confirm
that the business case requires write access to the source field.
2018-09-27 12:10:23 +02:00
Christophe Simonis 5f08d82bcd [MERGE] forward port branch 11.0 up to fd122aec52 2018-09-26 19:37:29 +02:00
len-odoo 09340bb7f0 [FIX] mail: set the thread_id when creating a new thread
After a refactoring for v11, the id of a newly created thread is not returned
anymore.
Therefore server actions weren't being executed on newly created records.

opw 1886383

closes odoo/odoo#27238
2018-09-26 08:36:14 +00:00
Olivier Colson 5c6673c462 [REF] mail: set message_main_attachment_id in message_post_after_hook function instead of directly in message_post
This kind of pos-processing should always be done in the hook method.
2018-09-21 13:10:16 +02:00
Nimesh Jethva dae97ee5f0 [IMP]mail_*: Improvement in model description
Purpose of this commit is to give description more "business oriented"
because those descriptions appears in Odoo Studio which is supposed to be used by end users, not only by developers.

Related Task ID : 37311
2018-09-21 11:45:15 +02:00
XavierDo 05749032b3 [FIX] mail: order columns in activity view
The columns should be sorted by sequence in activity view
2018-09-21 11:27:28 +02:00
XavierDo 932ac0e42a [FIX] mail: clean context before default activity creation
When trying to mark an activity as done & launch next from the crm
kanban view, an default_type "opportunity" was present in the context,
and kept untill trying to create a voip phonecall if the default
next activity type had a category "Phonecall". Removing the default
from the context in this case will avoid this kind of error.

PR: #27128
2018-09-20 12:42:33 +02:00
Olivier Dony 84af9382e2 [IMP] mail: avoid costly queries on messages
The combined domain for moderated messages used to trigger a complex
database query with two OR conditions on the mail_message table.
Unfortunately PostgreSQL seems to be unable to optimize this with
indexes, or to detect that one of the conditions is void (included `AND
FALSE`). On large mail_message tables, this significantly slows down
calls to message_fetch, e.g. 6s instead of ~70ms, while returning the
same results.

As a workaround, move the logic for generating the moderation domain to
the server side, where it can be:
 - optimized out when the user is not a moderator
 - split into 2 distinct DB queries in order to avoid the pathological
   case

After this change, calls to message_fetch with and without messages
to moderate execute in respectively ~50ms and ~150ms, instead of 6s, in
a test database with 25 million messages.

The modified message_fetch signature is backwards-compatible.

+ modified mock server used for the tests, which unfortunately
duplicates most of the business logic.
2018-09-20 12:41:03 +02:00
Olivier Dony ec4f7bc215 [FIX] mail: block negative search for need_moderation
Other operators can only cause nonsensical results, while causing
useless slow queries. This is only really meant as a shortcut for
getting messages to moderate.
2018-09-19 23:50:20 +02:00
XavierDo 47496b9fe5 [IMP] mail: add force_next on activity type
A new field on activity type allow to change the behaviour of mark done & schedule next:
-marking as done will automatically schedule the next activity, based on the default_next_activity.
-It should also be impossible to edit an activity when this flag is on.

task: #1884521
2018-09-18 13:44:00 +02:00
ThanhDodeurOdoo 389cb3e8dd [REF] mail: update related_attachment_count field name to match mixin namespace.
Reason: The Attachment count of mail_thread is used by the new
attachment button of the chatter, the compute field has been chosen
over a search_count JS RPC to keep a synchronous chatter and prevent
flickering.

This commit refactors those changes to follow the naming
conventions of mail_thread and to optimize the count method for
eventual reuse follwing TDE's advices.

- Changed the name of a mail_thread's related_attachment_count into
message_attachment_count.

- Changed the count method to a read_group.

PR: 26989
Task: 1860031
2018-09-17 19:12:25 +02:00
Olivier Colson 3c2a92e820 [IMP] mail: add main attachment support on mail.thread
This is done by adding a new field on mail.thread objects and setting it when posting a message with attachments on a model inheriting from mail.thread.

Was part of PR #26740
Was part of task #1880089
2018-09-14 17:29:49 +02:00
Christophe Simonis 9c77066f34 [MERGE] forward port branch saas-11.4 up to 6c103589c1 2018-09-14 16:00:17 +02:00
Christophe Simonis f3fa5a5ef7 [MERGE] forward port branch saas-11.3 up to 1e0a92c996 2018-09-13 19:30:33 +02:00
ThanhDodeurOdoo 7f97c9fc05 [IMP] mail: new attachment button in the chatter
- Added a new button to the chatter that displays the amount of
 attachments on the current record and when clicked, all the attachments
 attached to the current record

      - added mail.FormView (includes), used by the chatter attachment
       button to fetch the field value of attachment_count.

      - added a computed field "attachment_count" to mail.thread that
       contains the amount of attachment attached to the record.

      - changed the followers div, it is now sharing a "right side"
       area with the attachment button.

 task: 1860031
2018-09-13 11:50:26 +02:00
Christophe Simonis 5e4fdaf731 [FIX] mail: correct SyntaxError
Oversight of previous forward-port
2018-09-12 20:04:41 +02:00
Christophe Simonis b1999a0e87 [MERGE] forward port branch 11.0 up to db0e84f3e3 2018-09-12 19:37:17 +02:00
Raphael Collet cd6e9ab4fb [FIX] mail: _compute_need_moderation() 2018-09-12 15:15:10 +02:00
Nicolas Lempereur 8e77632e58 [FIX] *mail_thread: don't modify modified help
The 'help' of window action is often fiddled with, adding thing before,
after or arround it.

For example in CRM leads, we add at the beginning "Click to add a new
opportunity" with an arrow towards the button, and after if there is a
mail alias: "All email incoming to * will automatically create new...".

But for crm.lead, hr.expense, sale.order this would not take into
account that the fiddled "help" can be edited, so if we edit 2 times
help in studio or backend action editing, we would get:

  Click to add a new opportunity
  Click to add a new opportunity
  Click to add a new opportunity
  [Original help content]
  All email incoming to * will automatically create new...
  All email incoming to * will automatically create new...
  All email incoming to * will automatically create new...

And see several "arrows" towards the button (in enterprise the
additional ones are on same color background).

With this commit we do what is done in "mail.thread" by default which is
not fiddling with the `help` if has been fiddled before (if it contains
"oe_view_nocontent_create" class).

note: this is the 11.0 version of #26912

opw-1877663
closes #26911
2018-09-12 13:18:35 +02:00
Christophe Simonis babfca1cf4 [MERGE] forward port branch 11.0 up to 5a1f874602 2018-09-11 14:57:25 +02:00
Lucas Perais (lpe) 816f386161 [FIX] mail: action send mail no default_type
Have a send email automated action on invoices upon validation (write)

Go onto the credit notes, create one, and validate

Before this commit, at the creation of the attachment (the invoice pdf), there was a traceback
because default_type was in the context containing 'out_refund'
And that attachments also have a field 'type'
So the default_get of the latter got a value that wasn't correct for its field

After this commit, we clean the context of the default_type context key since it
is irrelevant beyond that point

OPW 1868638

closes #26621
2018-09-11 09:35:44 +02:00
Christophe Simonis 68d36512ef [MERGE] forward port branch saas-11.4 up to d78f23df84 2018-09-07 20:20:45 +02:00
Thibault Delavallée a75b7cd517 [IMP] mail: sort activity summary view by deadline ascending
Purpose of this commit is to have first activities to perform displayed
first in the activities summary view.

This commit is linked to task ID 1882545 and PR #26797.
2018-09-07 15:29:57 +02:00
XavierDo 7f47dcae5b [FIX] mail: improve activity view and fix activity feedback
-Improve no content helper on activity view

-Update chatter after editing an activity un form view

-Avoid context to appear as feedback
When using call_button the context is set as an arg and will be catched by
the kwargs of the called action.

As for action_feedback, we can create a wrapper without kwargs
used when calling this method from a button to avoid this problem.

Another solution would be to change the call_button in order to give
the context as a kwargs. Maybe a possible improvement for master.

-Remove groupby from activity view
group by has no effect on activity

-Change cursor to pointer on record name in activity view

Task: #1878184
PR: #26668
2018-09-07 14:59:05 +02:00
Christophe Simonis 49c3264ce0 [MERGE] forward port branch saas-11.3 up to 4850fb0838 2018-09-07 14:43:48 +02:00
XavierDo 62928bb81a [FIX] mail: make red envelope visible when necessary
We need to know if a notification is in failure by
displaying the red envelope in even if all partner are inactive.

This commit also fix the filter in order to display notification
of all active partners if there is an exception.
2018-09-06 10:34:14 +02:00
Christophe Simonis f19e6ce561 [MERGE] forward port branch 11.0 up to 213759b03e 2018-09-05 18:52:27 +02:00
Toufik Benjaa 7700bd172f [FIX] mail: Avoid using default value for track fields logging
- When a tracked field is modified, a mail.message is created.
  When create is called its tries to fill missing values with "default
values".
  It first tries to find the default values in the context, which may
occurs.
  For example, modifying a tracked field on a subtask will add a key
"default_parent_id" in the context, which is the parent_id of the project.task.
  Create will try to use "default_parent_id" for the mail.message
parent_id field, which make the SQL Request invalid.
2018-09-05 18:36:54 +02:00
XavierDo 1120bffb66 [FIX] mail: only display errors linked to message of current user
The search on message_has_error (used when clicking on a failure notification)
was displaying the failure of all users making it difficult to find your
own mail failure. This fix solve the problem by adding a criteria on message
author_id.
2018-09-05 16:52:44 +02:00
Olivier Dony 6d979a0646 [IMP] mail: simplify failure_type values
The default value for failure_type was the 'NONE', instead of being
simply False/NULL. This represents a significant waste of tablespace
with no added value.
Switching to true NULL value for representing the absence of error
also save some precious time during database upgrades on databases with
large numbers of emails.

While fixing the values for failure_type, also fixed a few typos and
untranslated strings.

See original feature at 133eeb1bbf
2018-09-04 18:50:18 +02:00
Thibault Delavallée 32832dc6df [FIX] mail: correctly add moderators to channel members 2018-09-04 16:39:07 +02:00
Goffin Simon 15c81d74a3 [FIX] mail: Timezone issue when creating a call
Steps to reproduce the bug:
- Let's consider the today date = D
- Set on your preference a timezone which has another today date = D+1
- Go to CRM > Configuration > Activiy types > Call
- Set 0 as # Days
- Go to CRM > Pipeline > Click on a lead
- Schedule an activity of type = Call

Bug:

The Due Date = D instead of D+1

opw:1877217
2018-09-04 09:20:24 +02:00
Martin Geubelle e273407157 [FIX] mail: consider activity as a valid view type
The recently introduced `activity` view (see rev. odoo/odoo@1de9496 has not
received all the consideration it deserves as a real view type (no RNG, not in
the valid view `type`, no doc, etc.). It was currently only working based on a
`_get_default_activity_view` method.

Even if the RNG is currently really basic, its grammar could evolve in the future.

This was causing an issue when opening Studio with this view as a default view
with an invalid type was created.
2018-09-03 13:40:22 +02:00