Commit Graph

92918 Commits

Author SHA1 Message Date
Richard Mathot 6ef068a811 [FIX] doc: exception for date/datetime in kanban views 2015-03-26 11:13:05 +01:00
Laurent Mignon 2faf4b7747 [IMP] Display the line note in the details
When reconciling, it's sometimes useful to have access to the note since the note can be filled with some information by the parser.
2015-03-26 09:57:56 +01:00
Denis Ledoux 8e48eb625d [FIX] mrp: ability to search BOM on BOM lines containing ...
In BOM, when performing an advanced search
on "BOM Lines" contains "a name"
all lines were returned, whatever the lines content.

This was due to the simple fact no field 'name'
was set on the mrp.bom.line model.

We set "product_id" as _rec_name, it seems the more
logical choice.

opw-631335
2015-03-26 09:55:24 +01:00
Goffin Simon e3ae3650de [FIX] website_quote: Accept button displayed in an expired quotation
The accept button must be hidden if the quotation is expired.

opw:630342
2015-03-26 08:50:23 +01:00
Christophe Simonis c54d83ebd5 [FIX] mail: column `read` -> `is_read`
This is the reverse patch of 132afa981b
2015-03-25 18:36:52 +01:00
Christophe Simonis 3540ec53e4 [MERGE] forward port of branch saas-3 up to 6b70b80 2015-03-25 18:00:08 +01:00
Christophe Simonis 6b70b80a0e [MERGE] forward port of branch 7.0 up to 881c10b 2015-03-25 17:41:53 +01:00
Loïc BELLIER 881c10b8ec [FIX] mrp: group attribute position
group_mrp_properties is intended for the property_ids field only, not the other
parts in the "Properties" page (probably wrongly named)
2015-03-25 15:25:22 +01:00
Denis Ledoux 0cf87d1671 [FIX] website_sale_options: keep website language on cart addition
In the ecommerce, when adding a product to the cart
while having website_sale_options installed
the product was added in the cart within the
website default language, not in the current
language of the visitor. The description of the product
was in the default website language (for instance, English)
instead of being in the visitor language (for instance, French).

The reason is quite simple: With website_sale_options, routes
are called in javascript, and these calls do not include the
website language within the url to the route
(e.g., call to '/shop/modal' instead of '/fr_FR/shop/modal)
and the language in the request context is therefore
the website default language.

The solution proposed here is probably not the cleanest possible,
a cleaner solution would be to define a new utility
JS function within website javascript to perform
Ajax calls, automatically adding the language to the url path
according to the current visitor language.

Another solution would be to set the lang of the session context
to the visitor language, and to use this lang instead of the
lang within request.context.

Nevertheless, none of the two above solutions can be performed in
stable releases, such as 8.0, to avoid any risks.

opw-631400
2015-03-25 14:33:33 +01:00
Olivier Dony 287b293283 [FIX] stock_account: valuation entry for reconciled neg quant not always possible
Skip the creation of the corrective valuation entry
when a negative quant is reconciled with an incoming
shipment, when:
 - the cost has not changed, so the journal entry would
   be useless (credit/debit = 0)
 - or, when the accounting period for the move causing
   the negative quant is already closed, and must not be
   updated (presumably the valuation was manually
   set before closing that period)
2015-03-25 12:38:17 +01:00
Antony Lesuisse f090652c99 [FIX] product: allow active pricelist version copy
Always set active false when copy is used to prevent the overlapping
version constraint.

Closes #5822
2015-03-24 23:11:25 +01:00
Denis Ledoux a93ef48a70 [FIX] base: access to preferences menu for portal users
Since revs 53582c2ea6 & f65c913027,
this was no more possible for portal users to read groups
on purpose, for privacy reasons.

fields_get of res.users model is overriden, for
the access rights form view features
(The groups selections and checkboxes).
At each call to fields_get, which happens at each call
to fields_view_get on the res.users model, operations are
done on the model res.groups (basically, to
build the selection groups and checkboxes). So,
each time a view of model res.users is displayed,
whatever the view, operations on res.group model were performed.

The thing is, these operations on res.groups
are actually needed only for the user access rights
view, or at least only for users having the group
Administration > Access rights. These group operations
aren't needed for the preferences view, nor for portal users.

We therefore avoid to do these if the user is not part of the
Administration > Access rights group, which lead to
performances improvment, and solves the fact
portal users couldn't access their user preferences view.

opw-627391
2015-03-24 18:25:13 +01:00
Olivier Dony d544bb9b46 [FIX] base_partner_merge: cleaner test for function fields
After commit 0ed63d73a6,
the hack used to detect fields.function is not supported
anymore. Using `isinstance` is safer and cleaner anyway
(performance is not a concern here).
2015-03-24 15:43:37 +01:00
Denis Ledoux ccfdca99fb [FIX] hr_recruitment: missing attachments in email template
When switching an applicant to another stage,
there is the possibility to send an email template,
according to the given stage.

The attachments defined in the email templates should
be sent as well.

opw-630768
2015-03-24 15:10:55 +01:00
Goffin Simon 940a0e45d4 [FIX] account: choosing the right fiscal position
for a partner who has vat number, fiscal positions with vat_required
are prefered.

opw:630849
2015-03-24 13:00:39 +01:00
Anton Chepurov a70ea6d03b [FIX][#5182] speed up product form loading
removes obsolete (and faulty) check
2015-03-24 12:58:25 +02:00
Goffin Simon a36396b192 [FIX] sale: based amount to compute advanced invoices
The based amount to compute advanced invoices must be the amount_untaxed.

opw:630975
2015-03-24 10:00:45 +01:00
Denis Ledoux 132afa981b [FIX] mail: is_read is the column name in 8.0.
The column 'read' has been renamed 'is_read' in Odoo 8.0.
2015-03-23 15:46:32 +01:00
Denis Ledoux 3235eda781 [FIX] mail: notify parent message on message auto subscribe.
When auto subscribing to a message
(For instance, change the ```user_id``` field on a record,
like an invoice)
The new user is notified of the last message of the thread.
He must be notified of the parent message as well,
to have access to the first message of the thread,
to prevent access rights issues to the thread.

This mechanism is applied in the _notify method
of model ```mail.message``` as well, for the same reasons.

opw-630286
2015-03-23 15:26:41 +01:00
Denis Ledoux 0c16c20c68 [FIX] hr_timesheet: timezone of anayltic sheets in sheet summary
The timezone of hr_analytic_sheet should be the timezone
of the employee as well, so sheet analytic lines and attendances
lines are grouped within the same timezone, the timezone
of the employees, so the time difference between the analytic
lines and the attendances lines can be properly computed.

Fixes #5809
Fixes #5379
Related to rev. 3bf1615ad4
2015-03-23 15:26:41 +01:00
Raphael Collet 0ed63d73a6 Merge pull request #5676 from odoo-dev/8.0-memory_optimization-rco
Reduce memory footprint of server

The tricks used are:
- use a global LRU for `ormcache` (auto-balancing between registries);
- remove unnecessary data structures (binary class hierarchy of models);
- compute some data structures on demand (`_all_columns`);
- optimize field attributes (empty collections may be shared);
- optimize memory size of fields and columns by using slots.

On a database with modules sale, purchase and stock installed, the memory footprint of the registry went from 20.3Mb to 7.4Mb (as measured with heapy). In other words, the memory footprint was reduced to 1/3 !
2015-03-23 14:39:21 +01:00
Raphael Collet 5aa23f8280 [IMP] ormcache: compute hit/miss/err statistics per database
In ormcache, those statistic numbers were counted per cached method for all
registries.  We introduce separate statistic counters, and create a counter per
(database, model, method).  The existing attributes that are no longer used
have been removed.
2015-03-23 14:36:15 +01:00
Raphael Collet 68969c9716 [IMP] fields: avoid redundant slot in class many2one 2015-03-23 14:36:15 +01:00
Raphael Collet c0d79a78f0 [IMP] fields: rename methods to avoid collisions with `__slots__` names 2015-03-23 14:36:15 +01:00
Raphael Collet 524bb0a520 [IMP] fields: simplify the definition of `__slots__` via the `Field` metaclass 2015-03-23 14:36:15 +01:00
Raphael Collet b156c2e27e [IMP] registry: adapt LRU sizes for registries and ormcache
The registry size is now assumed to be around 10Mb, and ormcache size is
proportional to the maximum number of registries.  Statistics about ormcache
usage is shown to the log when receiving signal SIGUSR1.
2015-03-23 14:36:15 +01:00
Raphael Collet 93c341a52c [IMP] models: avoid using `map` instead of a `for` loop (thanks chs@odoo.com) 2015-03-23 14:36:15 +01:00
Raphael Collet f93a14e3b2 [IMP] fields: remove comments about `_all_columns`, and improve its docstring 2015-03-23 14:36:15 +01:00
Raphael Collet 1df3467888 [IMP] fields: remove unnecessary code
In `__getattr__`, remove the test on accessing `_attrs`.  This situation should
never happen, since the attribute `_attrs` is set in method `__init__()`.
2015-03-23 14:36:15 +01:00
Raphael Collet 4259fe0072 [IMP] openerp/osv/fields: add `__slots__` on all column classes
Use the same technique as for field classes.
This saves about 1.6Mb of memory per registry.
2015-03-23 14:36:15 +01:00
Raphael Collet e7928e1265 [IMP] fields: add `__slots__` on all fields
Introduce slots on all field classes for common attributes; slots take much
less memory than a `__dict__`.  The other attributes are stored in a dictionary
`_attrs`; all fields with an empty value for `_attrs` (common case) share the
same empty dictionary.  This saves quite some memory (around 4.5Mb per
registry), given the number of field instances created for a registry.

Another mechanism is used for the default values of attributes, since slots
cannot be assigned on classes.
2015-03-23 14:36:15 +01:00
Raphael Collet 915af86a91 [IMP] fields: simplify definition of ID field 2015-03-23 14:36:15 +01:00
Raphael Collet ffa7f28d34 [IMP] fields: reduce memory footprint of list/set field attributes
The optimization consists in using tuples for attributes `inverse_fields`,
`computed_fields` and `_triggers`, and to let them share their value when it is
empty, which is common.  This saves around 1.8Mb per registry.
2015-03-23 14:36:15 +01:00
Raphael Collet 3df7754087 [IMP] fields: reduce memory footprint of `field._attrs` and `column._args`
The optimization consists in sharing the dictionary when it is empty, which is
the common case.  This saves around 1.5Mb per registry.
2015-03-23 14:36:15 +01:00
Raphael Collet 4d232969a3 [IMP] fields: remove attribute `_free_attrs` and use `_attrs` instead
This saves about 400Kb per registry by not allocating those lists, which are in
most cases empty.  The removal of the attribute will also simplify a bit the
management of free attributes.
2015-03-23 14:36:15 +01:00
Raphael Collet 9aad3d873b [IMP] fields: turn field.digits and column.digits into dynamic properties
The computed value of parameter digits is no longer stored into fields and
columns; instead the value is recomputed everytime it is needed.  Note that
performance is not an issue, since the method `get_precision` of model
'decimal.precision' is cached by the orm.  This simplifies the management of
digits on fields and saves about 300Kb per registry.
2015-03-23 14:36:15 +01:00
Raphael Collet bf703fd9a3 [FIX] models: reorder the base classes of models following an equivalent class hierarchy
Sometimes, the expected mro of the model is not the same as the one built with
a binary class hierarchy.  So we reorder the base classes in order to match the
equivalent binary class hierarchy.  This also fixes the cases where duplicates
appear in base classes.
2015-03-23 14:36:14 +01:00
Raphael Collet 9bce04de79 [IMP] models: build a flat hierarchy of classes for models
Instead of composing classes in a binary tree hierarchy, we make one class that
inherits from all its base classes.  This avoids keeping intermediate data
structures for columns, inherits, constraints, etc.  This saves about 600Kb per
registry.
2015-03-23 14:36:14 +01:00
Raphael Collet 0f9b452c33 [IMP] models: convert deprecated model._all_columns into a dynamic property
The mappings model._all_columns takes quite some memory (around 2MB per
registry) because of the numerous dictionaries (one per model) and inefficient
memory storage of column_info.  Since it is deprecated and almost no longer
used, it can be computed on demand.
2015-03-23 14:36:14 +01:00
Raphael Collet e2ea691cef [IMP] ormcache: turn it into a global LRU cache shared among registries
The ormcache is now shared among registries.  The cached methods use keys like
(DBNAME, MODELNAME, METHOD, args...).  This allows registries with high load to
use more cache than other registries.
2015-03-23 14:36:14 +01:00
Denis Ledoux e3a80afbaf [FIX] im_livechat: prevent translation of JS snippet
QWeb templates can be translated, javascript code
included. Nothing prevents you to translate
the javascript reserved word "undefined", for instance.

Preventing the livechat JS snippet to be translated
prevent translations mistakes, like translate
```undefined``` by ```Niet gedefinieerd```

opw-630335
2015-03-23 13:50:23 +01:00
Nicolas Martinelli aac5c47980 [FIX] l10n_be_invoice_bba: only check BBA when modified
The BBA communication is now only checked when provided as input
(created or modified).
Avoids useless check for uniqueness when it's not modified, and
prevent errors when several invoices are modified in batch.

opw: 629649

Closes #5700
2015-03-23 11:06:14 +01:00
Josse Colpaert 23873da6b6 [FIX] stock: quant_ids relations should not be copied when copying moves fixes #5848
The same holds for the inverse history_ids relationship.  When an object is copied,
the many2many fields their links are copied.

When we copy a done move as is done in the return wizard to create the reverse, it copied also
 the relationship with the quants.  This is problematic as this field indicates the quants that
were transferred by the move and the new move will think it will have returned all the quants
even before it is done.
2015-03-23 10:15:57 +01:00
Christophe Simonis 77a75d4e1f [FIX] web: remove leftover `future_display_name`.
see 694fe1f
2015-03-21 15:59:05 +01:00
Nicolas Lempereur efe8bfe5f1 [FIX] report_invoice: minor css fix to right align
A field was not rightly aligned in a report, this fix add a class which fixes this.

opw-630789 (fix by gab)
2015-03-20 16:16:07 +01:00
Nicolas Martinelli 1b2c400fc1 [FIX] account_voucher: consistency between exchange rate account and company
In the accounting settings, we prevent having gain and loss accounts that are linked to a
different company than the one selected for the chart of account.

opw: 630494
2015-03-20 15:01:48 +01:00
Nicolas Piganeau accd3b472a Fix unwanted opening of stock.picking when scrapping from production 2015-03-20 12:12:12 +01:00
Nicolas Lempereur d539be329e [FIX] view_form: add context to search_count
Currently, the view_form search_count doesn't propagate the context, so when
searching on a translated field, the count can be different than the one we
would expect and get with a search in a current language different than en_US.

opw-628792 opw-630212 closes #5825
2015-03-20 10:39:33 +01:00
Christophe Simonis 7780004f95 [FIX] web: correct many2one dropdown visibility.
The dropdown should only be append to visible elements.
2015-03-19 18:41:45 +01:00
Goffin Simon ac67ce4ecc [FIX] stock: quants not being reserved correctly
`product_qty` field is not recomputed at record creation.
Force field recomputation at any change
Removing the trigger on `product.product` should not be a problem as
product uom can't be changed once there are move lines.

opw:629650
2015-03-19 15:01:54 +01:00