ログイン ユーザーの販売チームをドメイン パラメーターとして指定することはできませんが、これを実現する別の方法があります。すなわち; 私のビューアクションでは、ドメインを次のように指定します。
<field name="domain">[('user_id.default_section_id', 'in', user_sale_team())]</field>
ここで、user_id はタスクの担当ユーザーです。ir.actions.act_window の読み取り関数を継承し、読み取り結果のドメインに user_sale_team() が存在するかどうかを確認し、これをログイン ユーザーの販売チーム ID に置き換えます。これは次のように実行できます。
class ir_action_window(osv.osv):
_inherit = 'ir.actions.act_window'
def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
user_pool = self.pool.get('res.users')
obj_user = user_pool.browse(cr, uid, uid, context=context)
res = super(ir_action_window, self).read(cr, uid, ids, fields=fields, context=context, load=load)
if not isinstance(res, list):
res = [res]
sale_team_id = obj_user.default_section_id and obj_user.default_section_id.id or''
for r in res:
mystring = 'user_sale_team()'
if mystring in (r.get('domain', '[]') or ''):
r['domain'] = r['domain'].replace(mystring, str([sale_team_id]))
if isinstance(ids, (int, long)):
if res:
return res[0]
else:
return False
return res
ir_action_window()
これにより、営業チームに基づいて各ユーザーに表示されるタスクの結果がフィルタリングされます。
お役に立てれば.....