Commit Graph
95 Commits
Author SHA1 Message Date
Xavier-Do b5c2004160 [IMP] core: avoid to check access rules on empty recordset
Checking access rules only makes sence if we have some records,
_filter_access_rules will always return a subset or current
recordset, and a subset or a empty recordset is an empty recordset.

closes odoo/odoo#32313

Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
2019-04-02 15:39:30 +00:00
XavierDo a4049296d9 [IMP] core: avoid to process work when worker is 'killed' during sleep.
If a signal is received during the worker _runloop sleep,
the worker will be marked as alive=False but process_work
will still be called once.

This commit prevents that by checking the worker state before
calling process_work.

closes odoo/odoo#31885

Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
2019-03-19 09:43:10 +00:00
XavierDo 49db3d92e7 [FIX] mail, test_mail: don't notify inactive users
We don't want to notify inactive followers,
especially in the case of oddobot that was considered
as a inactive partner in _notify_compute_recipients.

The computed recipient data for odoobot are
(pid:2 active:False pshare:True notif:None)

It was considered as a partner and notified by email.
This fix simply removes inactive partner from partner to notify.

closes odoo/odoo#31734

Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>
2019-03-11 12:50:05 +00:00
XavierDo a95756faac [FIX] bus: gc event at the end of a polling
When making a poll, an event is registered on each channel. Once
a notification is sent on a channel, only the events of the
notified channel are removed. A pointer to the event is kept
in all other channel the user subscribes to until those channel
are notified.

Since a user usually has many mail.channels but only a few active ones,
a new event and a bunch of pointers are created at each poll and
never removed.

This fix simply remove the pointers to the current event at the
end of a poll.

closes odoo/odoo#31215

Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>
2019-02-28 15:49:04 +00:00
XavierDo 92e9e84b63 [IMP] mail, *: don't track fields at create
*: project, crm, maintenance, helpdesk,

It is useless to track fields during create since they
have no initial value and future tracking message will
show changes on tracked field.

We can log a default creation message instead
(as it is now if there is no mail_create_nolog context key)

This change will implies
- less queries when creating record
- cleaner creation messages
- less occurence of mail_create_nolog ctx key

Removing tracking at create could break the creation subtypes
mechanism (example: following task creation subtype on project)
Instead of using _track_subtype to give a subtype at create,
a new _creation_subtype method can be override. If a creation
subtype is set on a specific modlel, creation messages will be
create by message_post instead of _message_log.

We also need to adapt the message_track_post_template in order to
keep this feature whithout tracking.

Task: #1916916

closes odoo/odoo#31945

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-03-29 15:28:43 +00:00
XavierDo fbafbf2230 [IMP] mail, test_mail, *: add new email.cc.mixin on main models
*: crm, project, maintenance, hr_recruitment

When a record is created from an email, cc can be lost. This commit
proposes a new mixin to keep cc on the record and allows to create
partner for each of them when sending a message from the chatter.

The mixin is added on the mail recors that can be created from mail.alias:

document
helpdesk.ticket
mrp.eco
quality.alert
hr.applicant
crm.lead
project.task
mail.channel
maintenance.equipment

Task: 1925001
2019-03-28 09:34:11 +00:00
XavierDo e1cd5bbede [IMP] mail: add show more button on partner suggestion.
When sending a message from chatter, a list of suggested partners appears
on the top of the text area. With the previous commit,
cc will be added to this list. This commit adds a show more/show less
button in case there is more than 3 suggested recipients to display.

Task: 1925001
2019-03-28 09:34:11 +00:00
XavierDo d3b2da41b7 [FIX] note: display date picker in activity menu
The date picker should be displayed when clicking on the fa-calendar
when creating a note from activity systray.

The test was missing the assertion checking that the date picker was displayed,
but fixing this issue breaks the test. The datepicker looks to be
asynchronously initialized, and the blur event raises an error because of
that. Since it is difficult to test external libs behaviour, this
step is simply removed from the test.

Task: 1942850

closes odoo/odoo#31241
2019-02-19 11:52:23 +00:00
XavierDo 975164473c [IMP] mail, hr_holidays: improve channel_info
`channel_info` can be called on multiple channels especially during
the init_messaging. The current implementation will perform read and
other queries in the loop. This commits aims to refactor `channel_info`
in order to read all informations in database out of the loop.

Computation of members informations is now the same as for `direct_partner`
As a side effect direct partner will have an email adress and members will have
im_status and out_of_office message if the partner is in a
channel of type chat. It would be easier to compute im_status in all case but
this could create performances issues when calling channel info on channel with
hundreds of users.

channel_fetch_preview will make a query in database in any case but seems to work ok
in api multi. We can put it out of the loop.

44ac7903cc fix shouldn't be broken by this refactoring since we are no longer using the many2many to find direct_partners.
2019-02-11 09:22:24 +00:00
XavierDo 5c3aaacd2e [IMP] mail: correctly patch mail status manager timers
We want to avoid that a `setTimeout` started in one test has an impact on other
tests. This is especially true with the status update loop. Since mail_service
is used in multiple tests, the safest solution is to patch timeouts everytime
we make a call to getMailServices.
There is no need for an unpatch, the patch become the default behaviour until
the page is refresh at the end of tests.

It is possible to manually add the patch after calling `getMailServices`
```
this.services = mailTestUtils.getMailServices(this);
this.timeoutMock = mailTestUtils.patchMailTimeouts();
```
This can be usefull if we want to get the timeoutMock to simulate time changes.

Task: 1856205
2019-02-07 12:53:14 +00:00
XavierDo 2d45df1081 [IMP] mail, web: Add indication abouts it's own status in user_menu.
Task: 1856205
2019-02-07 12:53:10 +00:00
XavierDo 062f748efb [IMP] mail: add a Read More on out of office message
Task: 1856205
2019-02-07 12:53:07 +00:00
XavierDo 086405344e [IMP] mail, hr_holidays: use leaves to compute im_status
When on leave, the im_status can be either leave_online or leave_offline.
This will allow to display a specific icon and a default message when the user
is not at the office.
The leave can have an out of office message. This message will be displayed
in the chat window instead of the user ooo message, and the end date of the leave will be displayed too.

Technical details.
Right now the im_status access leaves directly to know if a user is on leave or not.
An index has been added to optimise this request (thanks to rco).
A solution to optimise this would be to compute part of the information in a cron.

Task: 1856205
2019-02-07 12:53:03 +00:00
XavierDo c21d200285 [IMP] mail: add ooo status in chats windows.
In a chat window with a single usert (dm_chat) the ooo status of the
other user is displayed on the top when set.

Task: 1856205
2019-02-07 08:54:33 +00:00
XavierDo b60224c41c [IMP] mail, base: add out of office status to user.
This status can be edited by user in preferences, indicates if user
is available or not.
2019-02-07 08:54:33 +00:00
XavierDo 07a261db71 [IMP] bus, mail, mail_bot: add im_status service
This commit is a refactoring of im_status management.
This commit also add im_status in two places, near the author in a mail thread and on each suggestion when using mentions.

A service to manage im_status will have multiple benefits here:
-centralise information, avoid to call the server multiple time for the same im_status
-update all im_status at once and keep consistency in display.

With this commit, the im_status updates are now done by rpc call.
Updates where previously made with the bus but this has some drawback,
since the bus will only give the information 50 seconds after the beginning of
the request, in the worst case, we van wait 2*50 seconds to get an update.

More than that, the im_status where only updates for pinned dm_chat. Dm chat
are synchronized cross tabs, making the use of the bus possible for this purpose.
Since we will need to display im_status not linked to dm_chat, the list to update
will be different from tab to tab making the use of bus difficult for this purpose.

Technical notes:
-im_search has been moved from bus to mail addons since it concerns mail.channel
-Update of an im_status should be reflected everywhere in the page.
Since im_status is a rendered template used in multiple widget, we should add
the correct logic to all concerened widget. The current solution is simple:
use a jquery selector to find every place where im_status is rendered.
-we add a new im_status: im_partner. This will indicate that that
the partner has no user linked to him, making it possible to avoid to ask
for status updates for this partner.
-The update will only be done when the tab is focused. (and will be done
asap once the tab get focus back)
2019-02-07 08:54:33 +00:00
XavierDo b8f2edd94c [FIX] core: remove email escape logic from html_sanitize.
Related to #30326

Before #30326, when calling html_sanitize, some content may be escaped
when it shouldn't. A simple example was images with cid links containing @.
(a first fix for another use case was made in 8aff53733b)

We suspect that this escaping (added in 71a92f46e4)
was made to avoid loosing email with format '<email@domaine>' in html_sanitize
to escape them if html_sanitize is called on plain text.

Anyway, only html should be passed to html_sanitize, and therefore email of format
<email@domain> should already be escaped.

PR #30326 fixes the unwanted behaviour in 12.0 and this commit removes
this logic in master.

closes odoo/odoo#30815
2019-02-07 08:53:45 +00:00
XavierDo e2180e5a2e [FIX] fields: setting an integer field invalidates its inverse one2many
In particular, creating a `mail.message` automatically invalidates the
corresponding `record.message_ids`.

closes odoo/odoo#30737
2019-02-06 10:18:24 +00:00
XavierDo 76e085cbb7 [FIX] base: avoid to escape image when src contains @
The content id of an attachement can contains a @, therefore
image contained in emails where sometimes escaped by html_sanitize
as if they were emails adresses.

Task: 1915251

closes odoo/odoo#30326
2019-01-17 16:21:08 +00:00
XavierDo 54ad2f57ce [FIX] mail: avoid to post multiple join message on channel
When a new user is subscribed to a channel, (multi-user, without emails)
a message is posted on this channel.

The mechanic used for that is unfortunately not very reliable
Javascript will call channel_join_and_get_info every time a channel
is added (client side) even if the user is already in the channel.

This fix simply check that the action_follow actually add the
user to the channel before sending the message.

We should avoid to call channel_join_and_get_info in this case and only call
channel_info but this fix will temporary fix the issue.

closes odoo/odoo#29441
2018-12-11 17:36:04 +00:00
XavierDo 80f3eb27f7 [FIX] mail: add index on mail.activity create_uid
The activity create_user_id field is now replaced by magic create_uid field.
Since most of the search are done on this field, create_uid should be indexed as
create_user_id was.

closes odoo/odoo#30061
2019-01-09 09:30:05 +00:00
XavierDo 303220f214 [FIX] mail: only notify activity assignation on user change
The current implementatipon of write on mail.activity will
send a notification to the user every time a write is made
on user_id.

To avoid to send notification / mail if the user_id is given
but doesn't change, we can simply filter the records. This
will also avoid to check assignation rights in this case.

Task: 1905086

closes odoo/odoo#30055
2019-01-10 10:14:45 +00:00
XavierDo 4682c8a759 [IMP] mail: improve activity done message template
Feedback should be the first part of the message without title
to make it more concise.

If the activity has a note, the note should be displayed
but after the feedback.

We can also remove the field feedback that was not so useful
since it was only written just before unlink. Feedback is now
passed as another parameter to the template.

Task: 1918392

closes odoo/odoo#29605
2018-12-18 15:02:42 +00:00
XavierDo bb8df1b79a [FIX] mail: verify attachment access early to avoid errors later 2018-11-02 11:25:42 +01:00
XavierDo 9043305fa0 [FIX] mail: verify attachment access early to avoid errors later 2018-11-02 11:23:10 +01:00
XavierDo 8f9a767bbe [FIX] mail: avoid concurrent update of notifications
When sending notifications by batch one notification email can be send
up to 50 people. For one mail_mail entry to handle 50 emails can be sent
as those are sent independently for each recipient.

In some cases a bounce may occur while the whole batch of recipients is
not completely mailed. In that case the mailgateway will update the
notification status to bounced. When the cron finishes to send the whole
batch of emails it tries to update the notifications of all recipients.
However as a notification has already been updated due to the bounce we
face a concurrent update, meaning the transaction is rollbacked.

Emails have been sent but notifications are not considered as sent as they
have not been updated accordingly. Next time the cron runs it will send the
same batch again, with probably the same bounce and rollback. We could
therefore face an email loop.

This commit add test for this use case.

This commit is linked to task ID 1893054.
2018-10-18 15:49:28 +02:00
XavierDo 22dc335803 [FIX] tests, web_tour: improve js error display in build details
Since chrome headless has been merged, js error messages are
difficult to read: some information was missing or only displayed in
full all log.

All console.error() will now be displayed in build details, and will
appear just before the python assertion.

XMO's improvement will also be used on all log: Using module and
classname of the class calling phantomJS.

Also: some small improvements on error messages to make them easier to read

Note: this commit also shown that some error were not detected:
now we will fail in any case if js log an error.
2018-10-18 11:59:43 +02:00
XavierDo 136fee6fcf [FIX] mail_bot: only display odoobot once in mention suggestions
Before this commit odoobot was appearing twice in mention
suggestions when talking to odoobot.

The initial need to be able to ping odoobot from everywhere led to the
override of channel_fetch_listeners. This is not usefull anymore.

This fix simply removes this override to avoid this problem since we
don't have a real use case where we need to ping odoobot in another
channel.

Task 1907142

closes odoo/odoo#28791
2018-11-28 11:35:12 +00:00
XavierDo 863f3275d2 [FIX] mail: verify attachment access early to avoid errors later 2018-11-02 11:35:10 +01:00
XavierDo 356a421660 [FIX] mail: avoid sending mail when creating record from data
Before this fix the creation of task assigned to admin was leading
to the creation of mails.

This is a generic fix to avoid to notifiy a user when he is add as a
follower when creating data from odoo data files.

closes odoo/odoo#27682
2018-10-11 15:30:33 +00:00
XavierDo 70e604a8fa [FIX] core: correctly read test_tags in config file
The test_tags is stored as None by default in the config file,
but 'None' is interpreted as a string when read.

This is a dirty fix in order to avoid to launch tests when using
a config file, we should do something cleaner in master and refactor
part of this code (substitute 'None' in the load method as it is
done for boolean)

closes #27498

closes odoo/odoo#27564
2018-10-09 09:19:30 +00: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
XavierDo 76c5389cd9 [IMP] core: enable tests when test-tags are set
The goal here is to keep the default behaviour of test-enable and test-tags
except that test-tags will set test-enable to true if set.
- +standart must stay the default test-tags if none are set
	(only usefull if test-enable is set)
- should work no matter the order of "test-tags" and "test-enable"
	options  in args
- knowing the fact that for strange reason, _parse_config is called twice

PR: #27255
2018-09-27 13:01:22 +02:00
XavierDo a4fa2a33f9 [FIX] web: order read_group by aggregable fields only in list view
The read_group method will ignore and display a warning when giving an
order on a non-aggregable field. Therefore, when accessing a list of
record from a list view group by some field and ordered on another one,
a warning will appear in logs (making the nightly clikall test yellow)

The solution here is to only order by current group by field and on
aggregable fields. We want to keep the user order to know the ASC/DESC
information.
2018-09-26 13:02:47 +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
XavierDo f7957fb6aa [FIX] mail: prevent redirect to app switcher
Before this commit, trying to send or preview a mail from a kanban view was
redirecting to the appswitcher.
2018-09-20 12:42:33 +02:00
XavierDo 97dbdc418d [FIX] mail: keep update of subtypes in dropdown
Since saas-11.4 the subtype dropdown don't keep changes of subtype.

Before saas-11.4 the update was relying on the fact that the follower id
changes on each subtype edition. This is no longer the case.
The test is addapted to remove the hack simulating this behaviour.

The read_followers route is not called if no there is no changes
in the follower ids
https://github.com/odoo/odoo/blob/905e01921f3c3ef43ace6fc537d1d8c0d280002c/addons/mail/static/src/js/followers.js#L195
Leading to the follower list not being update

Note that the subtype update in dropdown was working fine after adding a
new follower: the read_followers will return a None as suptype when called
for a list of partner not containing the current user. Since the subtypes
was falsy, the render was not rendering the dropdown again, keeping
the value of the checkboxes. We can still create some inconsistency by
editing the subtype from the follower list. To avoid that a check is made
when updating subtypes after calling read_followers.

The chosen solution here is to keep the update on subtypes in memory.
This will avoid a call on read_followers to fetch information that we
already know, using the assumption that the operation was successfull
whish should be the case when a user edit subtypes on a record
he has access to.

Others solutions:
-force the call to read_followers with the current user, maybe by removing
it from this.follower after editing subtypes.
-call read_subscription_data explicitely

Obviously follower.js should be refactored to fix this a better way.

Task: #1886982
PR: #27093
2018-09-19 14:10:19 +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
XavierDo 71663b7f57 [IMP] web: log user_error as info instead of error
Since a console.error will mark a tests as failed, logging user error
as info will allow to test a flow with user error without
marking the runbot red
2018-09-14 13:56:32 +02:00
XavierDo d5bc0e57cd [FIX] project: use user right on portal task
The search on project were done as sudo with a domain matching the
"project_task_rule_portal" rule. This commits remove the sudo call
and corresponding domains.

This replace lpe's fix b8fe404e, and user connected to portal to see
his tasks, avoiding an error during crawling tests:

Error use case:
User try to access a task list from /my/projects with a filter on a project.
The project filter does not exist in task list since the rules applied are for
portal user -> an error is raised

Now, project list on /my/projects and the filter available on /my/tasks should
be the same.
2018-09-11 12:22:40 +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
XavierDoandChristophe Monniez c44fe91232 [IMP] http,server: add query count and request times in logs
When there is a performance issue, it's sometimes difficult to discover
which request increased the query count or its duration.

With this commit, the query count, the query time and "python and io" time are displayed
in the logs at the end of each werkzeug request line.

Co-authored-by: Christophe Monniez <moc@odoo.com>
2018-09-07 10:27:46 +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
XavierDo 554414b90f [FIX] mail: fix use of resend wizard when user are in failure
The user right to edit partners was handled in order to set email fields as readonly
If a user is in the failed recipient, we need to check that the urrent user also has
right to write on users
2018-09-06 10:33:59 +02:00
XavierDo d0e957109f [FIX] mail: allow resend on bounce
Only o_thread_message_email_exception red envelope was clickable.
We should be able to resend bounce too.
2018-09-06 10:33:52 +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
XavierDo 0c07ff7f41 [FIX] calendar: allow search on message_ids
When fixing calendar search for recurring events we assumed that
no autojoin field will be used in this search.

The filter unread messages is based on message_ids from mail thread.
The solution here is to redefine this field in calendar to remove the autojoin.
2018-09-03 11:11:39 +02:00
XavierDo 641fe7f34f [FIX] calendar: only make leaf evaluation when necessary
A little optimisation to avoid one more query when we have no
recuring event, and only evaluate leaf of recuring event.
2018-09-03 11:11:39 +02:00
XavierDo 73f1d59096 [FIX] tests, web_tour: improve js error display in build details
Since chrome headless has been merged, js error messages are
difficult to read: some information was missing or only displayed in
full all log.

All console.error() will now be displayed in build details, and will
appear just before the python assertion.

XMO's improvement will also be used on all log: Using module and
classname of the class calling phantomJS.

Also: some small improvements on error messages to make them easier to read

Note: this commit also shown that some error were not detected:
now we will fail in any case if js log an error.
2018-08-30 15:11:38 +02:00
XavierDo 334b57fbf6 [FIX] base: remove error_context message from test log
Some error_context messages were logged during tests
causing some useless noise in log.
Corresponding mute logger are now fixed/added.
2018-08-29 16:51:42 +02:00
XavierDo a4dfa6e354 [FIX] web, website: fix tests giving 404 error
-Some tests where moved without addapting the path to them:
path is now update and tests fixed.

-A picture was removed in commit 4dce6cc98b but
still referenced in template website_twitter_snippet.

-A test was missing a data leading to the wrong path to image beeing loaded
2018-08-22 14:41:02 +02:00
XavierDo 7f8ffba48e [FIX] mail: remove bolt on notification request
Since the title of a notification is in a t-esc, the style wont be applied
2018-08-21 17:55:27 +02:00
XavierDo 2831fa7926 [IMP] core, test_mail: improve query count assertions
-remove margin
With the spirit of making tests determinists,
we can remove margins to have a real test of query count.

-mock random on assert query count
bus gc is triggered using random. Therefore, when send_many is called,
we have 1% chance to have more query. Mocking random.random to 1
will disable gc during query count tests (not during warmup).
Could be interresting to put gc collection in a cron latter

-add more info on querycount
Adding file and line number on query count failure/info will help to update
the query counts.

-update query count based on enterprise
Update all query count with enterprise values (exactly)

-normalize query counts with enterprise
voip module add a read on activity type (during create) in enterprise,
leading to one more query but also more information in cache.
Therefore, the next assertion will need one more query to access this data
in community.
Adding an access to activity type in the first assertion will allow
to have the same cache state in community and enterprise.

Task: #1878588
PR: #26476
2018-08-21 16:56:54 +02:00
XavierDo 616fa4f6e4 [IMP] mail_bot: change Odoobot to OdooBot 2018-08-21 13:44:33 +02:00
XavierDoandRomainLibert 0be33db68a [IMP] mail: refactor activity.js and add some test
activity.js was a little dirty with a lot of copy paste.
Most of the common logic is now in a BasicModel.

This commit also add some tests on activity view

Co-authored-by: RomainLibert <rli@odoo.com>
2018-08-20 16:00:09 +02:00
XavierDo 830f31e433 [FIX] mail: correct computation of date_deadline
The indentation of the computation of date_deadline was incorect
leading to a deadline only getting compute when the base date was
depending on a previous activity.
2018-08-17 16:22:48 +02:00
XavierDo f83c313631 [IMP] mail_bot: improve answers, initialisation and others
1. Odoobot shouldn't talk to admin when demo data are installed
Odoobot will talk to a user on it's first connection, meaning that
a dev will see this chat window a lot. The state disabled is not a
real state but is explicit, the odoobot wont be initialized in this
case. It is still possible to test odoobot flow with demo user.

2. remove old odoobot image and update link

3. small improvements in odoobot answers
2018-08-17 13:06:43 +02:00
XavierDo b7ff3544ee [FIX] test_mail: update query count 2
Update the query count to avoid the runbot to be randomly red
Temporary fix!!!!! Will need to check with in details what is the
cause of this.
Those are the changes for the second part of test
2018-08-14 17:23:23 +02:00
XavierDo 2222a1c21e [FIX] test_mail: update query count
Update the query count to avoid the runbot to be randomly red
Temporary fix!!!!! Will need to check with in details what is the
cause of this.
2018-08-14 15:06:41 +02:00
XavierDo 651fd4dbe7 [FIX] mail_bot: fix not_initialized inversion 2018-08-14 14:58:12 +02:00
XavierDo 2df29bcfbd [IMP] mail_bot: make odoobot statefull
The current implementation of odoobot is stateless, making him a little dummy.
Adding a state on the user allow to be sure that the user don't skip a step,
or loop back to a previous step.

States also allows odoobot to repeat the question when the user don't give the
right answer.

A quick modification asked by FP before freeze, in order to change the field
type in time.
2018-08-13 21:45:53 +02:00
XavierDo 1de9496f14 [IMP] mail: add activity view
A simple new view to easily display all activity on a model grouped
by res_id and activity_type_id. Some action are possible like sending
a mail template for all record having an activity with this activity type
and present in the view (depends on the filter).

The view use the Kanban activity view on cells. It could be a good idea
to rename this widget to something like "DropdownActivityView" (maybe
after the freeze)

Task: #1870662
PR: #26272
2018-08-10 15:20:37 +02:00
XavierDo 83fc5dc03c [IMP] mail: add more powerfull delays on activity.
It was possible to define a delay in days on activity type
to reschedule next activity. It is now possible to specify a unit
(days, weeks, months) and a starting point for the delay
(as before, from the moment when the new activity is scheduled,
but also after the deadline of the previous activity).

We realy need to have all javascript action triggering a done
and schedule next to call the python corresponding method on
activities. A part of the work have been there but some
cleaning could still be done in activity.js.

Task: #1870662
PR: #26272
2018-08-10 15:20:37 +02:00
XavierDo cf505c3698 [ADD] mail_bot, im_livechat_mail_bot: add Odoobot, your new best friend
Purpose of this commit is to improve onboarding with a wow effect and a bot
to test the Discuss app. Otherwise new users have nobody to talk to. Retention
will be improved by both increasing interactions and onboarding of Discuss
features.

This commit adds a simple bot in discuss. It answers some questions, helps
users getting their hand on discuss and eases the onboarding.

In this version, the flow is quite simple, and only im_livechat adds some
logic in order to show canned response. The logic is contained in new
modules: mail_bot and im_livechat_mail_bot in order to keep everything
well separated. It also allows users to remove the mailbot if they do not
want to keep this functionality.

Odoobot will only answer if he is in the onboarding conversation (alone
with a user in a channel of type chat) or if a user pings odoobot.

Odoobot logic applies to both standard chatter / channel messages and
also transient messages (like help commands).

Specifications

 * 2 minutes after first sign in, users will receive a direct chat from
   Odoobot;
 * make Odoobot an archived partner;
 * scenario

  * Odoobot: "Hello, I'm here to help you discover chat features. Try
    answering me with an emoji :)";
  * User:  Send emoji
  * Odoobot: "Great! :) Did you notice that you can also send attachments,
    like a picture of your cute dog? Try it!"
  * Odoobot: "Not a cute dog, but you get it :) To access special features,
    start your sentence with "/" (I.E. /help)""
  * User: /help
  * Auto message then Odoobot: "Wow you're a natural! As a channel usually
    contain a lot of users, you can grab the attention with a ping. Try to
    ping me with @Odoobot!"
  * User: @Odoobot lorem ipsum

  * if Livechat installed

   * add 2 demo canned response so it does not look weird (like "Hello, how
    may I help you?" and "Have a nice day!")
   * Odoobot: "Perfect! <br> Try to type ":" to use canned responses."
   * User tries canned
   * Odoobot: "Good, you can customize your canned responses in the live chat
    application. <br><br> + réponse suivante"

 * Odoobot: "There's 3 different ways in Odoo to interact with your
   colleagues:  via this chat window, [img of chat window] via the Discuss
   application [img of Discuss app + icon on it] or via the chatter [img of
   the chatter]. Aaaaand that's it! Enjoy discovering Odoo! :)"
 * random answers to ping/bad answer

  * "Mmmmh I'm not sure what you mean.. Can you try again?"
  * "I'm afraid I don't understand. Sorry!"

 * when someone pings @OdooBot with no reason: Odoobot: Yaaaay that's me!
   [party emoji]
 * fun stuff to add for some answer

  * User: i love you / love
  * Odoobot: Aaaaaw that's really cute but, you know, bots don't work
    that way. You're too human for me! Let's keep it professional <3
  * User: Fuck
  * Odoobot: That's not a really nice thing to say, you know? I'm a bot but I
    have feelings, ok?! </3

This commit is linked to task ID 1838588 and PR #25075.
2018-08-10 13:33:28 +02:00
XavierDo c446fb2001 [IMP] auth_signup, mail: notify inviter user when invited user connects
Purpose of this commit is to improve the onboarding and the first steps of
Odoo notably when using Discuss and inviting first people to join Odoo.

When a new user connects the user who invited him will be notified with
a desktop notification inviting him to have a chat in Discuss and talk
together.

This commit is linked to task ID 1838588 and PR #25075.
2018-08-10 13:33:28 +02:00
XavierDo 340e1c0219 [IMP] mail: add a desktop notification request to systray
Purpose of this commit is to improve the onboarding and the first steps of
Odoo notably when using Discuss and inviting first people to join Odoo.

In this commit we now ask the user to activate desktop notifications. Like
already done in Discuss a message will appear in systray in order to ask the
user to do it. This message will disappear once the user accepts or blocks
desktop notifications.

This commit is linked to task ID 1838588 and PR #25075.
2018-08-10 13:33:28 +02:00
XavierDo d6a601fe3f [IMP] mail: do not subscribe inactive partners
We do not want inactive partners to be added as followers. Indeed this may
lead to unwanted notifications send as inactive partners are not easily
found in the various widgets. It also creates unnecessary data and
computation.

This commit has a small impact on performances as we choose to do it in
message_ subscribe method. Private _message_method is left untouched as
parameters given to this method are left to caller control.

This commit is linked to task ID 1838588.
2018-08-09 16:30:52 +02:00
XavierDo abbba35598 [IMP] mail: add mail templates on activity
This commit allows the user to link some mail template to activity type
with res_model.

When a activity has template, buttons appears in activity, allowing the user
to send mail based on templates.

Task: #1844563
PR: #25620
2018-08-01 15:26:30 +02:00
XavierDo 18b24e8a22 [FIX] mail: add missing license 2018-07-20 17:26:52 +02:00
XavierDo c8d283a592 [FIX]: mail: storing add_sign on mail message
Only the add_sign from notif_values is usefull for a resend. We can consider
that a mail on resend can be delete in every case, and we can find the
model_description from model since a resend can only be performed on
message linked to a model.

The other notif_values are now parameter in order to ease the understanding
of what can transit through this flow.

Task: #1860054
PR: #25622
2018-07-11 12:25:33 +02:00
XavierDo 62591c58f8 [FIX] mail: add ability to mark failure notification as read
The mark as read button was not working for mail failure. More than that,
we wanted a functionnality to be able to massively mark mail failure as canceled,
especially to be able to clean databases from failure after migration.

Task: #1860054
PR: #25622
2018-07-11 12:25:33 +02:00
XavierDo 1b323e8b17 [FIX] calendar: fix attendee status filter
An event was shown in today's meeting if another attendees wasn't
in decilned state, even if the current user declined the event.

Task: #1858076
PR: #25544
2018-07-11 10:11:14 +02:00
XavierDo dea80d7c9c [FIX] calendar: take user timezone into account for todays meeting
The end of day depends of the user timezone.

Task: #1858076
PR: #25544
2018-07-11 10:11:14 +02:00
XavierDo f74f5edc77 [FIX] calendar: correct domain computation for recurring events
The custom computation for domain applied on recurring event
was assuming that a leaf value was true. This can lead to miscomputation.

Context:
For a domain like
'|',
	('start', '>=', '2018-06-28 23:59:59'),
	('allday', '=', True),

the domain will be transformed into
'|',
	'|',
		('start', '>=', '2018-06-28 23:59:59'),
		'&',
			('recurrency', '=', 1),
			('final_date', '>=', '2018-06-28 23:59:59'),
	('allday', '=', True],
In order to fetch recurring event with date that COULD match the domain.

Then, the custom evaluation will filter the generated virtual ids with
the base domaine, replacing leaf not specific to bounds by true,
leading to a domain like:
'|',
	('start', '>=', '2018-06-28 23:59:59'),
	True,
Also well known as "True"
Therefore, all recurring event virtual ids will be kept.

Solution:
This fix proposes to fetch the leaf values from the database to ensure
the consistency of the domain.

Thanks to RLI for the help.
Task: #1858076
PR: #25544
2018-07-11 10:11:14 +02:00
XavierDo 3ea85a603e [FIX] mail: fix forwardport mistake
A part of the code was unreachable after merging forwardport.

Closes #25477
2018-06-26 11:58:59 +02:00
XavierDo 133eeb1bbf [ADD] mail, mass_mailing: allow a user to resend a mail with failures
When a mail is in failure state, a red envelope appears next to the message
in a thread but it was difficult to send the mail again.
This tasks will allow users to send mail again easily, or mark notification
as cancelled if the user want to ignore this failure.
A notification will appear in sender systray while mail are in failure.

Task: #46158
PR: #24628
2018-06-07 11:46:28 +02:00
XavierDo aa7fb8c723 [IMP] mail: add warning when partner email is invalid
Change the border and cross color of a recipient in mail
composer when the email is invalid (doesn't contains "@").

When sending an mail from composer the user will see easily
if an email adress is invalid and will cause a NO_VALID_RECIPIENT
error.

Task: #46158
PR: #24628
2018-06-07 11:46:28 +02:00
XavierDo 3a2c87674b [FIX] web: getFocusableElement error in tree view
When a line in a editable tree view has no acivable element
(readonly or toggle_bollean fields only) the currentFieldIndex
will be null after selecting the row, and when trying to edit a
field (boolean field_toggle in this example) an error will be
thrown when trying to put focus on currentWidget.
We need to check that the currentWidget is not undefined.
2018-06-04 16:49:24 +02:00
Xavier Dollé f555bfeca3 [FIX] mail: correctly filter needaction on unread notifications in message_format
Previously to this commit needaction used by JS was not taking into account
read notifications. It means notably Inbox counter could be higher than
expected as taking into account read messages while Inbox displays only
unread messages. This commit fixes that by checking notification state when
giving needaction_partner_ids to message_format result.

This fix has a small impact on performances as message_format is used in
notification process for chat or push. A better implementation of message
format and its postprocess could probably lessen this fix impact. As we
target stable version we avoid rewriting other part of the code. Optimization
will be done in development version.

Related to task ID 1841243. This is a manual forward port of commit 69714fbeee
done in saas-11.2.
2018-05-16 16:17:59 +02:00
Xavier Dollé 92abf95a87 [FIX] mail: correctly filter needaction on unread notifications in message_format
Previously to this commit needaction used by JS was not taking into account
read notifications. It means notably Inbox counter could be higher than
expected as taking into account read messages while Inbox displays only
unread messages. This commit fixes that by checking notification state when
giving needaction_partner_ids to message_format result.

This fix has a small impact on performances as message_format is used in
notification process for chat or push. A better implementation of message
format and its postprocess could probably lessen this fix impact. As we
target stable version we avoid rewriting other part of the code. Optimization
will be done in development version.

Related to task ID 1841243. This is a manual forward-port of commit 69714fbeee
done in saas-11.2.
2018-05-16 16:06:10 +02:00
Xavier Dollé 19fb650863 [FIX] mail: correctly filter needaction on unread notifications in message_format
Previously to this commit needaction used by JS was not taking into account
read notifications. It means notably Inbox counter could be higher than
expected as taking into account read messages while Inbox displays only
unread messages. This commit fixes that by checking notification state when
giving needaction_partner_ids to message_format result.

This fix has a small impact on performances as message_format is used in
notification process for chat or push. A better implementation of message
format and its postprocess could probably lessen this fix impact. As we
target stable version we avoid rewriting other part of the code. Optimization
will be done in development version.

Related to task ID 1841243. This is a manual backport of commit 69714fbeee
done in saas-11.2.
2018-05-16 16:00:43 +02:00
Xavier Dollé 69714fbeee [FIX] mail: correctly filter needaction on unread notifications in message_format
Previously to this commit needaction used by JS was not taking into account
read notifications. It means notably Inbox counter could be higher than
expected as taking into account read messages while Inbox displays only
unread messages. This commit fixes that by checking notification state when
giving needaction_partner_ids to message_format result.

This fix has a small impact on performances as message_format is used in
notification process for chat or push. A better implementation of message
format and its postprocess could probably lessen this fix impact. As we
target stable version we avoid rewriting other part of the code. Optimization
will be done in development version.

Related to task ID 1841243.
2018-05-16 16:00:06 +02:00
XavierDo d6a9a9bf4c [IMP] portal: clean portal task controller
Remove some code that was kept for retro-compatibility
while merging task 1827950 in 11.0 (stable)

Task #1838048
PR #24425
2018-04-27 10:11:06 +02:00
XavierDo dea07fc291 [IMP] project, portal: group tasks by project on portal.
The portal view for tasks previously listed all task of all projects
without grouping them. It was a problem, mainly when we want to make
the distinction on project label_tasks, to make the difference
between tasks, issues, ... Grouping task by project by default allows
to show the label_tasks before each project.

Grouping the tasks removes the possibility to define a primary
ordering. We want to be able to ungroup the tasks in some cases.
The implentation was done in the portalsearch bar adding
a group by option. The portal proposes two grouping options,
project (by default) and none (to keep strict ordering).

Task: #1827950
PR #23769
2018-04-19 17:22:00 +02:00
XavierDo 6c381a3a16 [IMP] im_livechat, mail: replace emoji with unicode.
Remove the support to replace emojis by images. Most browser
now support colored emoji or at least black and white emojis.
The emojis list have been updated to ensure a correct support
for most os/browser.
Users have the possibility to install fonts localy if their os does not
have one of the default emoji font installed.
After default os emoji font, one of twemoji, emojione or noto color
will be selected.
The emoji list is now hardcoded in js in order to reduce the number of
records in shortcodes.

Also include a small fix for livechat to display message field when rating
is bad.

Task #36898
PR #23689
2018-04-09 17:19:29 +02:00
XavierDo 561db474e0 [FIX] im_livechat: livechat now diplay messages.
The busbus wasn't available in the then clause and caused
the chat to be partially broken: message were not displayed
in customer window.
2018-02-28 09:56:45 +01:00
XavierDo 4f4fa90aea [Fix] project: enable tag listing from configuration
Enable tag listing from configuration to allow admin to remove or edit tags

Task #58927
PR #23200
2018-02-27 16:18:07 +01:00
XavierDo 51957c1171 [Fix] hr_timesheet: task for view
Improves some aspect of timesheet for a better usability:
Rename "Subtask Planned hours" into "Subtasks" AND put "hours planned" next to the hours as units
changes track visibility of Deadline Planned hours so that a message will be generated when those values are changed.
Progress : it was possible to to have a progress higher than 100% when more time have been spend that the planned hours, but it doesn't reely makes sence for a progress bar.
Remaining hours should be editable: it is now possible to edit the remaining hours if needed, the field planned hours is updated in this case to keep informations consistent.
Also remove the default values of description for the subtasks when it was taken from the parent task name in some cases.

Task #58927
PR #23200
2018-02-27 16:18:07 +01:00
XavierDo 0fe1021982 [Fix] sale: move re-invoice policy
Move the reinvoicing policy to the purchase tab to avoid some confusion in the product form

Task #58927
PR #23200
2018-02-27 16:18:07 +01:00
XavierDo 5bb0318ab4 [Imp] product: move uom in a new addon
Adapt enterprise branch to match changes applied in commit 1b64b193f9a6cfd26dee3d723eac968fa4c5000e
2018-02-26 15:14:36 +01:00
XavierDo 2966d4faed [IMP] product: rename product.uom into uom.uom
Also rename product.uom.categ into uom.category to
 give it a decent name.
2018-02-26 14:27:26 +01:00
XavierDo 6a378e3839 [IMP] product: move uom in a new addon
Moves UoM models, test and data to a new addon in
order to be able to use uom without product.
A simple example is be to be able to use UoM for
timesheets.

This commit only move code, and adapt xml ids
without chaging any feature or functionnal
behavior.
Note: 'product' module now depends on new
'uom' module.
2018-02-26 14:27:26 +01:00
XavierDo 813065cb5b [IMP] mail: add settings button on channels
The settings of a channel were available in debug mode only. Adding a settings button on each channel allows to read/edit a channel settings easily.

Remove the unsubribe button and the settings button from the top of the page since they can be acceses another way now.
2018-02-19 09:48:38 +01:00