Resolved department's filter problem, you can use this in domains:

department_users_get()
If you installed the hr module.

bzr revid: fp@tinyerp.com-543c94b55bebf132df064497efb2c8e73cfa5577
This commit is contained in:
Fabien Pinckaers 2007-06-28 13:44:47 +00:00
parent 0432c6c70d
commit 46e546d5f4
3 changed files with 29 additions and 10 deletions

View File

@ -24,13 +24,13 @@
view_id="view_account_analytic_simplified"
id="act_my_account"/>
<record model="ir.actions.act_window" id="action_project_pipeline_user">
<field name="name">Pipeline of tasks</field>
<field name="res_model">report.task.user.pipeline.open</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('task_state','&lt;&gt;','cancelled'),('task_state','&lt;&gt;','done')]</field>
</record>
<record model="ir.actions.act_window" id="action_project_pipeline_user">
<field name="name">Pipeline of tasks</field>
<field name="res_model">report.task.user.pipeline.open</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('task_state','&lt;&gt;','cancelled'),('task_state','&lt;&gt;','done'),('user_id','in',department_users_get())]</field>
</record>
<record model="ir.ui.view" id="hr_timesheet_sheet_tree">
<field name="name">hr.timesheet.sheet.tree.simplified.board</field>
@ -50,7 +50,7 @@
<record model="ir.actions.act_window" id="act_hr_timesheet_sheet">
<field name="name">Timesheets</field>
<field name="res_model">hr_timesheet_sheet.sheet</field>
<field name="domain">[('state','&lt;&gt;','done')]</field>
<field name="domain">[('state','&lt;&gt;','done'),('user_id','in',department_users_get())]</field>
<field name="view_type">form</field>
<field name="view_id" ref="hr_timesheet_sheet_tree"/>
</record>

View File

@ -40,6 +40,12 @@ class hr_department(osv.osv):
'manager_id': fields.many2one('res.users', 'Manager', required=True),
'member_ids': fields.many2many('res.users', 'hr_department_user_rel', 'department_id', 'user_id', 'Members'),
}
def _get_members(self,cr, uid, context={}):
mids = self.search(cr, uid, [('manager_id','=',uid)])
result = {uid:1}
for m in self.browse(cr, uid, mids, context):
result[m.id] = 1
return result.keys()
def _check_recursion(self, cr, uid, ids):
level = 100
while len(ids):
@ -55,3 +61,16 @@ class hr_department(osv.osv):
hr_department()
class ir_action_window(osv.osv):
_inherit = 'ir.actions.act_window'
def read(self, cr, uid, ids, *args, **kwargs):
res = super(ir_action_window, self).read(cr, uid, ids, *args, **kwargs)
for r in res:
mystring = 'department_users_get()'
if mystring in (r.get('domain', '[]') or ''):
r['domain'] = r['domain'].replace(mystring, str(self.pool.get('hr.department')._get_members(cr, uid)))
return res
ir_action_window()

View File

@ -39,14 +39,14 @@ class report_task_user_pipeline_open (osv.osv):
'task_hrs': fields.float('Task Hours', readonly=True),
'task_progress': fields.float('Task Progress', readonly=True),
'company_id' : fields.many2one('res.company', 'Company'),
'task_state' : fields.char('Task State',size = '64' ,readonly=True),
'task_state': fields.selection([('draft', 'Draft'),('open', 'Open'),('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', readonly=True),
}
def init(self, cr):
cr.execute("""
create or replace view report_task_user_pipeline_open as (
select
u.id as id,
min(t.id) as id,
u.id as user_id,
u.company_id as company_id,
count(*) as task_nbr,