From 1b445534fe7818a6b4e389ce244324c523877366 Mon Sep 17 00:00:00 2001 From: Invitu Date: Tue, 14 May 2013 10:28:18 -1000 Subject: [PATCH 1/2] [IMP] move generic_reformat_phonenumbers function to asterisk.common --- asterisk_click2dial/asterisk_click2dial.py | 49 ++++++++++--------- .../wizard/reformat_all_phonenumbers.py | 2 +- .../asterisk_click2dial_crm.py | 4 +- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/asterisk_click2dial/asterisk_click2dial.py b/asterisk_click2dial/asterisk_click2dial.py index 050442a..4c17d0e 100644 --- a/asterisk_click2dial/asterisk_click2dial.py +++ b/asterisk_click2dial/asterisk_click2dial.py @@ -422,28 +422,7 @@ class asterisk_common(orm.AbstractModel): #print "RESULT generic_phonenumber_to_e164", result return result - -class res_partner(osv.osv): - _name = 'res.partner' - _inherit = ['res.partner', 'asterisk.common'] - - - def format_phonenumber_to_e164(self, cr, uid, ids, name, arg, context=None): - return self.generic_phonenumber_to_e164(cr, uid, ids, [('phone', 'phone_e164'), ('mobile', 'mobile_e164'), ('fax', 'fax_e164')], context=context) - - _columns = { - 'phone_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Phone in E.164 format', readonly=True, multi="e164", store={ - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['phone'], 10), - }), - 'mobile_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Mobile in E.164 format', readonly=True, multi="e164", store={ - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['mobile'], 10), - }), - 'fax_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Fax in E.164 format', readonly=True, multi="e164", store={ - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['fax'], 10), - }), - } - - def _generic_reformat_phonenumbers(self, cr, uid, vals, phonefields=['phone', 'fax', 'mobile'], context=None): + def generic_reformat_phonenumbers(self, cr, uid, vals, phonefields=['phone', 'fax', 'mobile'], context=None): """Reformat phone numbers in international format i.e. +33141981242""" if any([vals.get(field) for field in phonefields]): user = self.pool['res.users'].browse(cr, uid, uid, context=context) @@ -466,13 +445,35 @@ class res_partner(osv.osv): return vals + +class res_partner(osv.osv): + _name = 'res.partner' + _inherit = ['res.partner', 'asterisk.common'] + + + def format_phonenumber_to_e164(self, cr, uid, ids, name, arg, context=None): + return self.generic_phonenumber_to_e164(cr, uid, ids, [('phone', 'phone_e164'), ('mobile', 'mobile_e164'), ('fax', 'fax_e164')], context=context) + + _columns = { + 'phone_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Phone in E.164 format', readonly=True, multi="e164", store={ + 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['phone'], 10), + }), + 'mobile_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Mobile in E.164 format', readonly=True, multi="e164", store={ + 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['mobile'], 10), + }), + 'fax_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Fax in E.164 format', readonly=True, multi="e164", store={ + 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['fax'], 10), + }), + } + + def create(self, cr, uid, vals, context=None): - vals_reformated = self._generic_reformat_phonenumbers(cr, uid, vals, context=context) + vals_reformated = self.generic_reformat_phonenumbers(cr, uid, vals, context=context) return super(res_partner, self).create(cr, uid, vals_reformated, context=context) def write(self, cr, uid, ids, vals, context=None): - vals_reformated = self._generic_reformat_phonenumbers(cr, uid, vals, context=context) + vals_reformated = self.generic_reformat_phonenumbers(cr, uid, vals, context=context) return super(res_partner, self).write(cr, uid, ids, vals_reformated, context=context) diff --git a/asterisk_click2dial/wizard/reformat_all_phonenumbers.py b/asterisk_click2dial/wizard/reformat_all_phonenumbers.py index 2893513..91f529d 100644 --- a/asterisk_click2dial/wizard/reformat_all_phonenumbers.py +++ b/asterisk_click2dial/wizard/reformat_all_phonenumbers.py @@ -44,7 +44,7 @@ class reformat_all_phonenumbers(osv.osv_memory): init_partner = partner.copy() # partner is _updated_ by the fonction _reformat_phonenumbers() try: - partner_obj._reformat_phonenumbers(cr, uid, partner, context=context) + partner_obj.generic_reformat_phonenumbers(cr, uid, partner, context=context) except Exception, e: #raise osv.except_osv(_('Error :'), _("Problem on partner '%s'. Error message: %s" % (init_partner.get('name'), e[1]))) phonenumbers_not_reformatted += "Problem on partner '%s'. Error message: %s" % (init_partner.get('name'), e[1]) + "\n" diff --git a/asterisk_click2dial_crm/asterisk_click2dial_crm.py b/asterisk_click2dial_crm/asterisk_click2dial_crm.py index 9654075..262c51f 100644 --- a/asterisk_click2dial_crm/asterisk_click2dial_crm.py +++ b/asterisk_click2dial_crm/asterisk_click2dial_crm.py @@ -107,11 +107,11 @@ class crm_lead(osv.osv): def create(self, cr, uid, vals, context=None): - vals_reformated = self.pool['res.partner']._generic_reformat_phonenumbers(cr, uid, vals, context=context) + vals_reformated = self.generic_reformat_phonenumbers(cr, uid, vals, context=context) return super(crm_lead, self).create(cr, uid, vals_reformated, context=context) def write(self, cr, uid, ids, vals, context=None): - vals_reformated = self.pool['res.partner']._generic_reformat_phonenumbers(cr, uid, vals, context=context) + vals_reformated = self.generic_reformat_phonenumbers(cr, uid, vals, context=context) return super(crm_lead, self).write(cr, uid, ids, vals_reformated, context=context) From 331636f53d2378f8ffd72b701a0d02e36c130354 Mon Sep 17 00:00:00 2001 From: Invitu Date: Thu, 23 May 2013 06:45:47 -1000 Subject: [PATCH 2/2] [IMP] Add Dial button in Claim Form View --- asterisk_click2dial/asterisk_click2dial.py | 2 +- asterisk_click2dial_crm_claim/__init__.py | 1 + asterisk_click2dial_crm_claim/__openerp__.py | 2 + .../asterisk_click2dial_crm_claim.py | 66 +++++++++++++++++++ .../crm_claim_view.xml | 30 +++++++++ 5 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 asterisk_click2dial_crm_claim/asterisk_click2dial_crm_claim.py create mode 100644 asterisk_click2dial_crm_claim/crm_claim_view.xml diff --git a/asterisk_click2dial/asterisk_click2dial.py b/asterisk_click2dial/asterisk_click2dial.py index 4c17d0e..54702dc 100644 --- a/asterisk_click2dial/asterisk_click2dial.py +++ b/asterisk_click2dial/asterisk_click2dial.py @@ -422,7 +422,7 @@ class asterisk_common(orm.AbstractModel): #print "RESULT generic_phonenumber_to_e164", result return result - def generic_reformat_phonenumbers(self, cr, uid, vals, phonefields=['phone', 'fax', 'mobile'], context=None): + def generic_reformat_phonenumbers(self, cr, uid, vals, phonefields=['phone', 'partner_phone', 'fax', 'mobile'], context=None): """Reformat phone numbers in international format i.e. +33141981242""" if any([vals.get(field) for field in phonefields]): user = self.pool['res.users'].browse(cr, uid, uid, context=context) diff --git a/asterisk_click2dial_crm_claim/__init__.py b/asterisk_click2dial_crm_claim/__init__.py index 2e13e98..f26ba14 100644 --- a/asterisk_click2dial_crm_claim/__init__.py +++ b/asterisk_click2dial_crm_claim/__init__.py @@ -21,3 +21,4 @@ ############################################################################## import wizard +import asterisk_click2dial_crm_claim diff --git a/asterisk_click2dial_crm_claim/__openerp__.py b/asterisk_click2dial_crm_claim/__openerp__.py index a199190..dfb1902 100644 --- a/asterisk_click2dial_crm_claim/__openerp__.py +++ b/asterisk_click2dial_crm_claim/__openerp__.py @@ -3,6 +3,7 @@ # # Asterisk click2dial CRM Claim module for OpenERP # Copyright (c) 2012-2013 Akretion (http://www.akretion.com) +# Copyright (C) 2013 Invitu # @author Alexis de Lattre # # This program is free software: you can redistribute it and/or modify @@ -40,6 +41,7 @@ "demo_xml": [], "update_xml": [ 'wizard/open_calling_partner_view.xml', + 'crm_claim_view.xml', ], "installable": True, } diff --git a/asterisk_click2dial_crm_claim/asterisk_click2dial_crm_claim.py b/asterisk_click2dial_crm_claim/asterisk_click2dial_crm_claim.py new file mode 100644 index 0000000..57c6713 --- /dev/null +++ b/asterisk_click2dial_crm_claim/asterisk_click2dial_crm_claim.py @@ -0,0 +1,66 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# Asterisk click2dial CRM module for OpenERP +# Copyright (c) 2011 Zikzakmedia S.L. (http://zikzakmedia.com) +# Copyright (c) 2012-2013 Akretion (http://www.akretion.com) +# Copyright (C) 2013 Invitu +# @author: Jesús Martín +# @author: Alexis de Lattre +# +# 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 . +# +############################################################################## + +from openerp.addons.base_status.base_stage import base_stage +from openerp.osv import osv, fields +# Lib required to print logs +import logging +# Lib to translate error messages +from openerp.tools.translate import _ +# Lib for phone number reformating -> pip install phonenumbers +import phonenumbers +# Lib py-asterisk from http://code.google.com/p/py-asterisk/ +# We need a version which has this commit : http://code.google.com/p/py-asterisk/source/detail?r=8d0e1c941cce727c702582f3c9fcd49beb4eeaa4 +# so a version after Nov 20th, 2012 +from Asterisk import Manager + +_logger = logging.getLogger(__name__) + + +class crm_claim(osv.osv): + _name = 'crm.claim' + _inherit = ['crm.claim', 'asterisk.common'] + + + def format_phonenumber_to_e164(self, cr, uid, ids, name, arg, context=None): + return self.generic_phonenumber_to_e164(cr, uid, ids, [('partner_phone', 'partner_phone_e164')], context=context) + + + _columns = { + 'partner_phone_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Phone in E.164 format', readonly=True, multi="e164claim", store={ + 'crm.claim': (lambda self, cr, uid, ids, c={}: ids, ['partner_phone'], 10), + }), + } + + + def create(self, cr, uid, vals, context=None): + vals_reformated = self.generic_reformat_phonenumbers(cr, uid, vals, context=context) + return super(crm_claim, self).create(cr, uid, vals_reformated, context=context) + + + def write(self, cr, uid, ids, vals, context=None): + vals_reformated = self.generic_reformat_phonenumbers(cr, uid, vals, context=context) + return super(crm_claim, self).write(cr, uid, ids, vals_reformated, context=context) + diff --git a/asterisk_click2dial_crm_claim/crm_claim_view.xml b/asterisk_click2dial_crm_claim/crm_claim_view.xml new file mode 100644 index 0000000..77b8b09 --- /dev/null +++ b/asterisk_click2dial_crm_claim/crm_claim_view.xml @@ -0,0 +1,30 @@ + + + + + + + + asterisk.crm_claim.form.dial + crm.claim + + + + + +