diff options
Diffstat (limited to 'addons/project/wizard')
| -rw-r--r-- | addons/project/wizard/__init__.py | 2 | ||||
| -rw-r--r-- | addons/project/wizard/mail_compose_message.py | 72 | ||||
| -rw-r--r-- | addons/project/wizard/project_task_close.py | 122 | ||||
| -rw-r--r-- | addons/project/wizard/project_task_close_view.xml | 41 | ||||
| -rw-r--r-- | addons/project/wizard/project_task_delegate.py | 2 | ||||
| -rw-r--r-- | addons/project/wizard/project_task_reevaluate.py | 2 |
6 files changed, 75 insertions, 166 deletions
diff --git a/addons/project/wizard/__init__.py b/addons/project/wizard/__init__.py index 69e1051e621..f5324d2b6aa 100644 --- a/addons/project/wizard/__init__.py +++ b/addons/project/wizard/__init__.py @@ -19,7 +19,7 @@ # ############################################################################## -import project_task_close +import mail_compose_message import project_task_delegate import project_task_reevaluate diff --git a/addons/project/wizard/mail_compose_message.py b/addons/project/wizard/mail_compose_message.py new file mode 100644 index 00000000000..82d67ea9b92 --- /dev/null +++ b/addons/project/wizard/mail_compose_message.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2010-Today OpenERP SA (<http://www.openerp.com>) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/> +# +############################################################################## + +from osv import osv +from osv import fields +from tools.translate import _ + +class mail_compose_message(osv.osv_memory): + _inherit = 'mail.compose.message' + + def get_value(self, cr, uid, model, resource_id, context=None): + ''' + To get values of the resource_id for the model + @param model: Object + @param resource_id: id of a record for which values to be read + + @return: Returns a dictionary + ''' + result = super(mail_compose_message, self).get_value(cr, uid, model, resource_id, context=context) + if model == 'project.task' and resource_id: + task_pool = self.pool.get('project.task') + task_data = task_pool.browse(cr, uid, resource_id, context=context) + partner = task_data.partner_id or task_data.project_id.partner_id + if task_data.project_id.warn_manager and (not task_data.project_id.user_id or task_data.project_id.user_id and not task_data.project_id.user_id.user_email) : + raise osv.except_osv(_('Error'), _("Please specify the Project Manager or email address of Project Manager.")) + elif task_data.project_id.warn_customer and (not partner or not len(partner.address) or (partner and len(partner.address) and not partner.address[0].email)): + raise osv.except_osv(_('Error'), _("Please specify the Customer or email address of Customer.")) + + result.update({'email_from': task_data.user_id and task_data.user_id.user_email or False}) + val = { + 'name': task_data.name, + 'user_id': task_data.user_id.name, + 'task_id': "%d/%d" % (task_data.project_id.id, task_data.id), + 'date_start': task_data.date_start, + 'date': task_data.date_end, + 'state': task_data.state + } + header = (task_data.project_id.warn_header or '') % val + footer = (task_data.project_id.warn_footer or '') % val + description = u'%s\n %s\n %s\n\n \n%s' % (header, task_data.description or '', footer, task_data.user_id and task_data.user_id.signature) + if partner and len(partner.address): + result.update({'email_to': result.get('email_to',False) and result.get('email_to') + ',' + partner.address[0].email}) + result.update({ + 'body_text': description or False, + 'email_to': task_data.project_id.user_id and task_data.project_id.user_id.user_email or False, + 'subject': _("Task '%s' Closed") % task_data.name, + 'model': model, + 'res_id': resource_id, + }) + + return result + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project/wizard/project_task_close.py b/addons/project/wizard/project_task_close.py deleted file mode 100644 index 97e8e4730c2..00000000000 --- a/addons/project/wizard/project_task_close.py +++ /dev/null @@ -1,122 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -############################################################################## - -from osv import fields, osv -import tools -from tools.translate import _ -import re -class project_task_close(osv.osv_memory): - """ - Close Task - """ - _name = "project.task.close" - _description = "Project Close Task" - _columns = { - 'manager_warn': fields.boolean("Warn Manager", help="Warn Manager by Email"), - 'partner_warn': fields.boolean("Warn Customer", help="Warn Customer by Email"), - 'manager_email': fields.char('Manager Email', size=128, help="Email Address of Project's Manager"), - 'partner_email': fields.char('Customer Email', size=128, help="Email Address of Customer"), - 'description': fields.text('Description'), - } - - def default_get(self, cr, uid, fields, context=None): - """ - This function gets default values - """ - if context is None: - context = {} - record_id = context and context.get('active_id', False) or False - task_pool = self.pool.get('project.task') - - res = super(project_task_close, self).default_get(cr, uid, fields, context=context) - task = task_pool.browse(cr, uid, record_id, context=context) - project = task.project_id - manager = project.user_id or False - partner = task.partner_id or task.project_id.partner_id - - if 'description' in fields: - res.update({'description': task.description or False}) - if 'manager_warn' in fields: - res.update({'manager_warn': project.warn_manager or False}) - if 'partner_warn' in fields: - res.update({'partner_warn': project.warn_customer or False}) - if 'manager_email' in fields: - res.update({'manager_email': manager and manager.user_email or False}) - if partner and len(partner.address) and 'partner_email' in fields: - res.update({'partner_email': partner.address[0].email}) - return res - - def send(self, cr, uid, ids, context=None): - if context is None: - context = {} - - task_pool = self.pool.get('project.task') - task_id = context.get('active_id', False) - if not task_id: - return {} - task = task_pool.browse(cr, uid, task_id, context=context) - for data in self.browse(cr, uid, ids, context=context): - # Send Warn Message by Email to Manager and Customer - if data.manager_warn and not data.manager_email: - raise osv.except_osv(_('Error'), _("Please specify the email address of Project Manager.")) - - elif data.partner_warn and not data.partner_email: - raise osv.except_osv(_('Error'), _("Please specify the email address of Customer.")) - - elif data.manager_warn or data.partner_warn: - project = task.project_id - subject = _("Task '%s' Closed") % task.name - if task.user_id and task.user_id.address_id and task.user_id.address_id.email: - from_adr = task.user_id.address_id.email - signature = task.user_id.signature - else: - raise osv.except_osv(_('Error'), _("Couldn't send mail because your email address is not configured!")) - val = { - 'name': task.name, - 'user_id': task.user_id.name, - 'task_id': "%d/%d" % (project.id, task.id), - 'date_start': task.date_start, - 'date_end': task.date_end, - 'state': task.state - } - - to_adr = [] - header = footer = '' - try: - header_str = (project.warn_header or '') - footer_str = (project.warn_footer or '') - header = (re.sub(r'\%\W*\(', '%(', header_str)) % val - footer = (re.sub(r'\%\W*\(', '%(', footer_str)) % val - except: - raise osv.except_osv(_('Error'), _("Invlaid automatic variables used in project header or foooter.")) - body = u'%s\n%s\n%s\n\n-- \n%s' % (header, data.description or '', footer, signature) - if data.manager_warn and data.manager_email: - to_adr.append(data.manager_email) - if data.partner_warn and data.partner_email: - to_adr.append(data.partner_email) - mail_id = tools.email_send(from_adr, to_adr, subject, tools.ustr(body), email_bcc=[from_adr]) - if not mail_id: - raise osv.except_osv(_('Error'), _("Couldn't send mail! Check the email ids and smtp configuration settings")) - return {} - -project_task_close() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project/wizard/project_task_close_view.xml b/addons/project/wizard/project_task_close_view.xml deleted file mode 100644 index d6bed92824d..00000000000 --- a/addons/project/wizard/project_task_close_view.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> - - <record id="view_project_task_close" model="ir.ui.view"> - <field name="name">Send Email</field> - <field name="model">project.task.close</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="Send Email"> - <group colspan="4" col="4"> - <field name="manager_warn" invisible="1"/> - <field name="manager_email" widget="email" attrs="{'invisible':[('manager_warn','=',False)], 'required':[('manager_warn','=',True)]}" width="250"/> - <field name="partner_warn" invisible="1"/> - <field name="partner_email" widget="email" attrs="{'invisible':[('partner_warn','=',False)], 'required':[('partner_warn','=',True)]}"/> - <separator string="Warn Message" colspan="4"/> - <field name="description" nolabel="1" colspan="4" width="200" height="150"/> - </group> - <separator string="" colspan="4"/> - <group colspan="2" col="2"> - </group> - <group colspan="2" col="3"> - <button icon="gtk-cancel" special="cancel" string="_Cancel"/> - <button icon="terp-mail-message-new" string="_Send" name="send" type="object"/> - </group> - </form> - </field> - </record> - - <record id="action_project_task_close" model="ir.actions.act_window"> - <field name="name">Send Email</field> - <field name="type">ir.actions.act_window</field> - <field name="res_model">project.task.close</field> - <field name="view_type">form</field> - <field name="view_mode">form</field> - <field name="view_id" ref="view_project_task_close"/> - <field name="target">new</field> - </record> - - </data> -</openerp> diff --git a/addons/project/wizard/project_task_delegate.py b/addons/project/wizard/project_task_delegate.py index cffdf2f9ef9..eaf5dea3084 100644 --- a/addons/project/wizard/project_task_delegate.py +++ b/addons/project/wizard/project_task_delegate.py @@ -108,6 +108,6 @@ class project_task_delegate(osv.osv_memory): delegate_data['user_id'] = delegate_data['user_id'][0] delegate_data['name'] = tools.ustr(delegate_data['name']) task_pool.do_delegate(cr, uid, task_id, delegate_data, context=context) - return {} + return {'type': 'ir.actions.act_window_close'} project_task_delegate() diff --git a/addons/project/wizard/project_task_reevaluate.py b/addons/project/wizard/project_task_reevaluate.py index e4e2fab66e3..d627ffa4408 100644 --- a/addons/project/wizard/project_task_reevaluate.py +++ b/addons/project/wizard/project_task_reevaluate.py @@ -79,5 +79,5 @@ class project_task_reevaluate(osv.osv_memory): task_pool.write(cr, uid, task_id, {'remaining_hours': data.remaining_hours}) if context.get('button_reactivate', False): task_pool.do_reopen(cr, uid, [task_id], context=context) - return {} + return {'type': 'ir.actions.act_window_close'} project_task_reevaluate() |
