Commit Graph
126256 Commits
Author SHA1 Message Date
Sébastien Theys 96ef4885a7 [FIX] website_theme_install: fix theme install/upgrade/remove
The goal of this commit is to handle 3 cases:
===============================================================================

- Correct loading of downstream themes for existing themes at (auto)install

  eg. If we have `theme_A` loaded on a website and we install `website_sale`,
    then `theme_A_sale` must also be loaded automatically on that website.

- Allow migration of every theme/website from the command line -u

    When there is such an explicit upgrade, the Odoo framework was already
    handling the upgrade of the modules, but it did not take care of reloading
    the appropriate themes on the websites using them.

- Allow upgrade of only one theme from the interface

    When using the UI to upgrade a theme, we want the user to be able to upgrade
    only the current website and not any other. This will upgrade the modules
    of all themes in the stream, but reload them only for the current website.

===============================================================================

- Move install/upgrade logic into the `write` method to automatically take
    advantage of base features such as correct order of dependencies.

- Create methods to correctly compute the dependency stream of a theme:
    upstream, downstream, and both ways.

    Upstream: limited to modules with name starting with `theme_`.
    Downstream: limited to modules with name starting with current theme name.

- Change `_update_records` method to better look for dependencies

- Change `button_choose_theme`:
    - Always upgrade the stream before installing a new theme.

- Move `_convert_to_base_model` logic into `theme_models.py`

================================================================================

There are a lot of flows to take into account, some of which may be combined
with others.

- Dependencies such as website_sale or website_blog can be:
    - already installed when loading a theme
    - (auto)installed later when the theme is already in use

  theme_A_sale and/or theme_A_blog has to be loaded on every website using
  theme_A as soon as it is needed.

  Not all themes have such dependencies.

- A theme can have other themes as dependency.
    - The proper dependency chain must be taken into account when installing
      or upgrading.

- Some themes do not have any dependency at all (theme_default, theme_bootswatch).

- Different websites can use the same theme.
    - All of them have to be upgraded when using -u
    - Only the current website must be upgraded when doing it from the UI

- Different websites can use different themes, including intermediary themes.
    eg. - website1 may use theme_A
        - website2 may use theme_B (depending on theme_A)

  Moreover, theme_A and theme_B might have downstream themes such as
  theme_A_sale and theme_B_sale (which depends on theme_A_sale).

In that case it is important when manipulating theme_B to also take into account
the relation it has with theme_A_sale even though theme_A_sale doesn't start
with the same name as theme_B and it is not in the direct stream of theme_B.

Authored by @seb-odoo with contributions from @dbh-odoo and @JKE-be
and precious help from @rde-odoo

PR: #27511

closes odoo/odoo#27838
2018-10-15 10:45:36 +00:00
Nicolas Martinelli de9437dad7 [FIX] account: display Account Holder
Make sure to hide the Account Holder field only when coming from a
Parter view, where it is pre-filled thanks to the context key.

opw-1892758

closes odoo/odoo#27832
2018-10-16 08:02:15 +00:00
Adrien Dieudonne 59b7dec69c [FIX] web: line chart x ticks labels overlapp
Before this commit, we tried to hide some labels depending
of the available size of the graph.
However, it doesn't worked when the graph is updated.

A much simpler solution is to use the scale’s automatic tick
generator implemented in D3.
So, in this commit, we realized that 'tickValues' is unnecessary
because data are passed correctly (see 'svg.datum(data);') and
labels are defined in 'ticksLabels'. There is nothing else to do.

We had to remove the skipped test because 'renderEnd' is not triggered
for line chart. We need to update nv.d3.

We already tried to fix this issue in the following commit:
https://github.com/odoo-dev/odoo/commit/c4937132a38873761fa0ac0b41c983b917cb52f1

Documentation:
https://github.com/d3/d3-axis#axis_tickValues

closes odoo/odoo#27828
2018-10-16 06:37:27 +00:00
Humberto Arocha 77a5afb58e [IMP] l10n_mx: Add stock accounts on the chart template definition
Closes #27746

closes odoo/odoo#27824
2018-10-16 06:13:28 +00:00
qsm-odoo f31ce5dc5e [FIX] web_editor: snippet options were not working if not pure text
Some snippet options uses an image or icon as description instead of
text (like the gradient option in some themes). Those were not working
anymore as the user click was considered on the image/icon instead of
the option itself.

closes odoo/odoo#27807
2018-10-15 14:15:06 +00:00
Nicolas Martinelli b532af7932 [FIX] pos_sale: report currency
- Set the compay currency in USD
- Set the rate of USD to 1.0, the rate of EUR to 2.0
- Create a EUR pricelist and associate it to the POS
- Sell a product in the POS at 200 EUR (= 100 USD)
- Go to Sales > Reporting > Sales

The POS order is evaluated at 200 EUR instead of 100 USD.

Since the sales report has been merged among the various sales channels,
we must keep the same logic when it comes to currency conversion.

opw-1890778

closes odoo/odoo#27786
2018-10-15 11:28:20 +00:00
Denis Ledoux b34b7d4270 [FIX] server.py: resource is not available on Windows
Rev. dcb56412d6
introduces limits for the threadedserver

It uses `resource` to set the hard limit,
but unfortunately `resource` is not available on Windows.

As in the GeventServer, we therefore set the resource
hard limit within a `if os.name == 'posix'` block,
as in rev.
c68b41bff2
2018-10-16 12:14:46 +02:00
Humberto Arocha f472ea705a [FIX] l10n_mx: Base Tax Received Account
Added account to cash basis and assign. On taxes with Tax Due Based on
Payment has been added as now is compulsory.

Closes #27739

closes odoo/odoo#27823
2018-10-16 06:02:50 +00:00
Julien (juc) Castiaux 71f188082f [FIX] mail: unicode character in email cannot be parsed
Sending email to addresses containing unicode characters
cannot be parsed by python and result in a UnicodeEncodeError.

This PR catch that specific exception and output a meaningful
error message.

Decision has been taken to not trigger any error message
client-side has it would have needed modifications on some
sensitive low-level backend code.

To reproduce:
- Configure odoo so it uses an email server
- Send an invoice to a partner whoose email address contains
some unicode characters (exemple: æøåÇÀ@example.com)

opw-1892409

closes odoo/odoo#27804
2018-10-15 13:42:58 +00:00
Alexandre Kühn 661483c026 [FIX] web: no duplication function for change_menu_section
Revision on https://github.com/odoo/odoo/commit/b7cf456560dc4fd7c1217ba90f0b5609466ede50

The commit above assumed the function `change_menu_section` was
mistakenly removed. However, it was turned into a handler function
and renamed according to our JS guidelines `_onChangeMenuSection`.

This commit removes the duplicated logic by removing the
function `_onChangeMenuSection` and using `change_menu_section`
as the handler for the bus event `change_menu_section`.

closes odoo/odoo#27809
2018-10-15 14:37:21 +00:00
Lucas Perais (lpe) f2ff47403f [FIX] website: multiwebsite supports optional 'subviews'
on the webiste sale, have a category with a subcategory
Then in the customize menu, enable "ecommerce categories"

Before this commit, the option to have collapsible categories wasn't there
This was because, due to multi_website, the children views of the "categories"
that were inactive weren't written upon when copying their parent

After this commit, the functionality is back

OPW 1893169

closes odoo/odoo#27796
2018-10-15 12:46:16 +00:00
Nicolas Martinelli 42c6db5e01 [FIX] pos_sale, sale: wrong currency stored
- Set the compay currency in USD
- Set the rate of USD to 1.0, the rate of EUR to 2.0
- Create a SO for a product costing 100, validate
- Go to Sales > Reporting > Sales

The product is evaluated at 400.

This is because the currency rate sotred is incorrect. The rate stored
is 0.5 instead of 2.0.

opw-1890778

closes odoo/odoo#27769
2018-10-15 08:16:45 +00:00
Nicolas Seinlet 38f6983df7 [FIX] mass_mailing: don't forward context
Don't forward context from mass mailing to partners view.
When grouping mass mailing by state, passing context makes
Odoo trying to group partners by state, and then get a traceback.

closes odoo/odoo#27775
2018-10-15 08:54:52 +00:00
Romain Derie 2018d0be35 [FIX] website_sale: wrong form selector on shipping change
Class `.hide` was replaced by `.d-none` with BS4 7f10b55a50
But the JS selector was still trying to retrieve the `.hide` form which lead to
an unexisting element, thus sending empty form.

Fixes #27714, closes #27774
2018-10-15 09:03:10 +00:00
Denis Ledoux dcb56412d6 [IMP] server.py: implements limits (real) for multi-threading
The multi-threaded server graceful stop policy is now as follows:
 - shutdown the server so it does not accept new requests (the socket remains open),
 - wait for remaining requests to finish up to a certain time (e.g. 1 second)

Previously, the multi-threaded server waited indefinitely for requests to finish.

The reload policy when a thread reaches a limit is as following:
 - wait there is no other running requests, up to 1 minute
 - then stop the server (with the above graceful stop policy applied),
 - then reload the server, therefore accepting new requests again.
- The socket is not closed during this operation.
  This allows the inverse proxy to queue the requests arriving during
  the time the server is shutted down and therefore not accepting new requests.
  This allows a transparent restart for the users, as their
  requests done during the shutting down of the server are not rejected but queued.
- When a thread reaches a limit, we reload the whole threaded server instead of
  just killing this thread. Killing a thread is not a good practice as it could
  lead to dead locks in case these threads acquire locks.
  Killing a thread that acquired a lock would lead for this lock to never be
  released.

Regarding the override of `_handle_request_noblock`:
  In `socketserver`,
  when `shutdown` is called
  `__shutdown_request` is set to True,
  https://github.com/python/cpython/blob/6a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3d/Lib/socketserver.py#L241-L249
  This tells the server to no longer accept requests. Callstack below:
  - https://github.com/python/cpython/blob/6a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3d/Lib/socketserver.py#L231-L234
  - https://github.com/python/cpython/blob/6a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3d/Lib/socketserver.py#L308
  - https://github.com/python/cpython/blob/6a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3d/Lib/socketserver.py#L487

  Unfortunately, this is very possible the HTTP server is already polling for a request when this flag is set
  to `True` by the main thread:
  - https://github.com/python/cpython/blob/6a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3d/Lib/socketserver.py#L232
  As the poll_interval is set to 0.5s:
  - https://github.com/python/cpython/blob/6a7b3a77b4b2be0badd24ee5f0fdbaa2e0e79c3d/Lib/socketserver.py#L215
  if a request arrives within 500ms after the server is shut down,
  the request is accepted, while the server is shutdown.

  We want to prevent this: Once the server is marked as shut down, we want it to no longer accept requests:
  so the inverse proxy knows it has to queue the request.

closes odoo/odoo#24982
2018-10-15 07:46:52 +00:00
qsm-odoo 4691c6be18 [FIX] website_blog: missing padding on s_latest_posts descriptions
closes odoo/odoo#27693
2018-10-11 16:41:08 +00:00
Odoo Translation Bot e774b2cb1c [I18N] Update translation terms from Transifex 2018-10-14 01:23:43 +02:00
Romain Derie 53f72dcab1 [FIX] website_sale: /shop 500 error if category is not model converter
The /shop route can take a `category` argument (a model converter).
  `/shop/category/<model("product.public.category"[..]):category>`

But if that `category` argument is passed through URL query string
(?category=9), it will raise an error when doing
  `category.can_access_from_current_website()`
as it is an integer since it did not went through the model converter

Note: Among probably others, that type of route is used when changing product
      order on shop

Closes #27490, closes #27724
2018-10-12 12:57:03 +00:00
Martin Trigaux 9649920987 [FIX] doc: add mention about rtlcss
Since 12.0, odoo support RTL interfaces but requires the package rtlcss

closes odoo/odoo#27729
2018-10-12 13:45:52 +00:00
Sébastien Theys c73efc27b7 [FIX] web: stabilize sequence for new records on last page
Before this commit, the compute sequence was relying on the fact the ID was used
as a secondary order key to get the right result.

This is necessary when adding items between pages because we don't resequence
the following elements.

However this was not necessary when adding new elements on the last page since
there are no following elements to resesquence in that case.

PR: #27639
2018-10-12 14:29:51 +00:00
Christophe Simonis a5772d4338 [MERGE] forward port branch 9.0 up to 75388edd9c 2018-10-09 16:23:35 +02:00
TWA 4cdc7c565d [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/enterprise#2515
2018-10-09 12:29:38 +00:00
Lucas Perais (lpe) cba5f7a98f [FIX] web: fetch dependency fields in x2many
Image field widget need the __last_update field alongside them
for caching purposes, though that field should never be present explicitly
in the views

Before this commit, the dependencies of field widgets were not merged into
the model's fields definition, creating a traceback when adding an image field widget
into a x2many list

After this commit, there is no traceback and the image field works properly

closes #27545
2018-10-09 14:16:56 +02:00
Christophe Simonis f6ea6ce951 [MERGE] forward port branch 11.0 up to c576800813 2018-10-09 13:55:53 +02:00
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
Christophe Simonis a799b13292 [REL] bump alpha version 2018-10-09 11:40:02 +02:00
Christophe Simonis 835b77ba94 [MERGE] forward port branch 12.0 up to ebe43bad9e 2018-10-09 11:37:30 +02:00
Alexandre Kühn 5c12a664d5 [FIX] web: click on href inside kanban record
Before this commit, when clicking on a link in a kanban
record having `href` that is set, it was opening the record
and accessing the `href`.

The intended behaviour is to not open a record if any children
component of the record contains either a click event or is
a link with `href`. The former was correctly handled, but not
the latter.

This commit fixes the issue by preventing opening the record
when clicking on a inner link with href from a kanban record.

Closes #24664

closes odoo/odoo#27529
2018-10-09 08:39:50 +00:00
Lucas Perais (lpe) 62cbc5f240 [FIX] board: translate custom views according to current user
Have a user in English, put a sale report as "favorite" (pinned to dashboard app)
Change the user's language

Before this commit, the pinned view was in English (because it was recorded that way)

After this commit, the pinned view is in the user's language.

OPW 1890664

closes odoo/odoo#27574
2018-10-12 08:36:19 +00:00
Odoo Translation Bot 44069cc4bd [I18N] Update translation terms from Transifex 2018-10-14 03:21:07 +02:00
Sébastien Theys 57ae9428b4 [FIX] web: prevent URL click from opening a record
If we click on a link, we only want to open the URL,
and not the record when the button is on a list.

PR: #27230
2018-10-12 12:45:38 +00:00
Robot Odoo 04eda06cb2 [FIX] web: do not create partner from calendar's sidebar
Fixes #27666

closes odoo/odoo#27720
2018-10-12 15:13:02 +02:00
Benoît Fontaine 347a3bd948 [FIX] web: use correct context attribue
Disable the possibility to create partner from calendar's sidebar
The option "can_create: false" was present but badly referred

Fixes odoo/odoo#27666
2018-10-12 11:58:19 +00:00
Benoît Fontaine a9c5da180f [CLA] signature for Linekio 2018-10-12 11:58:12 +00:00
len-odoo ad79cc09c6 [FIX] web: don't allow reference widget to be set on char fields
The reference widget is expecting a models list as selection attribute
in the field declaration.
It does not exist in the case of the char field.
Support for char fields was added to allow for external identifiers,
but it only works in readonly.
As a consequence, it tracebacks in Edit mode when used in studio.

We thusly remove char field from the list of supported fields.

opw 1892602

closes odoo/odoo#27708
2018-10-12 10:13:50 +00:00
Nicolas Martinelli fc1ba68c6a [FIX] sale_timesheet: zero timesheet
1. Create a SO with a product that creates a task on a new project
2. Create a timesheet on the task, with time = 0:00
3. Open the project overview from the projects dashboard or from the SO

A crash occurs because of a division by zero.

opw-1893397

closes odoo/odoo#27712
2018-10-12 09:54:04 +00:00
len-odoo 52d779007d [FIX] web: use read to update record values after resequence
Commit:
https://github.com/odoo/odoo/commit/818c18e55d0718286ff5bf332186a10f4d7a58ef
Updated the resequence logic in a way that was almost falser than before.
The added test however did work by coincidence, as index values were equal to
the sequence field values.
To be sure that we synchronize with what happens on the server, we do a read
after the resequence.
Additionnally, we take into account the result of the server resequence return;
if it is false, it means no resequencing happened, so we should not do a read.

opw 1867049

closes odoo/odoo#27184
2018-10-12 07:51:12 +00:00
Lucas Perais (lpe) 1ab53c27ff [FIX] website_[sale,delivery]: update freeshipping on delivery change
Since those two modules do not have a bridge, there was no support for changing the freeshipping line
when changing the delivery carrier

Now it has, at the price of ugly code

OPW 1871526

closes odoo/odoo#26935
2018-10-10 14:26:23 +00:00
Lucas Perais (lpe) 721260d2a7 [FIX] account: retrieve bank statement for process_reconciliation
Multicurrency is ON
Your company in USD

Make a bank journal in EUR
Create a statement and push reconcile

In the widget, create a line with a tax and hit reconcile

Before this commit, the amount_currency field of the tax move line was not filled

After this commit it is

OPW 1885014

closes odoo/odoo#27592
2018-10-10 14:56:56 +00:00
Nicolas Martinelli c576800813 [FIX] hr_expense: AccessError on product
- Install hr_expense and stock.
- Add enough products which can be expensed so that a 'Search More...'
  option is proposed.
- Restrict the rights of a user U to 'Employee' only.
- As U, create an expense, and click on the 'Search More...' option when
choosing the product

An AccessError is raised on `stock.move`.

The error is due to fields `qty_available` and `virtual_quantity`.

These fields are not necessary in that context, so we define a specific
tree view for this use case.

opw-1891399

closes odoo/odoo#27561
2018-10-09 08:22:12 +00:00
Odoo Translation Bot 75388edd9c [I18N] Update translation terms from Transifex 2018-10-09 10:13:22 +02:00
8445baa08d [FIX]web: do not crash when dismissing a modal with escape
stopPropagation of navigation_move event for where direction=cancel,
currently if navigation_move event throws error when user press escape
in dialog where dialog is opened from editable list record

Scenario: Install website_sale -> Open Product form(variant enable) ->
open variant tab -> open Attribute m2o form popup and press Escape on dialog
Result: Error
Expected: It should close dialog and keep editable list view record open,
btw m2o field should also be focused when dialog is closed but that's
another issue, will be fixed in another ongoing task

Related to Issue: #1873919

Co-authored-by: Vincent Schippefilt <vsc@odoo.com>
Co-authored-by: Mohammed Shekha <msh@odoo.com>
2018-10-09 09:46:39 +02:00
Nicolas Martinelli ebe43bad9e [FIX] l10n_lu: remove deprecated reports
The `account.financial.report` model has been removed, so these reports
are now deprecated. They will be added back in Enterprise.

opw-1891341

closes odoo/odoo#27559
2018-10-09 07:01:29 +00:00
Nikunj Ladava 293dbe267a [FIX] payment: fix invalid param on rpc fail
This commit is related to Task ID 1891721

closes odoo/odoo#27555
2018-10-09 05:42:29 +00:00
Nimesh Jethva fb460f8800 [IMP] stock: hide PO/SO on lot view during create&edit
It's not needed to see the many2many of PO and SO during the create and
edit since the lot could not be already sell or buy during its creation.

Task 1909002

closes odoo/odoo#28817
2018-11-29 06:03:39 +00:00
Robot Odoo 00e7de8079 [MERGE][FIX] im_livechat: correct configuration path and improved sentence
In the form view of a livechat, the instructions to configure with Odoo
website CMS was still referring to "Website Admin", instead of
"Website".

In addition to fixing this error, the sentence has been slightly improved,
as we have to regenerate the term anyway.

closes odoo/odoo#29115
2018-11-28 20:35:34 +01:00
Yenthe V.G 548268c82c [FIX] im_livechat: update translation term for improved sentence 2018-11-28 18:26:15 +00:00
Yenthe V.G 7a3c05cea7 [FIX] im_livechat: show correct path for configuration and improve sentence 2018-11-28 18:25:04 +00:00
Romain Derie a3210dc314 [FIX] base: fix asset generation when there is .less files
Since commit f7130556bb the compiled assets would be returned in a loop
before executing the rest of the `preprocess_css` method.
But every loop would override the previous one as it is `=` and not `+=`.

Fixes #27922

closes odoo/odoo#29109
2018-11-28 16:17:43 +00:00
Robot Odoo 0fb85032a7 [FIX] website_forum: show correct title on hover over accept answer
Description of the issue/feature this PR addresses: Fix wrong title on hover

Current behavior before PR: When hovering over the icon to accept an answer on the forum it will show the text "Send answer":
![image](https://user-images.githubusercontent.com/6352350/49157862-1a914b00-f321-11e8-8cd0-d98175ab9741.png)

Desired behavior after PR is merged:
The text says "Accept answer" as you're accepting an answer, not sending one.
![image](https://user-images.githubusercontent.com/6352350/49157238-97bbc080-f31f-11e8-81f7-c36950f7138e.png)

--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr

closes odoo/odoo#29101
2018-11-28 18:53:36 +01:00