From b805979e924692d975ce7da4d92c3b5b20ef2dc3 Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 28 May 2012 12:31:57 +0530 Subject: [IMP]project: set one selection field and and some methods for followers or members bzr revid: dbr@tinyerp.com-20120528070157-8lo7c1d3owzbmhaq --- addons/project/project.py | 40 +++++++++++++++++++++++++++- addons/project/project_view.xml | 1 + addons/project/security/project_security.xml | 5 ++++ 3 files changed, 45 insertions(+), 1 deletion(-) (limited to 'addons/project') diff --git a/addons/project/project.py b/addons/project/project.py index 0b23196a67f..cc5da2c15dc 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -67,6 +67,35 @@ class project(osv.osv): return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count) + def write(self, cr, uid, ids, vals, context=None): + if context is None: + context = {} + list = [] + project_ids = self.browse(cr, uid, ids) + groups = self.pool.get('res.groups') + group_id = groups.search(cr, uid, [('name', '=', 'Followers')], context=context) + groups_users = groups.browse(cr, uid, group_id)[0].users + for project_id in project_ids: + select = vals.get('privacy_visility') or project_id.privacy_visility or False + members = vals.get('members') or project_id.members or False + if select=='follower': + if members: + for member in members: + list.append(member.id) + followers = self.find_followers(cr, uid, ids, context) + for member_id in list: + if not member_id in followers: + self.message_subscribe(cr, uid, ids, [member_id], context=context) + return super(project, self).write(cr, uid, ids, vals, context=context) + + def find_followers(self, cr, uid, ids, context=None): + user=[] + sub_obj = self.pool.get('mail.subscription') + sub_id = sub_obj.search(cr, uid, [('res_model','=','project.project'),('res_id','in',ids)], context=context) + for follower_id in sub_obj.browse(cr, uid, sub_id): + user.append(follower_id.user_id.id) + return user + def _complete_name(self, cr, uid, ids, name, args, context=None): res = {} for m in self.browse(cr, uid, ids, context=context): @@ -202,11 +231,20 @@ class project(osv.osv): 'task_count': fields.function(_task_count, type='integer', string="Open Tasks"), 'color': fields.integer('Color Index'), 'company_uom_id': fields.related('company_id', 'project_time_mode_id', type='many2one', relation='product.uom'), + 'privacy_visility': fields.selection([('public','Public'), ('follower','Followers Only')], 'Privacy / Visility', select=True), } def dummy(self, cr, uid, ids, context): return True - + + def message_thread_followers(self, cr, uid, ids, context=None): + followers = super(project,self).message_thread_followers(cr, uid, ids, context=context) + for project in self.browse(cr, uid, followers.keys(), context=context): + project_followers = set(followers[project.id]) + project_followers.add(project.user_id.user_email) + followers[project.id] = filter(None, project_followers) + return followers + def _get_type_common(self, cr, uid, context): ids = self.pool.get('project.task.type').search(cr, uid, [('project_default','=',1)], context=context) return ids diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 70cdac1efa0..5d2d29fb5d5 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -41,6 +41,7 @@ + diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml index 2bfe967e675..fb9041681f2 100644 --- a/addons/project/security/project_security.xml +++ b/addons/project/security/project_security.xml @@ -14,6 +14,11 @@ + + Followers + + + -- cgit v1.2.3 From 707ece42609d2d10252f0f686f52e629e7bcea1e Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 28 May 2012 15:14:10 +0530 Subject: [IMP]project: codr improvements bzr revid: dbr@tinyerp.com-20120528094410-2ohyzscyqh51gxt9 --- addons/project/project.py | 33 ++++++++++++--------------------- addons/project/project_view.xml | 2 +- 2 files changed, 13 insertions(+), 22 deletions(-) (limited to 'addons/project') diff --git a/addons/project/project.py b/addons/project/project.py index cc5da2c15dc..aab101d62a3 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -70,32 +70,23 @@ class project(osv.osv): def write(self, cr, uid, ids, vals, context=None): if context is None: context = {} - list = [] - project_ids = self.browse(cr, uid, ids) - groups = self.pool.get('res.groups') - group_id = groups.search(cr, uid, [('name', '=', 'Followers')], context=context) - groups_users = groups.browse(cr, uid, group_id)[0].users - for project_id in project_ids: + groups_pool = self.pool.get('res.groups') + group_id = groups_pool.search(cr, uid, [('name', '=', 'Followers')], context=context) + groups_users = groups_pool.browse(cr, uid, group_id, context)[0].users + for project_id in self.browse(cr, uid, ids, context): + if vals.get('members'): + members = self.pool.get('res.users').browse(cr, uid, vals.get('members')[0][-1], context) + else: + members = project_id.members or False select = vals.get('privacy_visility') or project_id.privacy_visility or False - members = vals.get('members') or project_id.members or False - if select=='follower': - if members: - for member in members: - list.append(member.id) - followers = self.find_followers(cr, uid, ids, context) - for member_id in list: + if select=='follower' and members: + member_list = [member.id for member in members] + followers = self.message_get_subscribers_ids(cr, uid, ids, context=context) + for member_id in member_list: if not member_id in followers: self.message_subscribe(cr, uid, ids, [member_id], context=context) return super(project, self).write(cr, uid, ids, vals, context=context) - def find_followers(self, cr, uid, ids, context=None): - user=[] - sub_obj = self.pool.get('mail.subscription') - sub_id = sub_obj.search(cr, uid, [('res_model','=','project.project'),('res_id','in',ids)], context=context) - for follower_id in sub_obj.browse(cr, uid, sub_id): - user.append(follower_id.user_id.id) - return user - def _complete_name(self, cr, uid, ids, name, args, context=None): res = {} for m in self.browse(cr, uid, ids, context=context): diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 5d2d29fb5d5..57c45c18856 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -33,7 +33,7 @@
- + -- cgit v1.2.3 From c81dcd768aba95c6f478df8f6344bd1aee773897 Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 28 May 2012 15:40:35 +0530 Subject: [IMP]project:Remove extra code bzr revid: dbr@tinyerp.com-20120528101035-itsr2upflvx71n2e --- addons/project/project.py | 3 --- 1 file changed, 3 deletions(-) (limited to 'addons/project') diff --git a/addons/project/project.py b/addons/project/project.py index aab101d62a3..47dc840e3c7 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -70,9 +70,6 @@ class project(osv.osv): def write(self, cr, uid, ids, vals, context=None): if context is None: context = {} - groups_pool = self.pool.get('res.groups') - group_id = groups_pool.search(cr, uid, [('name', '=', 'Followers')], context=context) - groups_users = groups_pool.browse(cr, uid, group_id, context)[0].users for project_id in self.browse(cr, uid, ids, context): if vals.get('members'): members = self.pool.get('res.users').browse(cr, uid, vals.get('members')[0][-1], context) -- cgit v1.2.3 From ecbf5fadf06980d18cf5229cb4bdb10a2fa39a8b Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 28 May 2012 16:21:10 +0530 Subject: [REM]project: No need followers group so removed it bzr revid: dbr@tinyerp.com-20120528105110-ap0nzv1hjv5ylzfj --- addons/project/security/project_security.xml | 5 ----- 1 file changed, 5 deletions(-) (limited to 'addons/project') diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml index fb9041681f2..2bfe967e675 100644 --- a/addons/project/security/project_security.xml +++ b/addons/project/security/project_security.xml @@ -14,11 +14,6 @@ - - Followers - - - -- cgit v1.2.3 From 0e90703ad0d1727c7a4511e30f335c0a3667357c Mon Sep 17 00:00:00 2001 From: "Sanjay Gohel (Open ERP)" Date: Mon, 28 May 2012 18:00:54 +0530 Subject: [IMP]add boolean of project,projec_longterm,and project issue and create related project bzr revid: sgo@tinyerp.com-20120528123054-ntp1u33q1iavwtej --- addons/project/project.py | 26 +++++++++++++++++++++----- addons/project/project_view.xml | 16 ++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) (limited to 'addons/project') diff --git a/addons/project/project.py b/addons/project/project.py index 0b23196a67f..51d254756f4 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -198,10 +198,8 @@ class project(osv.osv): 'warn_header': fields.text('Mail Header', help="Header added at the beginning of the email for the warning message sent to the customer when a task is closed.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'warn_footer': fields.text('Mail Footer', help="Footer added at the beginning of the email for the warning message sent to the customer when a task is closed.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), - 'use_tasks': fields.boolean('Use Tasks', help="Check this field if this project is aimed at managing tasks"), 'task_count': fields.function(_task_count, type='integer', string="Open Tasks"), 'color': fields.integer('Color Index'), - 'company_uom_id': fields.related('company_id', 'project_time_mode_id', type='many2one', relation='product.uom'), } def dummy(self, cr, uid, ids, context): @@ -217,7 +215,6 @@ class project(osv.osv): 'priority': 1, 'sequence': 10, 'type_ids': _get_type_common, - 'use_tasks': True, } # TODO: Why not using a SQL contraints ? @@ -1234,16 +1231,35 @@ class project_work(osv.osv): project_work() class account_analytic_account(osv.osv): - _inherit = 'account.analytic.account' _description = 'Analytic Account' + _columns = { + 'use_tasks': fields.boolean('Tasks Management'), + 'company_uom_id': fields.related('company_id', 'project_time_mode_id', type='many2one', relation='product.uom'), + } +# _defaults = { +# 'use_tasks': True, +# } + + def project_create(self,cr,uid,analytic_account_id,vals,context=None): + res = {} + project_pool = self.pool.get('project.project') + project_id = project_pool.name_search(cr, uid, name=vals.get('name')) + if not project_id: + res['name'] = vals.get('name') + res['analytic_account_id'] = analytic_account_id + project_pool.create(cr, uid, res, context=context) + return True def create(self, cr, uid, vals, context=None): if context is None: context = {} if vals.get('child_ids', False) and context.get('analytic_project_copy', False): vals['child_ids'] = [] - return super(account_analytic_account, self).create(cr, uid, vals, context=context) + analytic_account_id = super(account_analytic_account, self).create(cr, uid, vals, context=context) + if vals.get('use_tasks', False): + self.project_create(cr, uid, analytic_account_id, vals, context) + return analytic_account_id def unlink(self, cr, uid, ids, *args, **kwargs): project_obj = self.pool.get('project.project') diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 70cdac1efa0..29704cf3318 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -600,6 +600,22 @@ + + + account.analytic.account.form.inherit + account.analytic.account + form + + + + + + + + + + + Tasks -- cgit v1.2.3 From 29835b5e078d0abd328306fee2781d9bef2f7863 Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Mon, 28 May 2012 18:58:38 +0530 Subject: [IMP]project: Set record rules bzr revid: dbr@tinyerp.com-20120528132838-wyzz7r9dwmfgv36t --- addons/project/security/project_security.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'addons/project') diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml index 2bfe967e675..2b4c87671b1 100644 --- a/addons/project/security/project_security.xml +++ b/addons/project/security/project_security.xml @@ -36,6 +36,20 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + Public_projects + + + ['|',('privacy_visility','=','public'),('privacy_visility','=', False)] + + + + private Members + + + [('privacy_visility','=','follower'),('members','in',[user.id])] + + Task multi-company -- cgit v1.2.3 From 87040b2390a496a96c2c69e09cfb2f19769b1f27 Mon Sep 17 00:00:00 2001 From: "Amit Patel (OpenERP)" Date: Wed, 30 May 2012 12:29:34 +0530 Subject: [IMP]:project:improved project view bzr revid: apa@tinyerp.com-20120530065934-qpo4hsv4pcyhngjr --- addons/project/project_view.xml | 36 +++++++++++++++++++------------ addons/project/static/src/css/project.css | 3 +++ 2 files changed, 25 insertions(+), 14 deletions(-) (limited to 'addons/project') diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 29704cf3318..a7291e9f7d3 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -33,21 +33,29 @@
- - - - - - - - + + + + + + + + + + + + + + + + + + +
Tasks Management
+
- - - - @@ -63,7 +71,7 @@ - + @@ -72,7 +80,7 @@ - + diff --git a/addons/project/static/src/css/project.css b/addons/project/static/src/css/project.css index ebab44e225a..7d589675a4a 100644 --- a/addons/project/static/src/css/project.css +++ b/addons/project/static/src/css/project.css @@ -1,3 +1,6 @@ +.oe_btn_width { + width: 100px; +} .oe_kanban_project { width: 300px; } -- cgit v1.2.3 From 4fc454658fdb4ed9370dcb94bb1706b3609341da Mon Sep 17 00:00:00 2001 From: "Amit Patel (OpenERP)" Date: Wed, 30 May 2012 12:45:41 +0530 Subject: improved project view bzr revid: apa@tinyerp.com-20120530071541-yyriflh6u737zd9b --- addons/project/project_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addons/project') diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index a7291e9f7d3..7da0277c73f 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ Tasks Management -