Commit Graph
3933 Commits
Author SHA1 Message Date
Jeremy Kersten be8fc2296b [IMP] base, http_routing, website: allow custom routing rule
After this commit, you will be able (in technical mode) to update the url for
the python controllers.

Eg.
You can now rename /shop in /garden and /shop/product/ in /garden/vegetable/

Most of urls will be replaced at fly in the renderd qweb, with the function
url_for but all old urls will keep available. So if you access url /shop you
will be automatically redirected to /garden (308 Permanent Redirect).

As for cdn and other post-process of att, the automatically replacement in the
rendered qweb is only done when you will be not website editor. But the new
dispatch of URL will be applied in all cases.

For developper, since it is Permanent Redirect, don't forget to clear cache or
open chrome debug tool (with option 'Disable cache while DevTools is Open) to
see your lasts changes.

closes odoo/odoo#36555

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-09-30 13:58:14 +00:00
Damien Bouvy 652ebb96e5 [FIX] tests: correctly handle invisible fields in form proxy
The form proxy will raise an error if a required field is not filled,
even when the web client would let it pass through. Indeed, the web
client (correctly) assumes that a user cannot fill in an invisible
field and that something will probably be done on the server to handle
that (e.g. an override of the write/create or simply a command-handling
code by the ORM). Since invisible fields do not even get a widget
instaciated for them, no validation takes place whatsoever.

Since it is sometimes (for obscure reasons) necessary to include all
kinds of invisible fields in tree view (e.g. to get correct values for
related stored fields, somehow), it is possible that required fields
in a view are in fact not really required since they are ignored
by the web client and then correctly handled/modified server-side.

This commit adapts the test proxies to behave similarly to the web client
(since that is, after all, the goal of these proxies) and to ignore
invisible fields when validating views.

closes odoo/odoo#37432

Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
2019-09-30 16:20:51 +00:00
Raphael Collet 8606fb3df8 [FIX] models: copy() should recursively copy inactive records 2019-09-30 15:42:36 +00:00
Raphael Collet 4b1cb41cf7 [FIX] models, fields: cache consistency for one2many fields
Issue: after many2one updates, the cache of the corresponding one2many
fields was inconsistent when the latter depends on `active_test`.  One
of the values in cache was updated, while the other was left intact.

We simplify the cache by not making the field depend on context: the
cache value contains all the records in the relation (corresponding to
`active_test=False`).  The value of the field is automatically filtered
by the `active` field when the value is accessed.

This makes it easier to maintain the cache value, guarantees its
consistency, and avoids queries to read the one2many field with
`active_test=False`, after having set it with `active_test=True`.
2019-09-30 15:42:36 +00:00
RomainLibert 85eeaccf06 [FIX] tools: use user friendly message in case of error
closes odoo/odoo#37058

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-09-18 10:14:12 +00:00
Jairo Llopis 974913c316 [IMP] Support psycopg2.sql module
[`psycopg2` includes a submodule called `sql`][1] which provides more safety and comfort when dealing with raw SQL queries.

As of today, it works fine with Odoo unless SQL query logging is enabled.

This patch fixes that problem, allowing usage of that module.

[1]: http://initd.org/psycopg/docs/sql.html

closes odoo/odoo#37561

Signed-off-by: Christophe Simonis <chs@odoo.com>
2019-09-30 08:08:07 +00:00
Vincent Schippefilt e06117bd85 [FIX] web: multi-hell-ditable list
only activate multi-edit on list with specific attribute.
When the attribute multi_edit="1" is set on the tree view the user
can select a/some records and it will activate the multi-edit
with confirmation dialog (even for a single record).
Also, on-change are not applied when using multi-edit

closes odoo/odoo#37525

Signed-off-by: VincentSchippefilt <VincentSchippefilt@users.noreply.github.com>
2019-09-30 08:57:23 +00:00
Odoo Translation Bot d7b8831ea8 [I18N] Update translation terms from Transifex 2019-09-29 01:22:33 +02:00
Olivier Dony cc6c0c8b21 [IMP] http: remove outdated logic for redirects
Section 7.1.2 of RFC 7231 requires preservation of URL fragment
through redirects. Our old JS redirection code was necessary when
browsers did not consistently implement it. Apart from a few odd
and marginal exceptions they all do it now, so we can stop that.
2019-09-28 03:54:54 +02:00
f402afd7b5 [REF] website_event, *: review event design and features
* event, website_event_questions, website_event_sale,
  website_event_track, base

Part of https://github.com/odoo/odoo/pull/37009
task-2043872

Co-authored-by: qsm-odoo <qsm@odoo.com>
Co-authored-by: Jérémy Kersten <jke@odoo.com>
2019-09-27 13:36:37 +00:00
svs-odoo a3281058b0 [FIX] models: check_company on res.users field
Before this commit, when a record of a model who has a `res.users` field
it could fail the `check_company` because the check looks for
`company_id` who is the default company of the user.
In the case of `res.users`, `check_company` must look after the
`company_ids` of the user.
2019-09-27 11:34:54 +00:00
Xavier Morel 77099c54b6 [FIX] core: o2m modifiers in the SSF
Because the sub-record values would not necessarily get fetched
ever (whether default or stored), the computation of modifiers might
blow up if it relied on one of the un-fetched un-specified fields.

One such situation is trying to create a partner with child partners
if base_address_city is installed: the module adds a readonly attr
predicated upon the parent_id, without explicitly providing such the
field would be missing from the O2M record's values.

Closes #37176

closes odoo/odoo#37452

X-original-commit: 184d1b69eac2b78c72228c81c5c6cf8cc4a56eb4
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
2019-09-25 16:37:19 +00:00
fw-bot c8d09167fd [FIX] tools: crop & resize image crashes
- When trying to access an image that need to be resized and cropped,
  the code could crashes.

  This is due to the fact that PIL expect to work with integer for
  sizes, but in some cases we provide floats

closes odoo/odoo#37442

Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>
2019-09-25 15:12:46 +00:00
David Beguin 25a299dfc1 [FIX] tools, crm : remove Flanker for email validation
Since it appears that email validation feature from Flanker v0.9.0
is completelly broken (the lib explodes when calling
address.validate_address('some@address.xxx')), Flanker is then removed
and email validation will be done only using the email_normalize method.

Task ID: 2044539
PR #37413
2019-09-25 14:42:31 +00:00
Aurélien Warnon 095e373501 [IMP] tools: add support for 'add_direction' parameter on '_format_time_ago'
This commit adds support for the parameter 'add_direction' on the '_format_time_ago' method
from tools.
This will allow formatting to '25 minutes' instead of '25 minutes ago'.

Preparation commit for the social 'feedback' task.

Task#2075858
2019-09-25 11:17:26 +00:00
Victor Feyens 07631a5185 [IMP] * : manifest module categories cleanup
closes odoo/odoo#35754

Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
2019-09-25 14:03:45 +00:00
qsm-odoo cf27ff8fd3 [IMP] http, *: review cache TTL values
* base, web

Google now recommends a TTL of one year for static contents. We used to
use 1 week in almost every case. This commit increases that value to one
year for safe resources, like assets bundles which contain a specific
hash in the URL which changes if the bundle is recomputed anyway.

Note: this commit refactors the code so that both the one week and one
year durations are defined in http.py and used by others apps. Loading
the library "locale" file used to be done with 10-hours-cache, this has
been increased to 1-week-cache by using the http.py STATIC_CACHE var.

closes odoo/odoo#37402

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2019-09-25 11:55:30 +00:00
mcm-odoo 69800419f8 [FIX] res_partner: make address column wider
Before: the address column was 50% wide because of a span in the labels
column which causes its column to be 50% wide.

Now: replaced the span by a label, the columns have the right sizes.

task-2075905

closes odoo/odoo#37331

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-09-24 07:55:26 +00:00
Martin Trigaux c667e95224 [I18N] *: export saas-12.5 source terms
Still without demo data

closes odoo/odoo#37274

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-09-24 07:33:09 +00:00
Martin Trigaux 35a9150d79 [FIX] *: add missing model description
Some models did not specified a _description
2019-09-24 07:33:09 +00:00
Martin Trigaux d7a4085b00 [FIX] base: improve model description verification
When a model inherit from another, it still must have a _description
specified if the _name is different

Before this commit, mail.test.cc inherited from mail.thread.cc without
specifying a _description but this was not raising any issue
2019-09-24 07:33:09 +00:00
Raphael Collet 5d97c47e54 [IMP] base: use many2one_reference for res_id on ir.attachment
This helps for updating inverse fields without making queries.

Due to this change, a `flush` has to be added in the portal attachment test to
actually compute the inverse after the change of `res_id`.
2019-09-23 20:55:39 +00:00
Raphael Collet afdfdbfa5b [IMP] base: inverse datas of ir.attachment during create
Before this commit, the inverse of `datas` would be computed after the `create`,
which would lead to unnecessary queries, not only for writing the new values,
but also because of the re-computation of fields that depend on these values.
2019-09-23 20:55:39 +00:00
Raphael Collet f047425b82 [IMP] models, fields: initialize cache to None for related fields
This makes sense because in `create` the "previous" value of a field is
obviously non-existent.

This avoids having to fetch pre-existing attachments when they are known to be
inexistent, which optimizes stored related binary that are computed post-insert.
2019-09-23 20:55:39 +00:00
Sébastien TheysandAdrian Torres 9112972e15 [IMP] fields: write only once per Image field
Before this commit, flushing a model that uses the `image.mixin` would generate
twice as many queries as it should.

This is because `_compute_related` is not meant to be overridden. In the
override of `Image` we call `super()` then post process the records by
reassigning each record's relevant image field with `_image_process`.

The `super()` will assign the field of the records once which
will in turn trigger a `write` (and thus, will generate queries) then
after the `super()` call we reassign them which will re-trigger the same
`write` and the same queries.

With this commit, instead of overriding `_compute_related` we extract the
processing to a method that can be overridden, so that the `write` is called
simply once.

The result, obviously, is that queries related to the `write` are cut in half.

Related PR: #36683 & #36288

Co-authored-by: Adrian Torres <adt@odoo.com>
Co-authored-by: Sébastien Theys <seb@odoo.com>
2019-09-23 20:55:39 +00:00
Raphael Collet 50c7941fa6 [FIX] fields: set model_field on related many2one_reference fields
This fixes an issue when a Model A with a `many2one_reference` is inherited in
Model B with `_inherits`, and another Model C defines a `one2many` having as
inverse the inherited `many2one_reference` in Model B.

Without this commit, the value of `model_field` is `False` by default for the
field in B, which would lead to incorrect queries when building
`get_domain_list` for the `one2many`.
2019-09-23 20:55:39 +00:00
Martin Trigaux 2471ee506f [FIX] web: translate html fields
This commit fixes:
- body of a email.template in a small field
- translation of website_description of a product does not show the
  source of the translation
- translation of website_description of a product shows the full
  content for the current language

HTML fields are typically fields with longer of content.
If the field is an HTML field, it should be displayed in a textarea,
like the text fields.

Most of HTML fields are split in meaningful chunks of content (using
xml_translate or html_translate method).
For these fields, the source must be displayed.

Also sort the entries on the source to have a consistent order

closes odoo/odoo#37215

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-09-24 15:52:55 +00:00
Christophe Simonis d67b2483e5 [MERGE] forward port branch saas-12.4 up to 9ed4872ea0
closes odoo/odoo#37372

Signed-off-by: Christophe Simonis <chs@odoo.com>
2019-09-24 17:45:37 +00:00
Christophe Simonis ac4fc6e7c7 [MERGE] forward port branch saas-12.3 up to bd3e510edb
closes odoo/odoo#37314

Signed-off-by: Christophe Simonis <chs@odoo.com>
2019-09-24 09:44:56 +00:00
Denis Vermylen bd3e510edb [IMP] odoo: dump stacktrace of timed out threaded workers
So the logs contain some indication as to what was exceeding the limits.

closes odoo/odoo#37303

X-original-commit: 0a266f444a0abda026d09ad88024dca1c50c92b9
Signed-off-by: Denis Vermylen <Icallhimtest@users.noreply.github.com>
2019-09-23 14:16:04 +00:00
qsm-odoo c987515c9f [FIX] base: support flex-wrap in wkhtmltopdf
As explained here:
https://github.com/odoo/odoo/commit/770aec399c4e6e29cfc5854318cbda19a605315d#diff-3d7991d8bc534e0372f0bd9b4f9165a7R424
we have to post-process the generated css to add some vendor prefixes.

The flex-wrap property was not post-processed yet.

Related to opw-2045424

closes odoo/odoo#37283

X-original-commit: 8c251ec835edb04821cd45087f92756be3d5731f
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2019-09-23 13:00:38 +00:00
Florimond Husquinet (fhu) 187f8e4369 [FIX] base: general settings crashes when a setting is None
Go to Configuration > General Settings.

Before this commit:

if a setting is None, a stack trace appears.

After this commit:

a warning message is logged in this case, but there is no crash.

closes odoo/odoo#37271

Opw: 2075047
X-original-commit: ed64477d0a9fc58a577d9174a347268186eff70f
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-09-23 11:44:09 +00:00
Nicolas Martinelli 69fceb8f42 [FIX] base: KWD digits
KWD has 3 digits.

opw-2071909

closes odoo/odoo#37270

X-original-commit: 4d766278504d43646a4158330923eb92194348c8
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-09-23 11:39:55 +00:00
Denis Vermylen 4fb712f729 [FIX] service: do not call nonexistent function
omission in d26e253edd

kill -3 (SIGQUIT) is not processed like the other signals so it doesn't
go through this bit of code, but leaving the AttributeError lurking
there is not a good idea.

closes odoo/odoo#37221

X-original-commit: ac65ef0208a5ec814d263aeb44a98b47a5ee3947
Signed-off-by: Denis Vermylen <Icallhimtest@users.noreply.github.com>
2019-09-21 13:59:06 +00:00
Denis Vermylen 81df4d07b7 [FIX] base: log when a cron job is done
Missing log for analyzing cron issues.

X-original-commit: 9a88fce496f5f6a08b0f9861b0951ee987c60d5e
2019-09-21 13:59:05 +00:00
Odoo Translation Bot e41f468972 [I18N] Update translation terms from Transifex 2019-09-22 06:10:13 +02:00
Nans Lefebvre 151666b79d [FIX] service: clear environments between transaction retries
Initial bug report, full of red herrings:
receive two support requests by email while on Odoo.sh, the first creates a
ticket, while the second replies to the server with the error:
550 Requested action not taken: mailbox unavailable

When a request is done, the service check function tries each request multiple
times when getting Operational errors.
When two email are received within a 'short' amount of time (e.g .1 second)
the two requests are initiated with a new cursor.
When both mails generate the creation of a new record of the same model,
the second cursor is going to fail because of an:
ERROR: could not serialize access due to concurrent update
However, the record we used in the computations needed in the creation of the
second record have been added to the environment.
When that second creation is retried, it will operate on the same records,
and find them in the todo, with the environment that was obtained for the first
trial. Since the cursor is closed, this crashes.

To explain the bug report, Odoo.sh transfers the mail through an xmlrpc
to process the mail.
Because of this crash, the server interprets the lack of well-formed response
by a generic 'mailbox unavailable'.

opw 2060476

closes odoo/odoo#37165

X-original-commit: 845eecdfa7b27d84862e94f4b63d40a851e0c410
Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-09-19 15:44:59 +00:00
Nans Lefebvre 7571b086bd [FIX] base: fix portal rights update
Commit c3717f3018 added a (5, 0, 0) command when modifying groups_id of any
non-internal user, to avoid the situation where the various implications would
end up giving the portal user group_user rights.
This risk is avoided by commit f206714af0, which added a constraint
check_one_user_type, which would raise in that specific case.
The last missing piece was 9badedcd98f; when groups are added through settings,
they are added through the implied_groups of the group model.

The (5,) command has the unfortunate side-effect to remove the portal group
from a user if a write is triggered programmatically.
If that happens, then the 'signing up' process end-destination is a 500 error.

Now we simplify the logic that keeping the same behaviour for implied_ids for
internal (group_user) and non-internal users.
We keep the (5,) command in one case: if a user is demoted to portal or public,
he may have groups should be reserved to internal users, but that do not imply
group_user (which would raise).
To avoid that, we remove all its groups, since there is no clear distinction
between technical display groups and actual privilege-granting groups.

opw 2041606

closes odoo/odoo#37144

X-original-commit: 29723e351d5dc5e5ea055c80da86f4e871909de9
Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-09-19 12:49:11 +00:00
Victor Feyens 29ce2cab28 [DOC] Base : ir.actions.server : fix wrong docstrings.
Wrong since 8fa9f7d6d4 refactoring 
ir.actions.server.
2019-09-18 08:54:18 +00:00
Christophe Simonis 080f8b1f96 [MERGE] forward port branch saas-12.3 up to d8ce75466e 2019-09-17 17:49:09 +02:00
Xavier-Do d8ce75466e [FIX] base: fix rte translator timeout
In some cases, after installing a new language in rte_translator tour,
some query using ir_translation table will become very slow.

Identified query:
SELECT res_groups_users_rel.uid, res_groups_users_rel.gid
FROM res_groups_users_rel, "res_groups" LEFT JOIN "ir_translation" as "res_groups__name"
ON ("res_groups"."id" = "res_groups__name"."res_id"
AND "res_groups__name"."type" = 'model'
AND "res_groups__name"."name" = 'res.groups,name'
AND "res_groups__name"."lang" = 'en_US'
AND "res_groups__name"."value" ! '')
WHERE 1=1 AND res_groups_users_rel.uid IN (2) AND res_groups_users_rel.gid = res_groups.id
ORDER BY COALESE("res_groups__name"."value", "res_groups"."name")    OFFSET 0´

During post_install this query will become slower (between 0.7 and 2 seconds) ~50%
of the time, when this usually take less than 0.1 second.

For some tour step, this query is executed several times, making a simple
/web loading going from less than one second to more than 10 second, breaking the tour.

The main intuition behind that would be that the query plan completely fails,
mainly because postgress is to busy and doesn't have time to launch an analyse
when runbot load is high.

This commit proposes to execute a manual ANALYZE on ir_translation table
after a new language is installed. Tested with 40 builds, rte_translator never failed
with this fix.

cherry-pick of fc5934dc45

closes odoo/odoo#37013

X-original-commit: 57f91453cb567d8a7a29137b321a630fe0dbb9a6
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2019-09-17 12:40:41 +00:00
Raphael Collet e4fc7568c1 [FIX] tests: clean up environments in SavepointCase
The following issue occurs nondeterministically: a test fails when
trying to flush pending updates with a user id that does not exist.
This only happens with `SavepointCase` tests.

Here is the explanation: the method `cr.savepoint()` retrieves an
environment to flush pending updates, and the chosen environment has a
user that was created in another test, and thus no longer exists.  The
problem is that `Environments.envs` contains environments that are no
longer supposed to be used.

The solution consists in, after the test, discarding the environments
that were not present before the test.

closes odoo/odoo#37341

Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
2019-09-24 08:45:54 +00:00
Laurent Smet c12bd7125a [IMP] Improve assertRecordValues ouput for tests in common.py
Display the differences in assertRecordValues instead of the whole inputs.

closes odoo/odoo#36613

Signed-off-by: oco-odoo <oco-odoo@users.noreply.github.com>
2019-09-12 09:58:49 +00:00
Odoo Translation Bot 5f1638e42d [I18N] Update translation terms from Transifex 2019-09-15 06:21:03 +02:00
Nans Lefebvre 459e6dc1d2 [FIX] base: check group constraints when adding implied groups
Since commit 5f12e244f6, the write of implied groups is done directly in SQL,
bypassing the ORM writes, and thus bypassing the python constraints checks.
In particular such a constraint was added in f206714af0.
We add back an explicit check of this constraint;
however we rewrite it in SQL to be fast.

closes odoo/odoo#35411

closes odoo/odoo#36769

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-09-12 14:03:06 +00:00
Xavier ALT 0dccd432f1 [FIX] base: on partner kanban, show company default image if contact has none
For contract of type 'Company' which have no image set, we should display a
specific default 'company' placeholder image instead of default placeholder.
This allows to easily identify which records are companies.

This was already the case up to commit 6153d65664

OPW-2067475

closes odoo/odoo#36783

X-original-commit: 42c08846296d86fb3196f430eec45dd39cf1a8f5
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-09-12 13:20:52 +00:00
Jairo Llopis 5dad570423 [FIX] *: remove buggy calls to with_context
When .with_context() is called with a dictionary as 1st positional
argument, it will replace context (and not modify the referenced keys)
It may create bugs when losing the content of the context (e.g. remove
partner's language)

This is a partial merge of #36164 without the inventory part as
discussed.

closes odoo/odoo#36729

X-forward: 4717ccfa
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-09-12 06:18:18 +00:00
Nans Lefebvre 682067f54e [FIX] base: fix logger message
Simple typo; instead of a logger message, an exception is output in the logs.

closes odoo/odoo#36686

X-original-commit: 83030b6ae20bc9d32b2c7a83ea5a1dca33e5f9cf
Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-09-11 10:28:24 +00:00
Nicolas Martinelli 9e30276556 [FIX] base: address and name split on 2 lines
The name and address printed on any PDF report (e.g. SO or RFQ) is very
likely to be split on 2 lines once it is long enough. For example,
'My Company (Chicago)' will be displayed on 2 lines.

This is due to 0c6e0d660e and 064eb0a4f4.

opw-2061553

closes odoo/odoo#36498

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-09-11 10:38:33 +00:00
Lucas Perais (lpe) 6ebbea1681 [FIX] base: barcode qweb field correct API
Before this commit, the barcode Qweb Field had a
option called "type", which meant what is the mapping between
numbers and barcode, that mapping is called a symbology
https://www.barcoding.com/resources/barcoding-basics/barcode-symbologies/

This option "type" collided with what the qweb engine does
at
```
qweb > _compile_directive_field
that calls
ir_qweb > _get_field
```
It resulted in a crash where type = "barcode" was not a valid symbology
to pass to the barcode lib

It is safe to say that this barcode widget was never user, otherwise it would have crashed

This commit changes that non-functioning API, and the barcode renders well

OPW 2066870

forward-port of #36499 (330d862513dba5bbc4716fe9c8694fd0db696934)
closes odoo/odoo#36499

closes odoo/odoo#36658

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-09-11 08:05:34 +00:00