Commit Graph
61 Commits
Author SHA1 Message Date
Pratima Gupta 2e2aaa218e [IMP] gamification: make email templates bioutifoul
Purpose of this commit is to enhance quality of templates proposed by Odoo
and make them use notification layout when send by emails. Those emails
are cleaner and more up to date compared to other emails.

Including
  * calls to message_post now use the light notification layout. It is
    given as parameter to the message_post process;
  * some cleaning in templates;

This commit is related to task ID 51122 (and PR #24052).
2018-06-08 15:38:49 +02:00
Joren Van Onder a91512daf6 [FIX] gamification: support large amounts of goals in update_goals
update_goals is called through the 'Run Goal Challenge Checker'
cron, potentially on a large amount of goals.

With self containing ~400k records a worker has been observed to use
~3.4 GiB. With sensible memory limits this will probably cause the
worker to be killed.

To avoid this turn of prefetching in this initial loop. Performance
shouldn't be affected too much because in the following loop
prefetching for goals will still take place per definition.

opw-1840666
2018-05-02 16:01:50 -07:00
Olivier Dony 695716efb0 [FIX] P3: remove pycompat.{keys,items,values} helpers
Now that we're closer to switching to P3 for good, these helpers have
outlived their usefulness, and mostly add noise.

All remaining dict.iter*() or dict.view*() must be converted to the
normal keys(), values() or items() calls.

Whenever the result is likely to be used for more than the scope of a
loop, or when the dict needs to be modified during iteration, the calls
must be wrapped in a ``list()``, to protect the new P3 semantics.
Those cases are very exceptional.

Also removed some dead code or improved the API to remove unnecessary
conversions.
2017-08-20 23:25:54 +02:00
Xavier Morel 07ab8b6cd2 [FIX] P3: Exception.message removed 2017-05-12 16:15:40 +02:00
xmo-odoo fffaf735f5 [FIX] P3: list -> iterable builtins (#16811)
In Python 3:

* various builtins and dict methods were changed to return
  view/iterable objects rather than lists
* and the separate Python 2 view/iterable builtins and methods were
  removed altogether

This is problematic when using these items as list (which the happens
repeatedly in Odoo), but more viciously when iterating *multiple times*
over them (which also happens, which I've messed up multiple times while
writing this, and which is a pain to debug even when you've just created
the issue).

Convert all code using these to semantics-matching cross-version
helper functions to get the LCD behaviour between P2 and P3, and
forbid the builtins via lint.

issue #8530
2017-05-10 09:39:55 +02:00
xmo-odoo 2e6a589f41 [FIX] builtins removed from Python 3
* Reverse wrapper courtesy of @rco-odoo's original P3 branch
* thin compat module stripped down from werkzeug (to augment as needed)

issue 8530
2017-04-27 13:59:33 +02:00
Xavier Morel 3979f6802e [#8530] convert exception handlers to except..as syntax
Futurize fixers:
* lib2to3.fixes.fix_except
2017-04-11 14:53:29 +02:00
dut-odoo 8972bbd226 [FIX] gamification: goal definition: traceback when changing model
* self.model_id is already a recordset, no need to re-browse it
* id are expected in domain, not recordset

oversight from rev 0c649644db
2016-08-18 21:31:48 +02:00
Xavier Morel c736465dab [MIG] gamification: compute_code data and evaluation 2016-08-05 10:18:02 +02:00
Xavier Morel 0c649644db [MIG] gamification: Migrate to new API
Includes compatibility-change to website_forum: a selection(callable)
converted to a Selection(list) since that can easily be extended in the
new API.
2016-08-05 10:18:02 +02:00
Christophe Simonis 413ba9445c [MERGE] forward port of branch 9.0 up to 24eebbd 2016-05-26 14:06:36 +02:00
Christophe Simonis 24eebbd25c [MERGE] forward port of branch saas-6 up to 6c6a9f3 2016-05-26 13:56:16 +02:00
Christophe Simonis aa220a5e03 [MERGE] forward port of branch 8.0 up to 6622196 2016-05-26 12:27:56 +02:00
Martin Trigaux 37bbe87d57 [INP] gamification: skip check for not required fields
Could get a definition with a model only
2016-05-26 08:33:20 +02:00
Martin Trigaux a4687c6e42 [FIX] gamification: bad backport to 8.0
UserError was defined in version 9, not 8
2016-05-26 08:30:51 +02:00
Martin Trigaux 97492a12a9 [IMP] gamification: prevent misconfiguration
Prevent selecting wrong field or models or computed fields

Fixes #8545
2016-05-25 14:58:55 +02:00
Martin Trigaux 5245dc5d9b [IMP] gamification: prevent misconfiguration
Do not allow to select field that will be used read_group but not stored in db

Fixes #8545
2016-05-25 12:10:50 +02:00
Christophe Simonis 78d20b552b [MERGE] forward port of branch saas-8 up to 7e44ddc 2016-01-27 12:24:04 +01:00
Olivier Dony 39bd21fc47 [MERGE] Forward-port 9.0 up to rev. 3be9d911c0 2016-01-13 17:13:05 +01:00
Martin Trigaux bb56e484b7 [FIX] all: construction of translations lookup
When evaluated, the translation function never finds a match if a variable is
integrated into the untranslated text.

SHAME! 🔔 🙋
2016-01-13 14:46:30 +01:00
Martin Trigaux ab448abdc6 [IMP] gamification: remove unused field 2015-12-21 14:38:24 +01:00
Martin Trigaux c298cf3250 [MERGE] Forward port of 9.0 up to 7892d99f 2015-12-18 16:15:08 +01:00
Denis Ledoux 02174099e2 [FIX] gamification: goal definition for models without inherits
When attempting to define a goal
using a model that does not have any `inherits`
- which happens most the time-,
it was not possible to choose the
`Field to Sum` and the `Date Field`,
due to the domain set in the view
which is no longer working in 9.0.

The domain is no longer working because:
 - The onchange result for a one2many for which
 the value is set to `[(6, 0, [])]` is now `[]`,
 while, in 8.0, the tuple with the command `6` and the empty
 list was preserved
 - the empty list `model_inherited_model_ids` is considered as `True` by py.js,
  and therefore it fallbacks to `model_inherited_model_ids[0]`, but
  as this is an empty list, it crashes.

The solution proposed in this revision solves the issue, while
making the domain applied on these fields less fragile.

opw-658892
2015-12-09 16:39:24 +01:00
Martin Trigaux eb18cad599 [FIX] gamification: avoid name clash with update
update is a method from the ORM with a different signature.
Avoid name clash. Issue 646610
2015-10-07 16:29:00 +02:00
Olivier Dony 0bd4545348 [LEGAL] Use global LICENSE/COPYRIGHT files, remove boilerplate text
- Preserved explicit 3rd-party copyright notices
- Explicit boilerplate should not be necessary - copyright law applies
  automatically in all countries thanks to Berne Convention + WTO rules,
  and a reference to the applicable license is clear enough.
2015-06-02 03:16:04 +02:00
Ravi Gohil 2acad60391 [FIX] gamification: translatable email notification
This requires a manual update/migration for existing template. opw 619786
2015-01-21 12:30:34 +01:00
Christophe Simonis 4ccca49d34 [MERGE] forward port of branch 8.0 up to 592f1cd 2015-01-21 12:11:38 +01:00
Martin Trigaux ec0c0f2973 [IMP] gamification: performance improvement
Reduce the number of goals that are recomputed. Remove the goals for users that
did not connect since the last update.
Add sql query for faster lookup and restrict on user table
2015-01-20 14:42:56 +01:00
Martin Trigaux fb8dc5793b [FIX] gamification: translate string 2015-01-20 13:57:10 +01:00
Goffin Simon 0fd773a486 [IMP] Cleanup and refactoring of exception handling
Unify and refactor exception handling in framework and addons.

The generic `except_osv` is now deprecated, and replaced by more specialized exception subtypes:
 - `UserError` (renamed from Warning, as it conflicts with the built-in `Warning`) raised when a non-technical error occurs during a business operation. It could be a missing information in the data provided by the user, or a misconfiguration.
 - `AccessError`: raised when any operation is denied because the user conducting it does not have the required access rights.
 - `AccessDenied`: raised when an operation that requires authenticated access is attempted via an unauthenticated request.
 - `MissingError`: raised when an operation is attempted on a record that does not exist.
 - `ValidationError`: raised when an operation violates a SQL or Python constraint.
 - All other exceptions are internal errors due to a system problem or bug, and raised untouched to the client-side, which should display a traceback.

All exceptions take a single message argument.

The `test_exceptions` module has been updated to showcase both new and old (deprecated) exceptions.

A great many old `except_osv` had a useless title with "Error!" or "Warning", those have been removed, as this is handled by the client-side widget that displays the messages.

This commit introduces a more consistent policy for logging errors and warnings:
 - All messages that do not require administrator attention should be logged at INFO level or lower. This includes all errors that are notified to the user in a friendly manner, even for access right problems or validation errors during business operations.
 - All messages that indicate a likely misconfiguration or malicious use by the users should be logged at WARNING level, as they typically require administrator attention.
 - All other unhandled internal errors cannot typically be handled by the user and should be logged at ERROR or higher level, as they require immediate administrator attention.
2015-01-16 17:15:18 +01:00
Julien De Coster d88c34d11e [IMP] Mass mailings send in cron
1. The merge of the "email_template" module into the "mail" module.
2. The send action of the mass mailing has been moved from the frontend to a cron, because it was too slow to send over 10,000 mails (the user's browser was blocked for 15 - 20 minutes). Mass mailings have now their own process in the kanban view.
3. Mails sent from the mail form are sent immediatly instead of from the mail queue (for instance, when you go to sales > customers > list view > select 2 -3 customers > More > Partner Mass Mailing).
4. Users have now the choice from which mailing list they want to unsubscribe when they click on the unsubscribe link at the bottom of the mail.
5. Mass mailings inherit from their campaign UTMs and mass mailing campaigns are linked to an UTM campaign.
6. Many little improvements
2015-01-07 18:01:58 +01:00
Denis Ledoux 2c25fa2dc4 [MERGE] forward port of branch saas-3 up to 56f678c 2014-10-07 09:59:55 +02:00
Denis Ledoux 56f678c8e9 [FIX] gamification: on delete goal user, cascade
Otherwise, this is no more possible to delete users with gamification goals
2014-10-07 09:57:35 +02:00
Martin Trigaux f0c3856be2 [IMP] gamification: allow to select fields of inherited models 2014-09-18 11:12:15 +02:00
Olivier Dony e11eddf753 [MERGE] Forward-port of saas-5 up to 20cc18d 2014-08-13 20:46:47 +02:00
Olivier Dony 2694ed1472 [MERGE] Forward-port saas-3 up to b9275da 2014-08-13 17:33:12 +02:00
Olivier Dony 7aa0376f3e [FIX] gamification: prohibitive record rule processing with many users/goals
Due to the multi-company record rule on gamification.goal,
each access to the Goals menu and each opening of the
Messaging menu (thus calling get_serialised_gamification_summary())
is extremely slow (with several thousands goals/users).

Adding auto_join to the user_id FK on goals makes it much
faster. However it causes crashes when reading the table
because the _order of gamification.goal uses `create_date`,
which becomes ambiguous after the auto_join with res_users.

Solving this can be done by re-implementing _read_flat()
in the ORM using the internal Query object, as in search(),
which takes care of fully-qualifying all column names.

Until this is fixed, a simple workaround is to use
start_date in the _order instead of collision-prone `create_date`.
2014-08-13 13:47:50 +02:00
Raphael Collet cbe2dbb672 [MERGE] new v8 api by rco
A squashed merge is required as the conversion of the apiculture branch from
bzr to git was not correctly done. The git history contains irrelevant blobs
and commits. This branch brings a lot of changes and fixes, too many to list
exhaustively.

- New orm api, objects are now used instead of ids
- Environements to encapsulates cr uid context while maintaining backward compatibility
- Field compute attribute is a new object oriented way to define function fields
- Shared browse record cache
- New onchange protocol
- Optional copy flag on fields
- Documentation update
- Dead code cleanup
- Lots of fixes
2014-07-06 17:05:41 +02:00
Christophe Simonis 7bee9447c4 [MERGE] forward port of branch saas-3 up to 3c7a54a 2014-06-11 11:06:04 +02:00
Martin Trigaux 387093a34a gamification: when changing the domain on a goal definition give a simple check to avoid getting a traceback when the challenge is reloaded 2014-06-10 12:03:32 +02:00
Martin Trigaux aa1165441c [FIX] gamification: do not group on agregated field for sum
The read_group behaviour has changed and read_group no longer sum on the field you are grouping.
Instead agregate on the field we want to sum and use no groupby.
For future version, grouping on a user such as what is done in batch mode is a better way to process.
2014-06-03 10:48:26 +02:00
Martin Trigaux ce5ba45d45 [IMP] gamification: avoid fetching function field while we could reuse the cache system of the browse records (avoid memory errors when updating a large number of records) 2014-05-14 15:41:38 +02:00
Martin Trigaux a233e26f71 [IMP] gamification: commit for each goal definition in cron
bzr revid: mat@openerp.com-20140506113831-iut3aqbwfwbnertv
2014-05-06 13:38:31 +02:00
Martin Trigaux 697dcae728 [IMP] gamification: move write in goal update inside the first loop to be able to group the computation by definition (and potentially apply intermediate commits)
bzr revid: mat@openerp.com-20140506112109-z4rsx5umet5x6n26
2014-05-06 13:21:09 +02:00
Martin Trigaux bde55baaa9 [IMP] gamification: performance improvement on the goal computation
Removing the inheritance to mail.thread will avoid posting message at creation and other tracking mechanism at each write. Updating a challenge with a large number of users will be significantly faster.

bzr revid: mat@openerp.com-20140506093716-xvpe1n2ase2zix0v
2014-05-06 11:37:16 +02:00
Martin Trigaux 0443680952 [FIX] gamification: the subquery domain should use less than for ending dates
bzr revid: mat@openerp.com-20140415161538-mdfadjjih90wuj3d
2014-04-15 18:15:38 +02:00
Martin Trigaux 14ff39f96e [FIX] website_forum: mooooore baaaaaadges
bzr revid: mat@openerp.com-20140415101842-yf6vndw7h62q0b42
2014-04-15 12:18:42 +02:00
Martin Trigaux c40318a46a [ADD] website_forum: self_reply field and some badges
bzr revid: mat@openerp.com-20140414145415-8g9jtp95d173183i
2014-04-14 16:54:15 +02:00
Martin Trigaux 0c8539846a [ADD] website_forum: quality badges
bzr revid: mat@openerp.com-20140414135115-onmywwurr03g21dw
2014-04-14 15:51:15 +02:00
Martin Trigaux 236a4d71be [MERGE] sync with trunk
bzr revid: mat@openerp.com-20140411154002-6557tcjfetqwb0kf
2014-04-11 17:40:02 +02:00