1 # -*- coding: utf-8 -*-
2 ##############################################################################
4 # OpenERP, Open Source Management Solution
5 # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
7 # This program is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU Affero General Public License as
9 # published by the Free Software Foundation, either version 3 of the
10 # License, or (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU Affero General Public License for more details.
17 # You should have received a copy of the GNU Affero General Public License
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20 ##############################################################################
22 from osv import fields, osv
23 from tools.translate import _
28 class project_tasks(osv.osv):
29 _inherit = 'project.task'
31 def message_new(self, cr, uid, msg, custom_values=None, context=None):
32 res_id = super(project_tasks,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
33 subject = msg.get('subject')
34 msg_from = msg.get('from')
39 data.update(self.message_partner_by_email(cr, uid, msg_from))
40 self.write(cr, uid, [res_id], data, context)
43 def message_update(self, cr, uid, ids, msg, data={}, default_act='pending'):
44 act = 'do_'+default_act
47 'cost':'planned_hours',
49 for line in msg['body_text'].split('\n'):
51 res = tools.misc.command_re.match(line)
53 match = res.group(1).lower()
54 field = maps.get(match)
57 data[field] = float(res.group(2).lower())
58 except (ValueError, TypeError):
60 elif match.lower() == 'state' \
61 and res.group(2).lower() in ['cancel','close','draft','open','pending']:
62 act = 'do_%s' % res.group(2).lower()
64 self.write(cr, uid, ids, data, context=context)
65 getattr(self,act)(cr, uid, ids, context=context)
66 self.message_append_note(cr, uid, [res_id], body=msg, context=context)
69 def message_thread_followers(self, cr, uid, ids, context=None):
70 followers = super(project_tasks,self).message_thread_followers(cr, uid, ids, context=context)
71 for task in self.browse(cr, uid, followers.keys(), context=context):
72 task_followers = set(followers[task.id])
73 task_followers.add(task.user_id.user_email)
74 followers[task.id] = filter(None, task_followers)
78 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: