Commit Graph
985 Commits
Author SHA1 Message Date
rde 2a43636ae9 [FIX] import_xml: ir.ui.view model does not have a page attribute anymore
Before this commit, user could set page attribute on <template> tag in xml
Now, we prevent user to be able to set page attribute.
2017-09-26 16:10:38 +02:00
Daniel Reis 53fe7ae462 [IMP] modules: on module update or init always update module list
Was only done when updating base.
The cost of scanning the addons path should small in comparison to the update
time itself.

Followup of #9133
Closes #9140
2017-09-26 13:32:53 +02:00
Raphael Collet e671679183 [FIX] fields: do not use int() to retrieve record id
When reading a one2many field, the inverse field of the retrieved lines may
already be assigned in cache to a new record.  This can happen during an
onchange.  In that case, the algorithm crashes.  Let's clean it up!
2017-09-26 11:43:37 +02:00
Fabien Meghazi cc9eb8c498 [FIX] P#: ir.mail_server: fix bug introduced in 200612ca1e
The variable `email_body_utf8` has been renamed to `email_body` during
PythonThreeTization but there is a leftover:

https://github.com/odoo/odoo/commit/200612ca1ef1#diff-85eeeed32c7f2fe285884f3661b49881R326

Backport of 63a4370afd
2017-09-26 11:33:33 +02:00
Raphael Collet b4824d78eb [FIX] mail: avoid re-reading a value given to create
After a message is created with a given `author_id`, reuse `author_id` instead
of `message.author_id.id`.
2017-09-26 09:32:54 +02:00
Raphael Collet 3ca6392a3f [FIX] mail: simplify ormcache parameters to avoid queries
Make the cache depend on `user` instead of `user.groups_id`.
This saves 2 queries on each write/create of `mail.thread`.
2017-09-26 09:32:54 +02:00
Xavier Morel 059710b2b0 [FIX] reading of HTML and XML view fields in P3
Reading them as bytes would not crash but could fill the corresponding
field with pretty much garbage. Turns out Html fields inherit from
Text and XML content generally goes into text fields, so handling
these items as text makes much more sense than as binary data.
2017-09-25 17:00:43 +02:00
qsm-odoo 4d6041c365 [FIX] base: use correct order to display views' inherit_children field
Following commit https://github.com/odoo/odoo/commit/dbb931976fd102a1eceea4ebf195efea7576f260:
The inherit_children field was not showing the proper order of
inheritance in form view, making debugging complex.

Note: this commit adds the code to show the proper order but revealed
a bug which will be fixed in another commit: the default_order of
x2m views only considers the first ordering field.
2017-09-25 14:15:13 +02:00
Martin Trigaux 39e83e84c7 [I18N] Update translation terms from Transifex 2017-09-25 14:05:27 +02:00
qsm-odoo dbb931976f [FIX] base: use better view inheritance (secondary) order
Currently, the view inheritance order is 'priority,name,id', the
default order for the 'ir.ui.view' model.

This commit changes the order to 'priority,id' while computing
inheritance. This make views chronologically ordered according to their
installation order, after the primary sorting on `priority`.

This helps to automatically solve some inheritance order bugs that would
have traditionally required explicit view priorities.

Considering this example: an app C depends on two others apps A and B.
We want the LESS files of C to come after the LESS files of A and B as
CSS rules order matter. The only solution to make sure of that with the
current implementation is to change priority field of C to be higher
than 16 (default of A and B). With a complex hierarchy, that will induce
errors. Ordering by 'priority,id' solves the problem, indeed views' ids
of apps A and B will be lower than views' ids of app C. The "name"
ordering is fine for list views display but not for views inheritance.

Closes #19658
2017-09-25 12:03:55 +02:00
Olivier Dony f565a18cad [FIX] P3: repair parsing of lessc compilation error
Coercing the result of the compilation to text is easier and more
portable than P3-specific code for putting the Popen streams in text
mode.

Fixes #19659
2017-09-25 12:03:54 +02:00
Olivier Dony e98e8e9b1b [FIX] P3: fix server shutdown on Ctrl+C
This is an attempt at fixing the long timeout occurring on P3 when
trying to stop the server with Ctrl-C, both in multithreaded and
multi-process mode.

The root cause is the implementation of PEP-0475[1] as of Python 3.5,
which make system calls silently resume after an interrupt.
With this PEP, interrupting a syscall now requires the signal handler to
raise an exception, which get propagated in places where they did not
use to occur (e.g. time.sleep() used to return early when interrupted)

The solution handles 2 separate cases:

1. Multithreaded

In multithreaded mode, stopping the server requires interrupting
the main thread, while ensuring that all other threads are daemon ones.
The previous commit fixed the latter.
Interrupting the main thread is easy, because it simply sleeps until
it gets interrupted. And it already catches KeyboardInterrupt for
win32 quirks. All we need to do is thus to raise a KeyboardInterrupt
in the signal handler, as proposed in PEP 475 (Use Case 2)

2. Multi-process

In multi-process mode, stopping the server requires interrupting the
main thread of each process. The signal is already propagated to all
processes, so it should be as simple as for multithreaded mode.
Unfortunately, the main threads are far from idle in this case,
and raising a KeyboardInterrupt from the signal handler causes a
series of ugly tracebacks before stopping the server.
Effective, but frightening for the admin.

Instead of doing that, we can watch the wakeup file descriptor
(also suggested in PEP 475, Use Case 2) during the sleep() part of the
main loop of each worker. An interrupt signal won't therefore stop
the server immediately, but will wait until each worker is done with
their current request.. even better.
For select() syscalls, this is done with an extra pipe fd that is passed in
the "read fds", and used as wakeup fd.
And for sleep() syscalls, that don't support a wakeup fd, we can
replace them with an equivalent select() call on the wakeup fd, and
a timeout.

The combination of the above seems to restore a relatively fast
interrupt shutdown on both Python 2.7 and Python 3.5, in both
multithreaded and multi-process mode, with no surprising traceback.

[1] https://www.python.org/dev/peps/pep-0475/
2017-09-25 11:22:09 +02:00
Olivier Dony be59d0b85c [IMP] tools.dumpstack: show extra thread info
By using the thread's repr() we get its type, name, daemon status and
ID, all at one time. No need to include them separately.

Fall back to the threadId in case the repr() is empty, which can
happen for exotic threads (the gevent main thread seems to be like that)
2017-09-25 11:22:09 +02:00
Lucas Perais (lpe) e340acc174 [FIX] base: no logo on company shouldn't prevent printing reports
Before this commit, when trying to preint an invoice when minimal company details were set (without the logo),
- the wizard of company edition was not clear enough on what was needed
- did not print on clicking save

After this commit:
- the wizard is clearer, specifically it tells the user to add a logo
- clicking on save now prints the invoice, even though no logo has been set on the company
2017-09-25 08:53:41 +02:00
Lucas Perais (lpe) 5589f102e6 [FIX] base: fixed display of company details for printing
Also, rebuilt preview pdf
2017-09-25 08:53:31 +02:00
Lucas Perais (lpe) d9134d7331 [FIX] base: Py3 fix in ir_action_report 2017-09-25 08:53:21 +02:00
Prakash Prajapati 5a96672453 [IMP] stock: rename Inventory Control menuitem 2017-09-21 18:44:59 -07:00
Olivier Dony 2257583bb5 [ADD] ir.attachment: add token field for external access
Introduce a new attachment field (access_token) to allow external
unauthenticated access. This will be an opaque unique number
(typically a UUID) that should be provided via an appropriate
controller, for unauthenticated display.

The field is intended to be NULL unless unauthenticated access has been
allowed, in which case a value will be set for the access_token.

This could be used e.g. for allowing access to images within mailings,
even when the recipient is not logged in (which is sometimes entirely
impossible, when email providers use restricted proxy servers to
load images)

Note 1: this is still a work-in-progress, but serves to freeze the API.
The implementation of the access check and provisioning of the new
field will be added later.

Note 2: namimg collisions with the file download token prevent the use
of a shorter 'token' parameter for download routes.

Apologies for the late (and incomplete) addition in saas-18 :-/
2017-09-21 23:48:36 +02:00
Christophe Simonis 5c51a0ad4d [MERGE] forward port branch saas-17 up to bf4ccb21f6 2017-09-21 18:14:55 +02:00
Christophe Simonis bf4ccb21f6 [MERGE] forward port branch saas-16 up to 88395bdb8e 2017-09-21 17:18:49 +02:00
kujiu (@havelock.kujiu.org) 1fbaa11c6f Revert "Add attributes and elements on XML views' checks to avoid errors with Studio (renamed_field and studio_groups) (#19623)"
This reverts commit fc5d6e1ab9.
2017-09-21 16:40:16 +02:00
kujiu fc5d6e1ab9 Add attributes and elements on XML views' checks to avoid errors with Studio (renamed_field and studio_groups) (#19623) 2017-09-21 16:21:53 +02:00
Raphael Collet c6b184bb23 [FIX] fields: optimize many2many command (6, 0, ids) on new records
The command does not need to remove existing relations, as there is no relation
yet on new records.  This saves one query per many2many field with that command
in a `create`.
2017-09-21 16:10:13 +02:00
Raphael Collet 59a8234fbc [FIX] mail performance: avoid useless queries
Avoid making queries that are known to return empty recordsets, and do not
format messages to be notified on no channel.
2017-09-21 16:10:13 +02:00
Christophe Simonis 88395bdb8e [MERGE] forward port branch saas-15 up to 3ad3b34df6 2017-09-21 16:00:27 +02:00
Christophe Simonis 3ad3b34df6 [MERGE] forward port branch saas-14 up to 537d1ec0d2 2017-09-21 15:08:34 +02:00
Christophe Simonis 537d1ec0d2 [MERGE] forward port branch 10.0 up to e245135421 2017-09-21 14:01:41 +02:00
Martin Trigaux 9d2e825340 [I18N] export saas-18 source terms
saas-18 will be the future version 11
2017-09-20 16:14:08 +02:00
Martin Trigaux 289b6046d6 [FIX] tools: py3k export translations
Previous code was converting the text to bytes which fails below

AttributeError: 'int' object has no attribute 'isalpha'
2017-09-20 16:13:37 +02:00
Raphael Collet f776f9f3dc [FIX] ir_http: routing map crashes after having run unittests
If the server was launched with ``--test-enable``, `routing_map` tries to load
the routing map of module `None`, which is the current module being tested...
2017-09-20 14:52:43 +02:00
Nicolas Lempereur a0fddebe64 [FIX] base: prevent bin_size/binary visual defect
Changing the address type of a contact in the "Contact & Addresses" tab
could in some instance lead to a dead image (just visually, saving it
would not change it) because the image is set to something like
"data:image/png;base64,5.23 Kb" because of a combination of kanba/form
x2many view, onchange, the differences of field present.

In 9.0 this did not happen because the image was not a field in the form
view corresponding to a contact of the kanban contacts view.

In saa-15 thanks to bf26445 the image_small is different than image in
the kanban view and this got us out of the issue.

In saas-16 it is solved even further because new views only load missing
fields.

This commit just get out of the issue by preventing an update of the
records field (with bin_size which caused the issue of the image) when
opening the modal form view of a contact's contact.

Ideally we should solve this more deeply but this is dangerous code to
change (eg. removing the bin_size would solve it but this was done for a
reason and could affect performances) and the effect is just visual in a
very particular set of factors (if we save the form after the image is
dead, the previous image reappeared).

opw-765952
closes #19491
2017-09-20 13:36:51 +02:00
Raphael Collet 69161ed69c [FIX] mail: performance, replace filter() by condition in domain 2017-09-20 13:30:56 +02:00
Raphael Collet 49f6a1b544 [FIX] fields: improve performance of many2many fields
An update by a list of commands is now guaranteed to have at most three SQL
queries to update the relation, whatever the number of commands and records.
2017-09-20 13:30:56 +02:00
Raphael Collet 87970ea344 [FIX] mail: add cached method to retrieve message subtypes
This saves queries to retrieve message subtypes for a given model.
2017-09-20 13:30:56 +02:00
Raphael Collet 38193456d4 [FIX] test_performance: log when number of queries is less than expected 2017-09-20 13:30:56 +02:00
Christophe Simonis 30b1b89496 [FIX] odoo shell: P3 compatibility when reading script from stdin 2017-09-20 11:31:21 +02:00
Martin Trigaux 27ca297e64 [FIX] tools: python3 compatibility for export terms
Avoid error in babel getting the wrong source file
TypeError: startswith first arg must be str or a tuple of str, not bytes
2017-09-20 11:15:20 +02:00
Deep Patel 9b9fcfe628 [FIX] web,base: document template widget in settings
Go to General Settings, click on 'Change Document Template', and
in the opened dialog, click on a template.

Before this rev., it automatically closed the dialog, which was
not really convenient.

This rev. introduces a new field widget (image_selection) for
this use case, and ensures that the dialog doesn't close when
a template is selected.

Test written by @mba-odoo
2017-09-20 10:56:57 +02:00
Raphael Collet 3069734d4f [FIX] models: in method onchange, filter out pseudo-fields 2017-09-19 17:06:04 +02:00
Prakash Prajapati 5423efe0a3 [FIX] base: preview invoice pdf template
Go to Settings > General Settings, click on 'Change Document
Template', in the dialog, click on the preview: 'Error: Failed
to load PDF document'.
2017-09-19 13:20:55 +02:00
Christophe Simonis d15a31ae6d [MERGE] forward port branch saas-17 up to 2a343d7c9c 2017-09-19 11:58:01 +02:00
Foram Katharotiya 2b3c8e6ca9 [IMP] l10n_in: GST introduced as new legal requirements.
aka 'Indian localization out of the box'.

Details:
     GST introduced, module refactored.
     Update GST chart of account, tags and SGST, CGST & IGST taxes.
     Replace vat label with GSTIN in reports & views.
     Added HSN Code field and display it on invoice form view & report.
     Added pin number field in res_country_state.
     Show the total amount in words based on Indian numbering system on form view of customer/supplier invoice/refund.
     Arrange address format of India country.
     l10n_in_schedule6: Introduce new GST taxes, chart of accounts & account tags.
     l10n_in_sale, l10n_in_purchase, l10n_in_stock: added modules to add hsn code and replace vat with gstin in sale, purchase & stock reports

Was task: 33241. Was PR #18952
2017-09-18 22:17:43 +02:00
qdp-odoo ec96c0b3c2 [IMP] base: add vat_label on res.country
That allows to display the 'vat' field under the right label in reports.
2017-09-18 21:57:48 +02:00
Stéphane Bidoul (ACSONE) 8bf06adc8d [FIX] namespace packages: move from pkg_resources-style to pkg_util
Deprecates the previous pkg_resources-style packages. Our use was
not entirely spec compliant, and it broke with setuptools 31.
More information in https://github.com/odoo/odoo/pull/15718

Instead, use the pkgutil-style namespace packages.
This is spec compliant as long as all other distributions providing
odoo.addons use PEP 420 namespace packages (i.e. no __init__.py).
So this mechanism fully works on Python 3 only, but does not break
anything on Python 2.

See also:
https://packaging.python.org/guides/packaging-namespace-packages/#pkgutil-style-namespace-packages

Closes #19517
Fixes #15718
2017-09-18 16:05:31 +02:00
Xavier Morel 313f69e948 [ADD] doc: JS document extraction system
* Fix a bunch of ill-documented/incomplete/incorrect method docs
* add start of Sphinx extension to extract & integrate jsdoc into
  Sphinx documentation:

  - parse JS files (and don't blow up), uses a fork of pyjsparser as
    the project currently does not parse comments
  - extract cross-module dependency information
  - parse JsDoc comments using pyjsdoc and infer structure from code &
    jsdoc
  - ``ast`` CLI printing a simplified AST of the input files
  - ``dependencies`` creating a dependency graph of either all modules
    in the provided input files or the modules matching the specified
    filters (warning: will not work if missing dependencies),
    generates a .dot file
  - ``extractor`` generating a plain text module documentation (mix of
    rst and markdown styles, not anything formal)
* sphinx extension with an "automodule" directive taking a module name
  and generating the documentation for it
2017-09-18 11:54:36 +02:00
Odoo Translation Bot f087bb021e [I18N] Update translation terms from Transifex 2017-09-17 07:07:45 +02:00
Odoo Translation Bot c2f2bea6c5 [I18N] Update translation terms from Transifex 2017-09-17 04:40:19 +02:00
Christophe Simonis 8defed9536 [REL] 10.saas~18 2017-09-15 19:06:10 +02:00
Christophe Simonis 66ca687324 [MERGE] forward port branch saas-17 up to ed901bedcb 2017-09-15 18:09:39 +02:00
Yannick Tivisse 51b5ee7c3c [IMP] mass_mailing: choose model among all chatter models
This commit removes the strange selection box based on a magic flag and
some strange methods returning a string. Instead just allow to send mass
mailing on all models inheriting from mail.thread using the is mail
thread flag.

Various addons are updated to remove the _mail_mass_mailing class
attribute used to determine mass mailing capability.

We consider people could send a mass mailing on every model inheriting
from mail.thread. It makes no sense to limit it to a given set of addons.
2017-09-15 15:56:23 +02:00