Commit Graph
94402 Commits
Author SHA1 Message Date
Richard Mathot a883eefdd3 [FIX] crm: one id/name for three rules... (in the Land of Mordor where the
Shadows lie)
2015-03-24 10:03:19 +01:00
Richard Mathot 8ab4933a66 [FIX] crm: missing import
Avoid crash when merging partners
2015-03-24 09:33:15 +01:00
Christophe Simonis fb8b970567 [MERGE] forward port of branch 8.0 up to 0ed63d7 2015-03-23 16:35:03 +01:00
Jérome Maes c6ff080e2b [FIX] im_livechat : send rating to the operator once the anonymous person close its conversation. 2015-03-23 14:49:23 +01:00
Jérome Maes 033ae180b1 [FIX] rating : clicking on rating kanban card now redirect to the object form view 2015-03-23 14:49:14 +01:00
Jérome Maes e36ffa8a55 [FIX] im_livechat : fix rule matching according to the country code found with GeoIP 2015-03-23 14:49:06 +01:00
Jérome Maes e5e9e35c30 [FIX] im_chat : real sanitization of shortcode. Substitution can be HTML code (only for emoji and should respect the regex) or pure text (will be escaped to avoid XSS) at create and write. 2015-03-23 14:48:57 +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
Christophe Matthieu c9dd223305 [FIX] website editor: delete content should not remove the editable ancestor node when all content is seleted 2015-03-23 12:25:06 +01:00
Christophe Matthieu 2f5e4149fb [FIX] summernote: wrap the content with p when the user keyup on 'enter' but should not wrap the content if the editable area is a p, li or other para 2015-03-23 12:25:06 +01:00
Christophe Matthieu 421693d952 [FIX] website_mail: text block: padding at 0, it is not aligned with texts in other blocks 2015-03-23 12:25:05 +01:00
Christophe Matthieu e1cf30a88f [FIX] website editor: remove wrong tooltip on snippet icon 2015-03-23 12:25:05 +01:00
Richard Mathot 26c44a58df [FIX] hr: allow translating job offers 2015-03-23 12:11:41 +01:00
Géry Debongnie 23bb735908 [FIX] web: datetime widget didn't detect all changes
The datetime widget use the "keypress" event to detect if it has been
changed.  Unfortunately, some keys, such as backspace, do not fire a
keypress event.  This commit listen instead on the 'change' event, which
should fire when the input has changed.
2015-03-23 10:50:34 +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
Yannick Tivisse 374a016c6f [IMP] event: confirm,attend,cancel buttons on registration tree view 2015-03-23 09:26:11 +01:00
Christophe Simonis 77a75d4e1f [FIX] web: remove leftover future_display_name.
see 694fe1f
2015-03-21 15:59:05 +01:00
Olivier Dony 42db2db492 [FIX] crm: typos/grammar in CRM tips 2015-03-20 18:02:50 +01:00
Olivier Dony dfbef485c6 [FIX] l10n_be_coda: more lenient detection of CODA files
Some Belgian banks (e.g. CPH) seem to generate CODA
import files that do not comply with the CODA 2.3
(or 2.4 or 2.5) spec, specificially in the header
we use to detect CODA files.
2015-03-20 18:02:50 +01:00
Jérome Maes ca9d671c1d [IMP] account_analytic_analysis : change label of a state button on contract form view. 2015-03-20 16:52:18 +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
Thibault Delavallée 94360ce480 [FIX] event, event_sale: ux fixes:
- maximum seats on an event can be edited for confirmed events
- maximum seats is required when the event has limited seats availability
2015-03-20 16:15:03 +01:00
Thibault Delavallée da09947121 [FIX] website_event_sale: do not tell the ticket is
sold out or has not enough seats if it is unlimited.
2015-03-20 16:15:03 +01:00
Thibault Delavallée e1f26d52ee [FIX] website_event_sale: typo: forgotten , leading to a crash
when trying to remove attendees when lessening the number of tickets
sold in the ecommerce.
2015-03-20 16:15:03 +01:00
Thibault Delavallée 879b454544 [FIX]¸crm: res_partner form view: correct target of
opportunities button tip. Using directly the first child
is risky because modules can add statbutton before the
opportunities button (published for example). Using a
class seems a safer way to select the target.
2015-03-20 16:15:03 +01:00
Christophe Matthieu f5a0a64e08 [FIX] website editor: snippet clean_for_save method is never called 2015-03-20 15:25:33 +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
Richard Mathot c405dfe3b0 [FIX] hr_holidays: correct tooltip for sick leaves
The displayed date was incorrect: instead of the day number in the month (1st-31th), we displayed the day order in the week (0th-6th).

Yeah, this one was a tricky one...
2015-03-20 08:31:34 +01:00
Christophe Simonis 3baab9b22d [MERGE] forward port of branch 8.0 up to 7780004 2015-03-19 18:48:41 +01:00