[DOC] Improved documentation.

bzr revid: tde@openerp.com-20120330104242-h68fy7zsnueaod9m
This commit is contained in:
Thibault Delavallée 2012-03-30 12:42:42 +02:00
parent 3d726e1d4d
commit c2e1b6a384
1 changed files with 19 additions and 6 deletions

View File

@ -1,5 +1,8 @@
Need action mixin class
=======================
Need action mechanism
=====================
base.needaction mixin class
+++++++++++++++++++++++++++
This revision adds a mixin class for objects using the need action feature. Need action mechanism can be used by objects that have to be able to signal that an action is required on a particular record. If in the business logic an action must be performed by somebody, for instance validation by a manager, this mechanism allows to set a field with the user_id of the user requested to perform the action.
@ -8,11 +11,20 @@ This class wraps a table (base.needaction_users_rel) that behaves like a many2ma
Objects using the need_action feature should override the ``get_needaction_user_ids`` method. This methods returns a dictionary whose keys are record ids, and values a list of user ids, like in a many2many relationship. Therefore by defining only one method, you can specify if an action is required by defining the users that have to do it, in every possible situation.
This class also offers several global services,:
- ``needaction_get_user_record_references``: for a given uid, get all the records that asks this user to perform an action. Records are given as references, a list of tuples (model_name, record_id).
- ``needaction_get_user_record_references``: for a given uid, get all the records that ask this user to perform an action. Records are given as references, a list of tuples (model_name, record_id).
- ``needaction_get_record_ids``: for a given model_name and uid, get all record ids that ask this user to perform an action. This mechanism is used for instance to display the number of pending actions in menus, such as Leads (12).
- ``needaction_get_action_count``: as ``needaction_get_record_ids`` but returns only the number of action, not the ids (performs a search with count=True)
This mechanism is used for instance to display the number of pending actions in menus, such as Leads (12).
A menu in Settings/Users has been added to allow having a quick look to need_action_user_ids.
A menu in Settings/Users has been added to allows having a quick look to need_action_user_ids.
Menu modification
+++++++++++++++++
This revision adds two functional fields to ``ir.ui.menu`` model :
- ``uses_needaction``: boolean field. If the menu entry is related to a act_window action, and this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.
- ``needaction_uid_ctr``: integer field. If the related model uses the need action mechanism, this field gives the number of actions the current user has to perform.
Those fields are functional, because they must be recalculated for each user, and each time menus are displayed. ``needaction_uid_ctr`` takes into account the domain of the action, in order to display accurate numbers.
Addon implementation example
++++++++++++++++++++++++++++
@ -26,8 +38,9 @@ In your ``foo`` module, you want to specify that when it is in state ``confirmed
[...]
def get_needaction_user_ids(self, cr, uid, ids, context=None):
# set the list void by default
result = dict.fromkeys(ids, [])
result = dict.fromkeys(ids)
for foo_obj in self.browse(cr, uid, ids, context=context):
result[foo_obj.id] = []
# if foo_obj is confirmed: manager is required to perform an action
if foo_obj.state == 'confirmed':
result[foo_obj.id] = [foo_obj.manager_id]