From 46e546d5f4f887cc105256376ec87315c784b20d Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Thu, 28 Jun 2007 13:44:47 +0000 Subject: [PATCH] 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 --- .../board_project_manager_view.xml | 16 ++++++++-------- addons/hr/hr_department.py | 19 +++++++++++++++++++ addons/report_task/report_task.py | 4 ++-- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/addons/board_project/board_project_manager_view.xml b/addons/board_project/board_project_manager_view.xml index d8366a69fbe..8a05213bc29 100644 --- a/addons/board_project/board_project_manager_view.xml +++ b/addons/board_project/board_project_manager_view.xml @@ -24,13 +24,13 @@ view_id="view_account_analytic_simplified" id="act_my_account"/> - - Pipeline of tasks - report.task.user.pipeline.open - form - graph,tree - [('task_state','<>','cancelled'),('task_state','<>','done')] - + + Pipeline of tasks + report.task.user.pipeline.open + form + graph,tree + [('task_state','<>','cancelled'),('task_state','<>','done'),('user_id','in',department_users_get())] + hr.timesheet.sheet.tree.simplified.board @@ -50,7 +50,7 @@ Timesheets hr_timesheet_sheet.sheet - [('state','<>','done')] + [('state','<>','done'),('user_id','in',department_users_get())] form diff --git a/addons/hr/hr_department.py b/addons/hr/hr_department.py index 90ade6415c1..4109fd5a59a 100644 --- a/addons/hr/hr_department.py +++ b/addons/hr/hr_department.py @@ -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() + + diff --git a/addons/report_task/report_task.py b/addons/report_task/report_task.py index 75789daed99..165d3618bed 100644 --- a/addons/report_task/report_task.py +++ b/addons/report_task/report_task.py @@ -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,