diff --git a/addons/account/i18n/it.po b/addons/account/i18n/it.po index 4a6d2d3a2b8..499700a8777 100644 --- a/addons/account/i18n/it.po +++ b/addons/account/i18n/it.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-06-04 16:42+0000\n" +"PO-Revision-Date: 2010-06-15 07:00+0000\n" "Last-Translator: eLBati - albatos.com \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-06-11 03:42+0000\n" +"X-Launchpad-Export-Date: 2010-06-16 03:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: account @@ -1176,7 +1176,7 @@ msgstr "" #. module: account #: field:account.payment.term,line_ids:0 msgid "Terms" -msgstr "Periodi" +msgstr "Condizioni" #. module: account #: rml:account.vat.declaration:0 diff --git a/addons/base_module_quality/i18n/it.po b/addons/base_module_quality/i18n/it.po index 9a4838ace97..565dd1e0f4d 100644 --- a/addons/base_module_quality/i18n/it.po +++ b/addons/base_module_quality/i18n/it.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-04-09 18:42+0000\n" -"Last-Translator: Nicola Pedron \n" +"PO-Revision-Date: 2010-06-15 12:50+0000\n" +"Last-Translator: Rinux \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-17 04:20+0000\n" +"X-Launchpad-Export-Date: 2010-06-16 03:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base_module_quality @@ -33,7 +33,7 @@ msgstr "" #. module: base_module_quality #: model:ir.module.module,shortdesc:base_module_quality.module_meta_information msgid "Base module quality" -msgstr "" +msgstr "Modulo base di qualità" #. module: base_module_quality #: field:module.quality.check,name:0 @@ -63,7 +63,7 @@ msgstr "" #. module: base_module_quality #: field:module.quality.detail,ponderation:0 msgid "Ponderation" -msgstr "" +msgstr "Ponderazione" #. module: base_module_quality #: help:module.quality.detail,ponderation:0 @@ -110,7 +110,7 @@ msgstr "" #. module: base_module_quality #: wizard_field:quality_detail_save,init,module_file:0 msgid "Save report" -msgstr "" +msgstr "Salva report" #. module: base_module_quality #: wizard_field:quality_detail_save,init,name:0 @@ -120,12 +120,12 @@ msgstr "" #. module: base_module_quality #: field:module.quality.detail,score:0 msgid "Score (%)" -msgstr "" +msgstr "Punteggio (%)" #. module: base_module_quality #: help:quality_detail_save,init,name:0 msgid "Save report as .html format" -msgstr "" +msgstr "Salva report come formato .html" #. module: base_module_quality #: view:module.quality.detail:0 @@ -146,12 +146,12 @@ msgstr "" #. module: base_module_quality #: view:module.quality.detail:0 msgid "Save Report" -msgstr "" +msgstr "Salva report" #. module: base_module_quality #: model:ir.actions.wizard,name:base_module_quality.create_quality_check_id msgid "Quality Check" -msgstr "" +msgstr "Controllo di qualità" #. module: base_module_quality #: model:ir.model,name:base_module_quality.model_module_quality_detail @@ -182,4 +182,4 @@ msgstr "" #. module: base_module_quality #: field:module.quality.detail,quality_check_id:0 msgid "Quality" -msgstr "" +msgstr "Qualità" diff --git a/addons/board/i18n/nl_BE.po b/addons/board/i18n/nl_BE.po index a16b538056f..2754b34b4bd 100644 --- a/addons/board/i18n/nl_BE.po +++ b/addons/board/i18n/nl_BE.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-04-24 15:45+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2010-06-15 14:17+0000\n" +"Last-Translator: Niels Huylebroeck \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-17 04:15+0000\n" +"X-Launchpad-Export-Date: 2010-06-16 03:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: board @@ -26,50 +26,50 @@ msgstr "" #. module: board #: model:ir.model,name:board.model_board_board msgid "board.board" -msgstr "" +msgstr "board.board" #. module: board #: field:board.note,user_id:0 msgid "Author" -msgstr "" +msgstr "Auteur" #. module: board #: model:ir.module.module,shortdesc:board.module_meta_information msgid "Dashboard main module" -msgstr "" +msgstr "Algemene dashboard module" #. module: board #: view:board.note:0 #: field:board.note,note:0 msgid "Note" -msgstr "" +msgstr "Notitie" #. module: board #: field:board.board.line,width:0 msgid "Width" -msgstr "" +msgstr "Breedte" #. module: board #: constraint:ir.actions.act_window:0 msgid "Invalid model name in the action definition." -msgstr "" +msgstr "Ongeldige modelnaam in de actie-definitie." #. module: board #: field:board.board.line,name:0 msgid "Title" -msgstr "" +msgstr "Titel" #. module: board #: model:ir.actions.act_window,name:board.action_view_board_list_form #: model:ir.ui.menu,name:board.menu_view_board_form msgid "Dashboard Definition" -msgstr "" +msgstr "Dashboard definitie" #. module: board #: model:ir.actions.act_window,name:board.action_view_board_note_form #: model:ir.ui.menu,name:board.menu_view_board_note_form msgid "Publish a note" -msgstr "" +msgstr "Publiceer een opmerking" #. module: board #: wizard_view:board.board.menu.create,init:0 diff --git a/addons/google_map/i18n/ru.po b/addons/google_map/i18n/ru.po index 640f842cade..c4f6acceef1 100644 --- a/addons/google_map/i18n/ru.po +++ b/addons/google_map/i18n/ru.po @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-06-15 03:32+0000\n" +"X-Launchpad-Export-Date: 2010-06-16 03:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: google_map diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py index da3b9c41a7c..4ed49a7c954 100644 --- a/addons/marketing_campaign/marketing_campaign.py +++ b/addons/marketing_campaign/marketing_campaign.py @@ -208,10 +208,7 @@ class marketing_campaign_activity(osv.osv): 'start': fields.boolean('Start',help= "This activity is launched when the campaign starts."), 'condition': fields.char('Condition', size=256, required=True, help="Python condition to know if the activity can be launched"), - 'type': fields.selection([('email', 'E-mail'), - ('paper', 'Paper'), - ('action', 'Action'), - ('subcampaign', 'Sub-Campaign')], + 'type': fields.selection(_actions_type, 'Type', required=True, help="Describe type of action to be performed on the Activity.Eg : Send email,Send paper.."), 'email_template_id': fields.many2one('email.template','Email Template'), @@ -412,7 +409,10 @@ class marketing_campaign_workitem(osv.osv): self.write(cr, uid, wi.id, {'state': 'done'}) self.process_chain(cr, uid, wi.id, context) else: - self.write(cr, uid, wi.id, {'state': 'exception'}) + vals = {'state': 'exception'} + if type(result) == type({}) and 'error_msg' in result: + vals['error_msg'] = result['error_msg'] + self.write(cr, uid, wi.id, vals) except Exception,e: self.write(cr, uid, wi.id, {'state': 'exception', 'error_msg': str(e)}) else : diff --git a/addons/marketing_campaign_mailchimp/__init__.py b/addons/marketing_campaign_mailchimp/__init__.py index 0f354314327..808e5fc281f 100644 --- a/addons/marketing_campaign_mailchimp/__init__.py +++ b/addons/marketing_campaign_mailchimp/__init__.py @@ -20,5 +20,5 @@ ############################################################################## import marketing_campaign_mailchimp - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +import wizard +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/marketing_campaign_mailchimp/__openerp__.py b/addons/marketing_campaign_mailchimp/__openerp__.py index bd614607b97..2a913eaa8da 100644 --- a/addons/marketing_campaign_mailchimp/__openerp__.py +++ b/addons/marketing_campaign_mailchimp/__openerp__.py @@ -32,6 +32,7 @@ 'init_xml': [], 'update_xml': [ 'marketing_campaign_mailchimp_view.xml', + 'wizard/create_list_view.xml', ], 'demo_xml': [], 'installable': True, diff --git a/addons/marketing_campaign_mailchimp/marketing_campaign_mailchimp.py b/addons/marketing_campaign_mailchimp/marketing_campaign_mailchimp.py index a1c3162cee2..f3d8386623e 100644 --- a/addons/marketing_campaign_mailchimp/marketing_campaign_mailchimp.py +++ b/addons/marketing_campaign_mailchimp/marketing_campaign_mailchimp.py @@ -18,16 +18,19 @@ # along with this program. If not, see . # ############################################################################## - -from osv import fields, osv - +import urllib import urllib2 import simplejson as json +import time +from datetime import datetime + +from osv import fields, osv +from marketing_campaign.marketing_campaign import _intervalTypes mailchimp_url = 'http://%s.api.mailchimp.com/1.2' -class marketing_campaign_mailchimp_account(osv.osv): #{{{ - _name = "marketing.campaign.mailchimp.account" +class mailchimp_account(osv.osv): + _name = "mailchimp.account" _columns = { 'name': fields.char('Account Name', size=64), @@ -52,12 +55,10 @@ class marketing_campaign_mailchimp_account(osv.osv): #{{{ params['password'] = mailchimp_account.password else : params['apikey'] = mailchimp_account.apikey - params = '&'.join(map(lambda x : '%s=%s' %(x, params[x]), params)) url = mailchimp_url%mailchimp_account.data_center+ '/?method=%s'%method - req = urllib2.Request(url, params) - handle = urllib2.urlopen(req) - response = json.loads(handle.read()) - return response + params = urllib.urlencode(params, doseq=True) + response = urllib2.urlopen(url, params) + return json.loads(response.read()) def button_approve(self, cr, uid, ids, context): acc_obj = self.browse(cr, uid, ids)[0] @@ -80,33 +81,57 @@ class marketing_campaign_mailchimp_account(osv.osv): #{{{ def button_cancel(self, cr, uid, ids, context): self.write(cr, uid, ids, {'state': 'cancelled'}) return True - -marketing_campaign_mailchimp_account() #}}} + + def add_partner_list(self, cr, uid, account_id, list_id, partner_ids): + vals = {} # just dictionary with partner_id and updated in list or not + for partner in self.pool.get('res.partner').browse(cr, uid, partner_ids): + params = {'id' : list_id, + 'email_address' : partner.email, + 'email_type':'text', + 'merge_vars[FNAME]':partner.name , + 'merge_vars[date]' : time.strftime('%Y-%m-%d'), + 'merge_vars[phone]' : partner.phone, + 'merge_vars[website]' : partner.website, + 'merge_vars[address][country]' : partner.country.code, + 'merge_vars[address][city]' : partner.city, + 'double_optin':False} + vals[partner.id] = self.get_response(cr, uid, account_id, + 'listSubscribe', params) + return vals + +mailchimp_account() -#class marketing_campaign_mailchimp_list(osv.osv_memory): #{{{ -# _name = "marketing.campaign.mailchimp.list" -# -# _columns = { -# 'name': fields.char('Name', size=64), -# 'mailchimp_account_id': fields.many2one('marketing.campaign.mailchimp.account', 'Account'), -# 'list_id': fields.char('List Id', size=64,), -# } -# -# _defaults = { -# 'state': lambda *a: 'draft' -# } -# -#marketing_campaign_mailchimp_list() #}}} +class mailchimp_list(osv.osv_memory): + _name = "mailchimp.list" + _description = "Mailchimp list" + + _columns = { + 'mailchimp_account_id': fields.many2one('mailchimp.account', + 'Mailchimp Account', required=True), + 'name': fields.char('Name', size=64) + } + +mailchimp_list() + +class marketing_campaign(osv.osv): + _inherit = "marketing.campaign" -class marketing_campaign_segment(osv.osv): #{{{ - _inherit = "marketing.campaign.segment" - _columns = { - 'synchro': fields.boolean('Mailchimp Synchro'), 'mailchimp_account_id': fields.many2one( - 'marketing.campaign.mailchimp.account', 'Account'), + 'mailchimp.account', 'Account'), + 'mailchimp_campaign': fields.char('campaign', size=64), + } +marketing_campaign() + + +class marketing_campaign_activity(osv.osv): + _inherit = "marketing.campaign.activity" + + _columns = { + 'mailchimp_account_id': fields.many2one( + 'mailchimp.account', 'Account'), 'mailchimp_list': fields.char('List', size=64), - } + } def onchange_mailchimp(self, cr, uid, ids, mailchimp_account_id): if mailchimp_account_id: @@ -116,16 +141,70 @@ class marketing_campaign_segment(osv.osv): #{{{ def onchange_mailchimp_list(self, cr, uid, ids, mailchimp_account_id, mailchimp_list): if mailchimp_account_id and mailchimp_list: - lists = self.pool.get('marketing.campaign.mailchimp.account').get_response(cr, + lists = self.pool.get('mailchimp.account').get_response(cr, uid, mailchimp_account_id, 'lists') - list_names = [list['name'] for list in lists] + list_names = [l['name'] for l in lists] if mailchimp_list not in list_names: raise osv.except_osv('Error!!!',"Lists doesn't exists") else : return {} return {'value':{}} -marketing_campaign_segment() #}}} - + def process_wi_mailchimp(self, cr, uid, activity, workitem, context={}): + mailchimp_account_id = activity.mailchimp_account_id.id + list_name = activity.mailchimp_list + mc_acc_obj = self.pool.get('mailchimp.account') + lists = mc_acc_obj.get_response(cr, uid, mailchimp_account_id, 'lists') + list_id = '' + for l in lists : + if l['name'] == list_name: + list_id = l['id'] + break; + res_model = workitem.object_id.model + res_id = workitem.res_id + model_obj = self.pool.get(res_model).browse(cr, uid, res_id) + params ={} + if res_model == 'res.partner' : + params.update({'email_address' : model_obj.email, + 'merge_vars[FNAME]':model_obj.name and model_obj.name or '', + 'merge_vars[website]' : model_obj.website, + 'merge_vars[address][country]' : model_obj.country.code, + }) + elif res_model == 'crm.lead' : + params.update({'email_address' : model_obj.email_from, + 'merge_vars[FNAME]':model_obj.partner_name and \ + model_obj.partner_name or '', + 'merge_vars[address][country]' : model_obj.country_id and \ + model_obj.country_id.code or '' + }) + if params['email_address'] : + user = mc_acc_obj.get_response(cr, uid, mailchimp_account_id, + 'listMemberInfo', + {'id' : list_id, + 'email_address': params['email_address']}) + # if there s no user with the specify email it will return error code + # and thus we add that user otherwise user is alredy subscribe and there + # is no need to subscribe user again + if 'error' in user: + params.update({'id' : list_id, + 'email_type':'text', + 'double_optin':False, + 'merge_vars[date]' : time.strftime('%Y-%m-%d'), + 'merge_vars[address][city]' : model_obj.city and model_obj.city or '', + 'merge_vars[phone]' : model_obj.phone and model_obj.phone or '', + }) + res = mc_acc_obj.get_response(cr, uid, mailchimp_account_id, 'listSubscribe', params) + # handle mailchimp error + return True + else : + return {'error_msg' : "Invalid Email Address"} + + def __init__(self, *args): + res = super(marketing_campaign_activity, self).__init__(*args) + self._actions.update({'mailchimp' : self.process_wi_mailchimp}) + self._actions_type.append(('mailchimp', 'Mailchimp')) + return res + +marketing_campaign_activity() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/marketing_campaign_mailchimp/marketing_campaign_mailchimp_view.xml b/addons/marketing_campaign_mailchimp/marketing_campaign_mailchimp_view.xml index 7a84f17311d..f2151d8d820 100644 --- a/addons/marketing_campaign_mailchimp/marketing_campaign_mailchimp_view.xml +++ b/addons/marketing_campaign_mailchimp/marketing_campaign_mailchimp_view.xml @@ -4,23 +4,38 @@ - - marketing.campaign.segment.form.inherit - marketing.campaign.segment + + marketing.campaign.activity.form.inherit + marketing.campaign.activity form - + - - - - - - - + + + + + + + + + + + + + marketing.campaign.form.inherit + marketing.campaign + form + + + + + + + @@ -35,9 +50,9 @@ - - marketing.campaign.mailchimp.account.tree - marketing.campaign.mailchimp.account + + mailchimp.account.tree + mailchimp.account tree @@ -49,9 +64,9 @@ - - marketing.campaign.mailchimp.account.form - marketing.campaign.mailchimp.account + + mailchimp.account.form + mailchimp.account form
@@ -71,16 +86,16 @@ - + All Mailchimp Accounts ir.actions.act_window - marketing.campaign.mailchimp.account + mailchimp.account form tree,form - + - + diff --git a/addons/marketing_campaign_mailchimp/wizard/__init__.py b/addons/marketing_campaign_mailchimp/wizard/__init__.py new file mode 100755 index 00000000000..713b0c1e773 --- /dev/null +++ b/addons/marketing_campaign_mailchimp/wizard/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + +import create_list + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/marketing_campaign_mailchimp/wizard/create_list.py b/addons/marketing_campaign_mailchimp/wizard/create_list.py new file mode 100755 index 00000000000..0a490787de5 --- /dev/null +++ b/addons/marketing_campaign_mailchimp/wizard/create_list.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 osv import fields, osv +from tools.translate import _ +import netsvc + +class create_list(osv.osv_memory): + _name = "create.list" + _description = "Create List of mailchimp" +# crm.lead remain + _columns = { + 'mailchimp_account_id': fields.many2one('mailchimp.account', + 'Mailchimp Account', required=True), + 'mailchimp_list_id': fields.many2one('mailchimp.list', 'List'), + 'list_name': fields.char('Name',size = 64), + 'partner_ids': fields.many2many('res.partner', + 'create_list_partner_rel', + 'cust_list_id', 'partner_id', + 'Partner'), + + } + + def onchange_mailchimp_account_id(self, cr, uid, ids, mailchimp_account_id, + action): + print mailchimp_account_id,action, + return {'value':{}} + + def create_list(self, cr, uid, ids, context=None): + create_list_obj = self.browse(cr, uid, ids[0]) + print create_list_obj.id + mailchimp_account_obj = self.pool.get('mailchimp.account') + account_id = create_list_obj.mailchimp_account_id + lists = mailchimp_account_obj.get_response(cr, uid, account_id.id, 'lists') + lists = dict([(l['name'],l['id']) for l in lists]) + print lists + if create_list_obj.list_name not in lists.keys(): + raise osv.except_osv(_('UserError'), + _('There is no list define in account %s') % (account_id.name)) + list_id = lists[create_list_obj.list_name] + mailchimp_account_obj.add_partner_list(cr, uid, account_id.id, list_id, + create_list_obj.partner_ids) + return {} +create_list() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/marketing_campaign_mailchimp/wizard/create_list_view.xml b/addons/marketing_campaign_mailchimp/wizard/create_list_view.xml new file mode 100755 index 00000000000..f15826aeaea --- /dev/null +++ b/addons/marketing_campaign_mailchimp/wizard/create_list_view.xml @@ -0,0 +1,35 @@ + + + + create.list.form + create.list + form + + + + + + + + + +