Commit Graph
94410 Commits
Author SHA1 Message Date
Christophe Matthieu 96b33cdbce [FIX] website summernote: sould not delete de tag container when select all text inside (although there are several selected child nodes) 2015-03-24 16:24:33 +01:00
Olivier Dony 35aa5c31d1 [MERGE] Forward-port latest bugfixes from 8.0, up to d544bb9b46 2015-03-24 15:46:44 +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
Jérome Maes 5c5adb5293 [FIX] rating : use 'raw_value' instead of 'value' in kanban template. Generate the url with 'value' will introduce number with comma/dot notation, which cause crashes. 2015-03-24 14:09:48 +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
Julien De Coster 0b19fd5212 [FIX] Alignment of the welcome message in website_forum 2015-03-24 10:48:27 +01:00
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