From f33171198680a04a1dc6a2802531abf41f054884 Mon Sep 17 00:00:00 2001 From: "Anup (OpenERP)" Date: Fri, 11 Jun 2010 16:53:32 +0530 Subject: [PATCH 01/34] [IMP] Security fixes for SQL injections. bzr revid: ach@tinyerp.com-20100611112332-8tsrkea948wnv0ap --- bin/addons/__init__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index 0370fa9a236..559c70cd562 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -88,8 +88,7 @@ class Graph(dict): ## Then we get the values from the database cr.execute('SELECT name, id, state, demo AS dbdemo, latest_version AS installed_version' ' FROM ir_module_module' - ' WHERE name in (%s)' % (','.join(['%s'] * len(self))), - additional_data.keys() + ' WHERE name in %s',(tuple(additional_data),) ) ## and we update the default values with values from the database @@ -821,7 +820,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False): loop_guardrail += 1 if loop_guardrail > 100: raise ProgrammingError() - cr.execute("SELECT name from ir_module_module WHERE state in (%s)" % ','.join(['%s']*len(STATES_TO_LOAD)), STATES_TO_LOAD) + cr.execute("SELECT name from ir_module_module WHERE state in %s" ,(tuple(STATES_TO_LOAD),)) module_list = [name for (name,) in cr.fetchall() if name not in graph] if not module_list: From ae894e7115cc9632371eedd6354e4c086a581257 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Wed, 23 Jun 2010 17:58:04 +0530 Subject: [PATCH 02/34] [FIX] Product: removed extended group into product category field bzr revid: hmo@tinyerp.com-20100623122804-gc7nx3atxz64kuoz --- addons/product/product_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index 982a9158022..e302ed912c0 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -99,7 +99,7 @@ - + From 9ae08c014b0999d99cab96ded338d87998d5eb81 Mon Sep 17 00:00:00 2001 From: "rch (OpenERP)" <> Date: Wed, 23 Jun 2010 18:43:38 +0530 Subject: [PATCH 03/34] [IMP]: Sale dashboard. bzr revid: jni@tinyerp.com-20100623131338-41q05qw2tkhuazk6 --- addons/sale/board_sale_view.xml | 2 +- addons/sale/report/sale_report_view.xml | 40 +++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/addons/sale/board_sale_view.xml b/addons/sale/board_sale_view.xml index 555390d1921..c89b90ecb65 100644 --- a/addons/sale/board_sale_view.xml +++ b/addons/sale/board_sale_view.xml @@ -30,7 +30,7 @@
- + diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml index 8e50e6978ba..e2fd3ae54e8 100644 --- a/addons/sale/report/sale_report_view.xml +++ b/addons/sale/report/sale_report_view.xml @@ -171,6 +171,18 @@ [('state','in',('manual','progress')),('date','<=', time.strftime('%Y-%m-%d')),('date','>',(datetime.date.today()-datetime.timedelta(days=90)).strftime('%Y-%m-%d'))] + + + graph + + + + + + tree + + + sales.by.salesman.tree @@ -204,7 +216,18 @@ [('state','in',('manual','progress')),('date','<=', time.strftime('%Y-%m-%d')),('date','>',(datetime.date.today()-datetime.timedelta(days=90)).strftime('%Y-%m-%d'))] - + + + graph + + + + + + tree + + + sold.product.total.price.tree sale.report @@ -237,7 +260,18 @@ [('state','in',('manual','progress')),('date','<=', time.strftime('%Y-%m-%d')),('date','>',(datetime.date.today()-datetime.timedelta(days=90)).strftime('%Y-%m-%d'))] - + + + graph + + + + + + tree + + + sales.category.product.price.tree @@ -259,7 +293,7 @@ - + Quotation For Sale sale.order form From 6844dd588b311e7432bf44890b9fa98a886d0baf Mon Sep 17 00:00:00 2001 From: "Anup (OpenERP)" Date: Wed, 23 Jun 2010 19:03:32 +0530 Subject: [PATCH 04/34] [FIX] account: fiscalyear closing wizard: entries of account with defferal method=='unreconciled' that are reconciled on a next fiscalyear bzr revid: ach@tinyerp.com-20100623133332-ezf32tdffz3rpzi9 --- addons/account/account.py | 4 ++-- .../wizard/account_fiscalyear_close.py | 19 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index 937f50249e5..ca5584a2c20 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -1191,10 +1191,10 @@ class account_move(osv.osv): else: line_id2 = 0 - cr.execute('SELECT SUM(%s) '\ + cr.execute('SELECT SUM('+mode+') '\ 'FROM account_move_line '\ 'WHERE move_id=%s AND id<>%s', - (mode, move.id, line_id2)) + (move.id, line_id2)) result = cr.fetchone()[0] or 0.0 cr.execute('update account_move_line set '+mode2+'=%s where id=%s', (result, line_id)) return True diff --git a/addons/account/wizard/account_fiscalyear_close.py b/addons/account/wizard/account_fiscalyear_close.py index 56b6410e3a2..65645f5da1e 100644 --- a/addons/account/wizard/account_fiscalyear_close.py +++ b/addons/account/wizard/account_fiscalyear_close.py @@ -68,8 +68,10 @@ class account_fiscalyear_close(osv.osv_memory): fy_id = data[0]['fy_id'] - period_ids = obj_acc_period.search(cr, uid, [('fiscalyear_id', '=', fy_id)]) - periods_fy2 = obj_acc_period.search(cr, uid, [('fiscalyear_id', '=', data[0]['fy2_id'])]) + cr.execute("SELECT id FROM account_period WHERE date_stop < (SELECT date_start FROM account_fiscalyear WHERE id = %s)" , (str(data[0]['fy2_id']),)) + fy_period_set = ','.join(map(lambda id: str(id[0]), cr.fetchall())) + cr.execute("SELECT id FROM account_period WHERE date_start > (SELECT date_stop FROM account_fiscalyear WHERE id = %s)" , (str(fy_id),)) + fy2_period_set = ','.join(map(lambda id: str(id[0]), cr.fetchall())) period = obj_acc_period.browse(cr, uid, data[0]['period_id'], context=context) new_fyear = obj_acc_fiscalyear.browse(cr, uid, data[0]['fy2_id'], context=context) @@ -90,8 +92,7 @@ class account_fiscalyear_close(osv.osv_memory): if move_ids: raise osv.except_osv(_('UserError'), _('The opening journal must not have any entry in the new fiscal year !')) - query = "SELECT id FROM account_fiscalyear WHERE date_stop < '" + str(new_fyear.date_start) + "'" - cr.execute(query) + cr.execute("SELECT id FROM account_fiscalyear WHERE date_stop < %s", (str(new_fyear.date_start),)) result = cr.dictfetchall() fy_ids = ','.join([str(x['id']) for x in result]) query_line = obj_acc_move_line._query_get(cr, uid, @@ -151,19 +152,17 @@ class account_fiscalyear_close(osv.osv_memory): offset = 0 limit = 100 while True: - #TODO: this query could be improved in order to work if there is more than 2 open FY - # a.period_id IN ('+fy2_period_set+') is the problematic clause - cr.execute('SELECT b.id, b.name, b.quantity, b.debit, b.credit, b.account_id, b.ref, ' \ + cr.execute('SELECT DISTINCT b.id, b.name, b.quantity, b.debit, b.credit, b.account_id, b.ref, ' \ 'b.amount_currency, b.currency_id, b.blocked, b.partner_id, ' \ 'b.date_maturity, b.date_created ' \ 'FROM account_move_line a, account_move_line b ' \ 'WHERE b.account_id = %s ' \ 'AND b.reconcile_id is NOT NULL ' \ 'AND a.reconcile_id = b.reconcile_id ' \ - 'AND b.period_id IN %s'\ - 'AND a.period_id IN %s' \ + 'AND b.period_id IN ('+fy_period_set+') ' \ + 'AND a.period_id IN ('+fy2_period_set+') ' \ 'ORDER BY id ' \ - 'LIMIT %s OFFSET %s', (account.id,tuple(period_ids),tuple(periods_fy2),limit, offset)) + 'LIMIT %s OFFSET %s', (account.id, limit, offset)) result = cr.dictfetchall() if not result: break From 08011d69f0a0fe2e550fd44aa0face6314a50fa5 Mon Sep 17 00:00:00 2001 From: "Anup (OpenERP)" Date: Wed, 23 Jun 2010 19:28:06 +0530 Subject: [PATCH 05/34] [FIX] account: centralize movement fixed bzr revid: ach@tinyerp.com-20100623135806-458pw5csif1d0e2w --- addons/account/account.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index ca5584a2c20..0abdd2af7e0 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -1144,6 +1144,7 @@ class account_move(osv.osv): return amount def _centralise(self, cr, uid, move, mode, context=None): + assert(mode in ('debit', 'credit'), 'Invalid Mode') #to prevent sql injection if context is None: context = {} @@ -1191,10 +1192,7 @@ class account_move(osv.osv): else: line_id2 = 0 - cr.execute('SELECT SUM('+mode+') '\ - 'FROM account_move_line '\ - 'WHERE move_id=%s AND id<>%s', - (move.id, line_id2)) + cr.execute('SELECT SUM(%s) FROM account_move_line WHERE move_id=%%s AND id!=%%s' % (mode,), (move.id, line_id2)) result = cr.fetchone()[0] or 0.0 cr.execute('update account_move_line set '+mode2+'=%s where id=%s', (result, line_id)) return True From abce6c32df34cbc65290d0ca42b95babb2105917 Mon Sep 17 00:00:00 2001 From: "Anup (OpenERP)" Date: Wed, 23 Jun 2010 19:32:59 +0530 Subject: [PATCH 06/34] [FIX] account: Added Allow Cancelling Entries on Journal View bzr revid: ach@tinyerp.com-20100623140259-yiy3lzvh4ha8t1y0 --- addons/account/account_view.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index b22ce445f53..adf62bcddcc 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -309,6 +309,7 @@ + From e77035d3ea8494bf48739a930fced08fedf6aad4 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 23 Jun 2010 17:01:35 +0200 Subject: [PATCH 07/34] modifs bzr revid: fp@tinyerp.com-20100623150135-03o40pysuf9dymdy --- .../marketing_campaign/marketing_campaign.py | 38 +++++++------- .../report/campaign_analysis.py | 52 +++++++++---------- .../report/campaign_analysis_view.xml | 51 +++++++++--------- 3 files changed, 70 insertions(+), 71 deletions(-) diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py index 86eea3f7631..feeaa074b6d 100644 --- a/addons/marketing_campaign/marketing_campaign.py +++ b/addons/marketing_campaign/marketing_campaign.py @@ -395,9 +395,9 @@ class marketing_campaign_workitem(osv.osv): 'object': wi.activity_id, 'transition': wi.activity_id.to_ids } - expr = eval(str(wi.activity_id.condition), eval_context) - if expr: - try: + try: + expr = eval(str(wi.activity_id.condition), eval_context) + if expr: result = True if wi.campaign_id.mode in ('manual','active'): result = self.pool.get('marketing.campaign.activity').process( @@ -410,11 +410,10 @@ class marketing_campaign_workitem(osv.osv): 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 : - self.write(cr, uid, wi.id, {'state': 'cancelled'}) - + else: + self.write(cr, uid, wi.id, {'state': 'cancelled'}) + except Exception,e: + self.write(cr, uid, wi.id, {'state': 'exception', 'error_msg': str(e)}) return True def process_all(self, cr, uid, camp_ids=None, context={}): @@ -422,16 +421,19 @@ class marketing_campaign_workitem(osv.osv): if not camp_ids: camp_ids = camp_obj.search(cr, uid, [('state','=','running')], context=context) for camp in camp_obj.browse(cr, uid, camp_ids, context=context): - if camp.mode in ('test_realtime','active'): - workitem_ids = self.search(cr, uid, [('state', '=', 'todo'), - ('date','<=', time.strftime('%Y-%m-%d %H:%M:%S'))]) - elif camp.mode == 'test': - workitem_ids = self.search(cr, uid, [('state', '=', 'todo')]) - else: - # manual states are not processed automatically - workitem_ids = [] - if workitem_ids: - self.process(cr, uid, workitem_ids, context) + while True: + if camp.mode in ('test_realtime','active'): + workitem_ids = self.search(cr, uid, [('state', '=', 'todo'), + ('date','<=', time.strftime('%Y-%m-%d %H:%M:%S'))]) + elif camp.mode == 'test': + workitem_ids = self.search(cr, uid, [('state', '=', 'todo')]) + else: + # manual states are not processed automatically + workitem_ids = [] + if workitem_ids: + self.process(cr, uid, workitem_ids, context) + else: + break def preview(self, cr, uid, ids, context): res = {} diff --git a/addons/marketing_campaign/report/campaign_analysis.py b/addons/marketing_campaign/report/campaign_analysis.py index 590a1b47bc0..590abf47fce 100644 --- a/addons/marketing_campaign/report/campaign_analysis.py +++ b/addons/marketing_campaign/report/campaign_analysis.py @@ -49,7 +49,7 @@ class campaign_analysis(osv.osv): #{{{ ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True), - 'date': fields.date('Date', readonly=True), + 'date': fields.datetime('Date', readonly=True), 'campaign_id': fields.many2one('marketing.campaign', 'Campaign', readonly=True), 'activity_id': fields.many2one('marketing.campaign.activity', 'Activity', @@ -61,36 +61,34 @@ class campaign_analysis(osv.osv): #{{{ type='many2one', relation='res.country',string='Country'), 'total_cost' : fields.function(_total_cost, string='Cost', method=True, type="float" ), - 'revenue': fields.float('Revenue',readonly=True), -# 'case_id': fields.many2one('crm.lead', 'Opportunity', readonly=True), -# 'count' : fields.integer('Count', readonly=True), + 'revenue': fields.float('Revenue',digits=(16,2),readonly=True), + 'count' : fields.integer('# of Actions', readonly=True), } def init(self, cr): tools.drop_view_if_exists(cr, 'campaign_analysis') cr.execute(""" - create or replace view campaign_analysis as ( - select - wi.id as id, - to_char(wi.date, 'YYYY') as year, - to_char(wi.date, 'MM') as month, - wi.date as date, - s.campaign_id as campaign_id, - wi.activity_id as activity_id, - wi.segment_id as segment_id, - wi.partner_id as partner_id , - act.revenue as revenue - from - marketing_campaign_workitem wi - left join res_partner p on (p.id=wi.partner_id) - left join marketing_campaign_segment s on (s.id=wi.segment_id) - left join marketing_campaign_activity act on (act.id= wi.activity_id) - group by - to_char(wi.date, 'YYYY'),to_char(wi.date, 'MM'), - s.campaign_id,wi.activity_id,wi.segment_id,wi.partner_id,revenue, - wi.date,wi.id - ) - """) - + create or replace view campaign_analysis as ( + select + min(wi.id) as id, + to_char(wi.date::date, 'YYYY') as year, + to_char(wi.date::date, 'MM') as month, + wi.date::date as date, + s.campaign_id as campaign_id, + wi.activity_id as activity_id, + wi.segment_id as segment_id, + wi.partner_id as partner_id , + sum(act.revenue) as revenue, + count(*) as count + from + marketing_campaign_workitem wi + left join res_partner p on (p.id=wi.partner_id) + left join marketing_campaign_segment s on (s.id=wi.segment_id) + left join marketing_campaign_activity act on (act.id= wi.activity_id) + group by + s.campaign_id,wi.activity_id,wi.segment_id,wi.partner_id, + wi.date::date + ) + """) campaign_analysis() #}}} diff --git a/addons/marketing_campaign/report/campaign_analysis_view.xml b/addons/marketing_campaign/report/campaign_analysis_view.xml index d7827033809..5a622d1364b 100644 --- a/addons/marketing_campaign/report/campaign_analysis_view.xml +++ b/addons/marketing_campaign/report/campaign_analysis_view.xml @@ -1,7 +1,7 @@ - - + + campaign.analysis.tree campaign.analysis tree @@ -15,37 +15,36 @@ - - + - + campaign.analysis.search campaign.analysis search - - - - - - - - - - - + + + + + + + + + + + @@ -60,17 +59,17 @@ - + Campaigns campaign.analysis form tree - {'group_by': [], 'search_default_Campaign': 1, 'search_default_Segment': 1} + {'group_by': [], 'search_default_Campaign': 1, 'search_default_Segment': 1, 'group_by_no_leaf':1} - + - + From cff5d130d12ac21b942a5ecd6e37f51c5b1d4864 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 23 Jun 2010 17:24:51 +0200 Subject: [PATCH 09/34] merge bzr revid: fp@tinyerp.com-20100623152451-v1ibzl70zr5my8iv --- addons/mrp/mrp.py | 15 ++- addons/product_expiry/__init__.py | 2 - .../{__terp__.py => __openerp__.py} | 2 +- addons/product_expiry/i18n/ca.po | 21 ++- addons/product_expiry/i18n/es.po | 23 +++- addons/product_expiry/i18n/fr.po | 19 ++- addons/product_expiry/product_expiry.py | 41 +++--- addons/product_expiry/report/__init__.py | 25 ---- addons/product_expiry/report/report_stock.py | 121 ------------------ .../report/report_stock_view.xml | 103 --------------- addons/product_expiry/wizard/__init__.py | 1 - addons/product_expiry/wizard/stock_partial.py | 70 ---------- .../wizard/stock_partial_view.xml | 22 ---- addons/product_manufacturer/__openerp__.py | 2 +- addons/product_manufacturer/i18n/fr_BE.po | 50 ++++---- ...anufacturer.pot => product_electronic.pot} | 50 ++++---- .../product_manufacturer.py | 19 +-- .../product_manufacturer_view.xml | 112 +++++++--------- .../security/ir.model.access.csv | 4 +- 19 files changed, 183 insertions(+), 519 deletions(-) rename addons/product_expiry/{__terp__.py => __openerp__.py} (93%) delete mode 100644 addons/product_expiry/report/__init__.py delete mode 100644 addons/product_expiry/report/report_stock.py delete mode 100644 addons/product_expiry/report/report_stock_view.xml delete mode 100644 addons/product_expiry/wizard/__init__.py delete mode 100644 addons/product_expiry/wizard/stock_partial.py delete mode 100644 addons/product_expiry/wizard/stock_partial_view.xml rename addons/product_manufacturer/i18n/{product_manufacturer.pot => product_electronic.pot} (61%) diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 86e7a57dd53..9f28cff4594 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -543,16 +543,21 @@ class mrp_production(osv.osv): return {'value': {'location_dest_id': src}} return {} - def product_id_change(self, cr, uid, ids, product): + def product_id_change(self, cr, uid, ids, product, context=None): """ Finds UoM of changed product. @param product: Id of changed product. @return: Dictionary of values. """ if not product: - return {} - res = self.pool.get('product.product').read(cr, uid, [product], ['uom_id'])[0] - uom = res['uom_id'] and res['uom_id'][0] - result = {'product_uom': uom} + return {'value': { + 'product_uom': False, + 'bom_id': False + }} + res = self.pool.get('product.product').browse(cr, uid, product, context=context) + result = { + 'product_uom': res.uom_id and res.uom_id.id or False, + 'bom_id': res.bom_ids and res.bom_ids[0].id or False + } return {'value': result} def bom_id_change(self, cr, uid, ids, product): diff --git a/addons/product_expiry/__init__.py b/addons/product_expiry/__init__.py index 3b5500415c2..de4fe83ab83 100644 --- a/addons/product_expiry/__init__.py +++ b/addons/product_expiry/__init__.py @@ -19,7 +19,5 @@ ############################################################################## import product_expiry -import wizard -import report # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/product_expiry/__terp__.py b/addons/product_expiry/__openerp__.py similarity index 93% rename from addons/product_expiry/__terp__.py rename to addons/product_expiry/__openerp__.py index 2e44f2c6462..1d0b9356efe 100644 --- a/addons/product_expiry/__terp__.py +++ b/addons/product_expiry/__openerp__.py @@ -31,7 +31,7 @@ - removal date - alert date Used, for example, in food industries.''', - "update_xml" : ["product_expiry_view.xml", "report/report_stock_view.xml", "wizard/stock_partial_view.xml"], + "update_xml" : ["product_expiry_view.xml"], "active": False, "installable": True } diff --git a/addons/product_expiry/i18n/ca.po b/addons/product_expiry/i18n/ca.po index 0ed0bfcab10..c4acce0421f 100644 --- a/addons/product_expiry/i18n/ca.po +++ b/addons/product_expiry/i18n/ca.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2009-06-30 15:09+0000\n" -"PO-Revision-Date: 2010-06-21 15:56+0000\n" +"PO-Revision-Date: 2010-01-10 22:56+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Catalan \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-22 04:20+0000\n" +"X-Launchpad-Export-Date: 2010-04-24 04:01+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: product_expiry @@ -161,3 +161,20 @@ msgstr "" #: field:product.product,alert_time:0 msgid "Product alert time" msgstr "Data alerta producte" + +#~ msgid "Alert date" +#~ msgstr "Data alarma" + +#~ msgid "" +#~ "Track different dates on products and lots. Used, for exampel, in food " +#~ "industries: expiry date, alert date, date of removal, eso." +#~ msgstr "" +#~ "Gestiona diferents dates per a productes i lots. Utilitzat, per exemple, en " +#~ "la indústria alimentària: Data de caducitat, data d'alarma, data " +#~ "d'eliminació, ..." + +#~ msgid "DLUO" +#~ msgstr "Data caducitat" + +#~ msgid "Removal date" +#~ msgstr "Data eliminació" diff --git a/addons/product_expiry/i18n/es.po b/addons/product_expiry/i18n/es.po index 72a3aeec0e2..537d7ce26ef 100644 --- a/addons/product_expiry/i18n/es.po +++ b/addons/product_expiry/i18n/es.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2009-06-30 15:09+0000\n" -"PO-Revision-Date: 2010-06-21 15:56+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2010-04-29 04:43+0000\n" +"Last-Translator: Rhubeni Lopes de Andrade \n" "Language-Team: Spanish \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-22 04:20+0000\n" +"X-Launchpad-Export-Date: 2010-04-30 03:57+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: product_expiry @@ -161,3 +161,20 @@ msgstr "" #: field:product.product,alert_time:0 msgid "Product alert time" msgstr "Fecha alerta producto" + +#~ msgid "Alert date" +#~ msgstr "Fecha alarma" + +#~ msgid "" +#~ "Track different dates on products and lots. Used, for exampel, in food " +#~ "industries: expiry date, alert date, date of removal, eso." +#~ msgstr "" +#~ "Gestiona distintas fechas para productos y lotes. Utilizado, por ejemplo, en " +#~ "industria alimentaria: Fecha de caducidad, fecha de alarma, fecha de " +#~ "eliminación, ..." + +#~ msgid "DLUO" +#~ msgstr "Fecha caducidad" + +#~ msgid "Removal date" +#~ msgstr "Fecha eliminación" diff --git a/addons/product_expiry/i18n/fr.po b/addons/product_expiry/i18n/fr.po index 45cf454a094..13a3e127700 100644 --- a/addons/product_expiry/i18n/fr.po +++ b/addons/product_expiry/i18n/fr.po @@ -1,20 +1,19 @@ -# French translation for openobject-addons -# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2010. +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * product_expiry # msgid "" msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" +"Project-Id-Version: OpenERP Server 5.0.1\n" +"Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-06-30 15:09+0000\n" -"PO-Revision-Date: 2010-06-21 15:56+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: French \n" +"PO-Revision-Date: 2010-01-04 18:19+0000\n" +"Last-Translator: Fabien (Open ERP) \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-22 04:20+0000\n" +"X-Launchpad-Export-Date: 2010-04-24 04:01+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: product_expiry diff --git a/addons/product_expiry/product_expiry.py b/addons/product_expiry/product_expiry.py index ad9b8252d49..72f18412af4 100644 --- a/addons/product_expiry/product_expiry.py +++ b/addons/product_expiry/product_expiry.py @@ -21,21 +21,10 @@ import datetime from osv import fields, osv import pooler -import time class stock_production_lot(osv.osv): _name = 'stock.production.lot' _inherit = 'stock.production.lot' - def name_get(self, cr, uid, ids, context=None): - if not len(ids): - return [] - result = [] - for line in self.browse(cr, uid, ids, context): - if line.life_date: - result.append((line.id, (line.name or '')+' ('+line.life_date+')')) - else: - result.append((line.id, line.name)) - return result def _get_date(dtype): """Return a function to compute the limit date for this type""" @@ -52,24 +41,36 @@ class stock_production_lot(osv.osv): # set date to False when no expiry time specified on the product date = duration and (datetime.datetime.today() + datetime.timedelta(days=duration)) - return date and date.strftime('%Y-%m-%d') + return date and date.strftime('%Y-%m-%d %H:%M:%S') return calc_date _columns = { - 'life_date': fields.date('End of Life Date', + 'life_date': fields.datetime('End of Life Date', help='The date the lot may become dangerous and should not be consumed.'), - 'use_date': fields.date('Best before Date', + 'use_date': fields.datetime('Best before Date', help='The date the lot starts deteriorating without becoming dangerous.'), - 'removal_date': fields.date('Removal Date', + 'removal_date': fields.datetime('Removal Date', help='The date the lot should be removed.'), - 'alert_date': fields.date('Alert Date'), + 'alert_date': fields.datetime('Alert Date'), } + # Assign dates according to products data + def create(self, cr, uid, vals, context=None): + newid = super(stock_production_lot, self).create(cr, uid, vals, context=context) + obj = self.browse(cr, uid, newid, context=context) + towrite = [] + for f in ('life_date','use_date','removal_date','alert_date'): + if not getattr(obj, f): + towrite.append(f) + context = context or {} + context['product_id'] = obj.product_id.id + self.write(cr, uid, [obj.id], self.default_get(cr, uid, towrite, context=context)) + return newid _defaults = { - # 'life_date': _get_date('life_time'), - # 'use_date': _get_date('use_time'), - # 'removal_date': _get_date('removal_time'), - # 'alert_date': _get_date('alert_time'), + 'life_date': _get_date('life_time'), + 'use_date': _get_date('use_time'), + 'removal_date': _get_date('removal_time'), + 'alert_date': _get_date('alert_time'), } stock_production_lot() diff --git a/addons/product_expiry/report/__init__.py b/addons/product_expiry/report/__init__.py deleted file mode 100644 index a6006ed47b3..00000000000 --- a/addons/product_expiry/report/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- 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 report_stock - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/addons/product_expiry/report/report_stock.py b/addons/product_expiry/report/report_stock.py deleted file mode 100644 index bef64eaffa6..00000000000 --- a/addons/product_expiry/report/report_stock.py +++ /dev/null @@ -1,121 +0,0 @@ -# -*- 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 osv, fields -from tools.translate import _ -import tools -from tools.sql import drop_view_if_exists - -class stock_report_prodlots(osv.osv): - _name = "stock.report.prodlots1" - _description = "Stock report by production lots" - _auto = False - _columns = { - 'name': fields.float('Quantity', readonly=True), - 'location_id': fields.many2one('stock.location', 'Location', readonly=True, select=True), - 'product_id': fields.many2one('product.product', 'Product', readonly=True, select=True), - 'prodlot_id': fields.many2one('stock.production.lot', 'Production lot', readonly=True, select=True), - 'life_date': fields.date('End of Life Date', - help='The date the lot may become dangerous and should not be consumed.'), - 'use_date': fields.date('Best before Date', - help='The date the lot starts deteriorating without becoming dangerous.'), - 'removal_date': fields.date('Removal Date', - help='The date the lot should be removed.'), - 'alert_date': fields.date('Alert Date'), - - } - - def init(self, cr): - drop_view_if_exists(cr, 'stock_report_prodlots1') - cr.execute(""" - create or replace view stock_report_prodlots1 as ( - select max(id) as id, - location_id, - product_id, - prodlot_id, - life_date, - use_date, - removal_date, - alert_date, - sum(qty) as name - from ( - select -max(sm.id) as id, - sm.location_id, - sm.product_id, - sm.prodlot_id, - spl.life_date, - spl.use_date, - spl.removal_date, - spl.alert_date, - -sum(sm.product_qty /uo.factor) as qty - from stock_move as sm - left join stock_location sl - on (sl.id = sm.location_id) - left join stock_production_lot spl - on (sm.prodlot_id=spl.id) - left join product_uom uo - on (uo.id=sm.product_uom) - where state = 'done' - group by sm.location_id, sm.product_id, sm.product_uom, sm.prodlot_id, - spl.life_date, - spl.use_date, - spl.removal_date, - spl.alert_date - - union all - select max(sm.id) as id, - sm.location_dest_id as location_id, - sm.product_id, - sm.prodlot_id, - spl.life_date, - spl.use_date, - spl.removal_date, - spl.alert_date, - sum(sm.product_qty /uo.factor) as qty - from stock_move as sm - left join stock_location sl - on (sl.id = sm.location_dest_id) - left join stock_production_lot spl - on (sm.prodlot_id=spl.id) - left join product_uom uo - on (uo.id=sm.product_uom) - where sm.state = 'done' - group by sm.location_dest_id, sm.product_id, sm.product_uom, sm.prodlot_id, - spl.life_date, - spl.use_date, - spl.removal_date, - spl.alert_date - - ) as report - group by location_id, product_id, prodlot_id, - life_date, - use_date, - removal_date, - alert_date - )""") - - def unlink(self, cr, uid, ids, context={}): - raise osv.except_osv(_('Error !'), _('You cannot delete any record!')) - - -stock_report_prodlots() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/product_expiry/report/report_stock_view.xml b/addons/product_expiry/report/report_stock_view.xml deleted file mode 100644 index 68198e87dd3..00000000000 --- a/addons/product_expiry/report/report_stock_view.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - stock.report.prodlots.filter - stock.report.prodlots1 - search - - - - - - - - - - - - - - - - - - - - - - - - - - - stock.report.prodlots.view - stock.report.prodlots1 - form - - - - - - - - - - - - - - - - stock.report.prodlots.view - stock.report.prodlots1 - tree - - - - - - - - - - - - - - - - stock.report.prodlots.view - stock.report.prodlots1 - graph - - - - - - - - - - - Inventory by Location - ir.actions.act_window - stock.report.prodlots1 - form - tree,form - {'full':'1','search_default_internal_locations':1} - - - - - - - - diff --git a/addons/product_expiry/wizard/__init__.py b/addons/product_expiry/wizard/__init__.py deleted file mode 100644 index 2b1b55ed6e0..00000000000 --- a/addons/product_expiry/wizard/__init__.py +++ /dev/null @@ -1 +0,0 @@ -import stock_partial diff --git a/addons/product_expiry/wizard/stock_partial.py b/addons/product_expiry/wizard/stock_partial.py deleted file mode 100644 index 6af52951613..00000000000 --- a/addons/product_expiry/wizard/stock_partial.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- 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 service import web_services -from tools.misc import UpdateableStr, UpdateableDict -from tools.translate import _ -import netsvc -import pooler -import time -import datetime, time -import wizard - -class stock_production_lot(osv.osv): - _inherit = "stock.production.lot" - def create(self, cr, uid, vals, context={}): - new_id = super(stock_production_lot, self).create(cr, uid, vals, context=context) - prodlot_obj = self.pool.get('stock.production.lot') - prod = prodlot_obj.browse(cr, uid, new_id, context=context) - res = {} - current_date = time.strftime('%Y-%m-%d %H:%M:%S') - if not prod.life_date: - date_life = (datetime.datetime.strptime(current_date, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=prod.product_id.life_time)) - res['life_date'] = date_life.strftime('%Y-%m-%d') - if not prod.use_date: - date_use = (datetime.datetime.strptime(current_date, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=prod.product_id.use_time)) - res['use_date'] = date_use.strftime('%Y-%m-%d') - if not prod.removal_date: - date_removal = (datetime.datetime.strptime(current_date, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=prod.product_id.removal_time)) - res['removal_date'] = date_removal.strftime('%Y-%m-%d') - if not prod.alert_date: - date_alert = (datetime.datetime.strptime(current_date, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=prod.product_id.alert_time)) - res['alert_date'] = date_alert.strftime('%Y-%m-%d') - prodlot_obj.write(cr, uid, [prod.id], res) - return new_id -stock_production_lot() - -class stock_move_split_lines_exist(osv.osv_memory): - _inherit = "stock.move.split.lines" - _columns = { - 'date': fields.date('Expiry Date'), - } - # TODO: use this date instead of default one - def on_change_product(self, cr, uid, ids, product_id): - if not product_id: - return {'value':{'date': False}} - day_life = self.pool.get('product.product').browse(cr, uid, product_id).life_time - date_life = (datetime.datetime.now() + datetime.timedelta(days=day_life)) - return {'value': - {'date': date_life.strftime('%Y-%m-%d')} - } -stock_move_split_lines_exist() diff --git a/addons/product_expiry/wizard/stock_partial_view.xml b/addons/product_expiry/wizard/stock_partial_view.xml deleted file mode 100644 index b42ea07ba40..00000000000 --- a/addons/product_expiry/wizard/stock_partial_view.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - Split in lots - stock.move.split - form - - - - - - - - - - - - - - diff --git a/addons/product_manufacturer/__openerp__.py b/addons/product_manufacturer/__openerp__.py index 5d7e8922520..e6a1a919865 100644 --- a/addons/product_manufacturer/__openerp__.py +++ b/addons/product_manufacturer/__openerp__.py @@ -21,7 +21,7 @@ "name" : "Products Attributes & Manufacturers", "version" : "1.0", "author" : "Tiny", - "category" : "Enterprise Specific Modules/Industries", + "category" : "Enterprise Specific Modules/Manufacturer Industries", "depends" : ["base", "account", "product", "stock"], "init_xml" : [], "demo_xml" : [], diff --git a/addons/product_manufacturer/i18n/fr_BE.po b/addons/product_manufacturer/i18n/fr_BE.po index 2fc936e9dfc..11351ba679d 100644 --- a/addons/product_manufacturer/i18n/fr_BE.po +++ b/addons/product_manufacturer/i18n/fr_BE.po @@ -1,6 +1,6 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * product_electronic +# * product_manufacturer # msgid "" msgstr "" @@ -15,88 +15,88 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: product_electronic -#: model:ir.module.module,description:product_electronic.module_meta_information +#. module: product_manufacturer +#: model:ir.module.module,description:product_manufacturer.module_meta_information msgid "A module that add manufacturers and attributes on the product form" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: field:product.product,manufacturer_pref:0 msgid "Manufacturer product code" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: constraint:ir.ui.view:0 msgid "Invalid XML for View Architecture!" msgstr "" -#. module: product_electronic -#: view:product.electronic.attribute:0 +#. module: product_manufacturer +#: view:product.manufacturer.attribute:0 msgid "Product Template Name" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: constraint:ir.model:0 msgid "The Object name must start with x_ and not contain any special character !" msgstr "" -#. module: product_electronic -#: model:ir.model,name:product_electronic.model_product_electronic_attribute +#. module: product_manufacturer +#: model:ir.model,name:product_manufacturer.model_product_electronic_attribute msgid "Product attributes" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 msgid "Manufacturing data" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 msgid "Product reference" msgstr "" -#. module: product_electronic -#: field:product.electronic.attribute,name:0 +#. module: product_manufacturer +#: field:product.manufacturer.attribute,name:0 msgid "Attribute" msgstr "" -#. module: product_electronic -#: field:product.electronic.attribute,product_id:0 +#. module: product_manufacturer +#: field:product.manufacturer.attribute,product_id:0 msgid "Product" msgstr "" -#. module: product_electronic -#: field:product.electronic.attribute,value:0 +#. module: product_manufacturer +#: field:product.manufacturer.attribute,value:0 msgid "Value" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 msgid "Manufacturing Data" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 msgid "Product name" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 #: field:product.product,attribute_ids:0 msgid "Attributes" msgstr "" -#. module: product_electronic -#: model:ir.module.module,shortdesc:product_electronic.module_meta_information +#. module: product_manufacturer +#: model:ir.module.module,shortdesc:product_manufacturer.module_meta_information msgid "Products Attributes & Manufacturers" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: field:product.product,manufacturer_pname:0 msgid "Manufacturer product name" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: field:product.product,manufacturer:0 msgid "Manufacturer" msgstr "" diff --git a/addons/product_manufacturer/i18n/product_manufacturer.pot b/addons/product_manufacturer/i18n/product_electronic.pot similarity index 61% rename from addons/product_manufacturer/i18n/product_manufacturer.pot rename to addons/product_manufacturer/i18n/product_electronic.pot index 2fc936e9dfc..11351ba679d 100644 --- a/addons/product_manufacturer/i18n/product_manufacturer.pot +++ b/addons/product_manufacturer/i18n/product_electronic.pot @@ -1,6 +1,6 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * product_electronic +# * product_manufacturer # msgid "" msgstr "" @@ -15,88 +15,88 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: product_electronic -#: model:ir.module.module,description:product_electronic.module_meta_information +#. module: product_manufacturer +#: model:ir.module.module,description:product_manufacturer.module_meta_information msgid "A module that add manufacturers and attributes on the product form" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: field:product.product,manufacturer_pref:0 msgid "Manufacturer product code" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: constraint:ir.ui.view:0 msgid "Invalid XML for View Architecture!" msgstr "" -#. module: product_electronic -#: view:product.electronic.attribute:0 +#. module: product_manufacturer +#: view:product.manufacturer.attribute:0 msgid "Product Template Name" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: constraint:ir.model:0 msgid "The Object name must start with x_ and not contain any special character !" msgstr "" -#. module: product_electronic -#: model:ir.model,name:product_electronic.model_product_electronic_attribute +#. module: product_manufacturer +#: model:ir.model,name:product_manufacturer.model_product_electronic_attribute msgid "Product attributes" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 msgid "Manufacturing data" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 msgid "Product reference" msgstr "" -#. module: product_electronic -#: field:product.electronic.attribute,name:0 +#. module: product_manufacturer +#: field:product.manufacturer.attribute,name:0 msgid "Attribute" msgstr "" -#. module: product_electronic -#: field:product.electronic.attribute,product_id:0 +#. module: product_manufacturer +#: field:product.manufacturer.attribute,product_id:0 msgid "Product" msgstr "" -#. module: product_electronic -#: field:product.electronic.attribute,value:0 +#. module: product_manufacturer +#: field:product.manufacturer.attribute,value:0 msgid "Value" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 msgid "Manufacturing Data" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 msgid "Product name" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: view:product.product:0 #: field:product.product,attribute_ids:0 msgid "Attributes" msgstr "" -#. module: product_electronic -#: model:ir.module.module,shortdesc:product_electronic.module_meta_information +#. module: product_manufacturer +#: model:ir.module.module,shortdesc:product_manufacturer.module_meta_information msgid "Products Attributes & Manufacturers" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: field:product.product,manufacturer_pname:0 msgid "Manufacturer product name" msgstr "" -#. module: product_electronic +#. module: product_manufacturer #: field:product.product,manufacturer:0 msgid "Manufacturer" msgstr "" diff --git a/addons/product_manufacturer/product_manufacturer.py b/addons/product_manufacturer/product_manufacturer.py index d77ab518efe..969b4ce69cf 100644 --- a/addons/product_manufacturer/product_manufacturer.py +++ b/addons/product_manufacturer/product_manufacturer.py @@ -24,26 +24,13 @@ class product_product(osv.osv): _inherit = 'product.product' _name = 'product.product' _columns = { + 'manufacturer' : fields.many2one('res.partner', 'Manufacturer'), + 'manufacturer_pname' : fields.char('Manufacturer Product Name', size=64), + 'manufacturer_pref' : fields.char('Manufacturer Product Code', size=64), 'attribute_ids': fields.one2many('product.manufacturer.attribute', 'product_id', 'Attributes'), - 'manufacturer_ids': fields.one2many('res.partner.manufacturer', 'product_id', 'Manufacturers'), } product_product() -class res_partner_manufacturer(osv.osv): - _name = 'res.partner.manufacturer' - _rec_name = 'manufacturer_id' - _columns = { - 'manufacturer_id' : fields.many2one('res.partner', 'Manufacturer'), - 'country_id' : fields.many2one('res.country', 'Country'), - 'authorized' : fields.boolean('Authorized'), - 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade'), - } - _defaults = { - 'authorized': lambda *a: True, - } - -res_partner_manufacturer() - class product_attribute(osv.osv): _name = "product.manufacturer.attribute" _description = "Product attributes" diff --git a/addons/product_manufacturer/product_manufacturer_view.xml b/addons/product_manufacturer/product_manufacturer_view.xml index cfd7f23ae8d..1d1f952cd4d 100644 --- a/addons/product_manufacturer/product_manufacturer_view.xml +++ b/addons/product_manufacturer/product_manufacturer_view.xml @@ -1,72 +1,56 @@ - + - - product.normal.form - product.product - - form - - - - - + + product.normal.form + product.product + + form + + + + + + + + - - - - - - + + + + + + + + + + + - - product.manufacturer.attribute.tree - product.manufacturer.attribute - tree - - - - - - - - - product.manufacturer.attribute.form - product.manufacturer.attribute - form - -
- - - - -
+ + product.manufacturer.attribute.tree + product.manufacturer.attribute + tree + + + + + + + + + product.manufacturer.attribute.form + product.manufacturer.attribute + form + +
+ + + + +
- - res.partner.manufacturer.tree - res.partner.manufacturer - tree - - - - - - - - - - res.partner.manufacturer.form - res.partner.manufacturer - form - -
- - - - - -
-
+
diff --git a/addons/product_manufacturer/security/ir.model.access.csv b/addons/product_manufacturer/security/ir.model.access.csv index 1d3f9af7a2b..6f07fb1dc94 100644 --- a/addons/product_manufacturer/security/ir.model.access.csv +++ b/addons/product_manufacturer/security/ir.model.access.csv @@ -1,5 +1,3 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_product_manufacturer_attribute","product.manufacturer.attribute","model_product_manufacturer_attribute",,1,0,0,0 +"access_product_manufacturer_attribute","product.manufacturer.attribute","model_product_manufacturer_attribute",base.group_user,1,0,0,0 "access_product_manufacturer_attribute_manager","product.manufacturer.attribute","model_product_manufacturer_attribute","product.group_product_manager",1,1,1,1 -"access_partner_manufacturer","res.partner.manufacturer","model_res_partner_manufacturer",,1,0,0,0 -"access_partner_manufacturer_manager","res.partner.manufacturer","model_res_partner_manufacturer","product.group_product_manager",1,1,1,1 From 0a403e732c4c98e0344094d116c6eb6a9352ae9a Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 14 Jun 2010 08:50:20 +0200 Subject: [PATCH 11/34] [IMP] better modules descriptions bzr revid: fp@tinyerp.com-20100614065020-45em7h3t5r5l5wca --- addons/crm_claim/__openerp__.py | 8 ++++++-- addons/product_expiry/__openerp__.py | 2 +- addons/product_manufacturer/__openerp__.py | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/addons/crm_claim/__openerp__.py b/addons/crm_claim/__openerp__.py index 6ad4af16266..c3533af2702 100644 --- a/addons/crm_claim/__openerp__.py +++ b/addons/crm_claim/__openerp__.py @@ -24,8 +24,12 @@ 'name': 'Customer & Supplier Relationship Management', 'version': '1.0', 'category': 'Generic Modules/CRM & SRM', - 'description': """claim""", - 'author': 'Tiny', + 'description': """ +This modules allows you to track your customers/suppliers claims and flames. +It is fully integrated with the email gateway so that you can create +automatically new claims based on incoming emails. + """, + 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'depends': ['crm'], 'init_xml': [ diff --git a/addons/product_expiry/__openerp__.py b/addons/product_expiry/__openerp__.py index 1d0b9356efe..b03777ecec6 100644 --- a/addons/product_expiry/__openerp__.py +++ b/addons/product_expiry/__openerp__.py @@ -20,7 +20,7 @@ { "name" : "Products date of expiry", "version" : "1.0", - "author" : "Tiny", + "author" : "OpenERP SA", "category" : "Enterprise Specific Modules/Food Industries", "depends" : ["base", "account", "product", "stock"], "init_xml" : [], diff --git a/addons/product_manufacturer/__openerp__.py b/addons/product_manufacturer/__openerp__.py index e6a1a919865..bccabe95283 100644 --- a/addons/product_manufacturer/__openerp__.py +++ b/addons/product_manufacturer/__openerp__.py @@ -20,7 +20,7 @@ { "name" : "Products Attributes & Manufacturers", "version" : "1.0", - "author" : "Tiny", + "author" : "OpenERP SA", "category" : "Enterprise Specific Modules/Manufacturer Industries", "depends" : ["base", "account", "product", "stock"], "init_xml" : [], From 6b90ca82c585269c45ac03326fb501b411624f3d Mon Sep 17 00:00:00 2001 From: "Anup (OpenERP)" Date: Tue, 15 Jun 2010 18:57:22 +0530 Subject: [PATCH 12/34] [IMP] removed the possible SQL injection server. bzr revid: ach@tinyerp.com-20100615132722-zbua6ciz3dz43qd8 --- bin/addons/base/ir/ir_attachment.py | 4 +- bin/addons/base/ir/ir_translation.py | 4 +- bin/addons/base/ir/ir_values.py | 81 +++++++----------- bin/addons/base/ir/workflow/print_instance.py | 11 +-- bin/addons/base/module/module.py | 9 +- bin/addons/base/res/partner/partner.py | 4 +- bin/addons/base/res/res_company.py | 2 +- bin/addons/base/res/res_currency.py | 6 +- bin/osv/expression.py | 49 ++++++----- bin/osv/fields.py | 27 ++++-- bin/osv/orm.py | 83 ++++++++++--------- bin/tools/misc.py | 13 +-- bin/tools/translate.py | 7 +- 13 files changed, 150 insertions(+), 150 deletions(-) diff --git a/bin/addons/base/ir/ir_attachment.py b/bin/addons/base/ir/ir_attachment.py index 4ca585a92a4..cac1beea029 100644 --- a/bin/addons/base/ir/ir_attachment.py +++ b/bin/addons/base/ir/ir_attachment.py @@ -30,7 +30,7 @@ class ir_attachment(osv.osv): ima = self.pool.get('ir.model.access') if isinstance(ids, (int, long)): ids = [ids] - cr.execute('select distinct res_model from ir_attachment where id = ANY (%s)', (ids,)) + cr.execute('select distinct res_model from ir_attachment where id in %s', (tuple(ids),)) for obj in cr.fetchall(): if obj[0]: ima.check(cr, uid, obj[0], mode, context=context) @@ -84,7 +84,7 @@ class ir_attachment(osv.osv): dataobj = self.pool.get('ir.model.data') data_id = dataobj._get_id(cr, 1, 'base', 'action_attachment') res_id = dataobj.browse(cr, uid, data_id, context).res_id - return self.pool.get('ir.actions.act_window').read(cr, uid, res_id, [], context) + return self.pool.get('ir.actions.act_window').read(cr, uid, res_id, [], context) def _name_get_resname(self, cr, uid, ids, object,method, context): data = {} diff --git a/bin/addons/base/ir/ir_translation.py b/bin/addons/base/ir/ir_translation.py index 8e575b6b242..1a363285dde 100644 --- a/bin/addons/base/ir/ir_translation.py +++ b/bin/addons/base/ir/ir_translation.py @@ -88,8 +88,8 @@ class ir_translation(osv.osv): 'where lang=%s ' \ 'and type=%s ' \ 'and name=%s ' \ - 'and res_id in ('+','.join(map(str, ids))+')', - (lang,tt,name)) + 'and res_id in %s', + (lang,tt,name,tuple(ids))) for res_id, value in cr.fetchall(): translations[res_id] = value return translations diff --git a/bin/addons/base/ir/ir_values.py b/bin/addons/base/ir/ir_values.py index 7299b45e29a..c33aba007fc 100644 --- a/bin/addons/base/ir/ir_values.py +++ b/bin/addons/base/ir/ir_values.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -161,54 +161,33 @@ class ir_values(osv.osv): else: res_id=False - where1 = ['key=%s','model=%s'] - where2 = [key,str(m)] - where_opt = [] + where = ['key=%s','model=%s'] + params = [key, str(m)] if key2: - where1.append('key2=%s') - where2.append(key2[:200]) + where.append('key2=%s') + params.append(key2[:200]) else: - dest = where1 - if not key2_req or meta: - dest=where_opt - dest.append('key2 is null') - + if key2_req and not meta: + where.append('key2 is null') if res_id_req and (models[-1][0]==m): if res_id: - where1.append('res_id=%d' % (res_id,)) + where.append('res_id=%s') + params.append(res_id) else: - where1.append('(res_id is NULL)') + where.append('(res_id is NULL)') elif res_id: if (models[-1][0]==m): - where1.append('(res_id=%d or (res_id is null))' % (res_id,)) - where_opt.append('res_id=%d' % (res_id,)) + where.append('(res_id=%s or (res_id is null))') + params.append(res_id) else: - where1.append('res_id=%d' % (res_id,)) - -# if not without_user: - where_opt.append('user_id=%d' % (uid,)) - - result = [] - ok = True - result_ids = {} - while ok: - if not where_opt: - cr.execute('select id,name,value,object,meta, key from ir_values where ' +\ - ' and '.join(where1)+' and user_id is null', where2) - else: - cr.execute('select id,name,value,object,meta, key from ir_values where ' +\ - ' and '.join(where1+where_opt), where2) - for rec in cr.fetchall(): - if rec[0] in result_ids: - continue - if rec[2]: - result.append(rec) - result_ids[rec[0]] = True - if len(where_opt): - where_opt.pop() - else: - ok = False + where.append('res_id=%s') + params.append(res_id) + where.append('(user_id=%s or (user_id IS NULL))') + params.append(uid) + clause = ' and '.join(where) + cr.execute('select id,name,value,object,meta, key from ir_values where ' + clause, params) + result = cr.fetchall() if result: break @@ -250,16 +229,16 @@ class ir_values(osv.osv): res2 = res[:] for r in res: if type(r[2])==type({}) and 'type' in r[2]: - if r[2]['type'] in ('ir.actions.report.xml','ir.actions.act_window','ir.actions.wizard'): - if r[2].has_key('groups_id'): - groups = r[2]['groups_id'] - if len(groups) > 0: - cr.execute("SELECT count(*) FROM res_groups_users_rel WHERE gid = ANY(%s) AND uid=%s",(groups, uid)) - gr_ids = cr.fetchall() - if not gr_ids[0][0] > 0: - res2.remove(r) - if r[1]=='Menuitem' and not res2: - raise osv.except_osv('Error !','You do not have the permission to perform this operation !!!') + groups = r[2].get('groups_id') + if groups: + cr.execute('SELECT COUNT(1) FROM res_groups_users_rel WHERE gid IN %s AND uid=%s', + (tuple(groups), uid) + ) + cnt = cr.fetchone()[0] + if cnt: + res2.remove(r) + if r[1] == 'Menuitem' and not res2: + raise osv.except_osv('Error !','You do not have the permission to perform this operation !!!') return res2 ir_values() diff --git a/bin/addons/base/ir/workflow/print_instance.py b/bin/addons/base/ir/workflow/print_instance.py index bac8eedb476..f34bb71b86a 100644 --- a/bin/addons/base/ir/workflow/print_instance.py +++ b/bin/addons/base/ir/workflow/print_instance.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -23,7 +23,7 @@ import time, os import netsvc import report,pooler,tools - +from operator import itemgetter def graph_get(cr, graph, wkf_id, nested=False, workitem={}): import pydot @@ -56,7 +56,8 @@ def graph_get(cr, graph, wkf_id, nested=False, workitem={}): graph.add_node(pydot.Node(n['id'], **args)) actfrom[n['id']] = (n['id'],{}) actto[n['id']] = (n['id'],{}) - cr.execute('select * from wkf_transition where act_from in ('+','.join(map(lambda x: str(x['id']),nodes))+')') + node_ids = tuple(map(itemgetter('id'), nodes)) + cr.execute('select * from wkf_transition where act_from in %s', (node_ids,)) transitions = cr.dictfetchall() for t in transitions: args = {} @@ -146,7 +147,7 @@ showpage''' else: inst_id = inst_id[0] graph = pydot.Dot(fontsize='16', label="""\\\n\\nWorkflow: %s\\n OSV: %s""" % (wkfinfo['name'],wkfinfo['osv']), - size='7.3, 10.1', center='1', ratio='auto', rotate='0', rankdir='TB', + size='7.3, 10.1', center='1', ratio='auto', rotate='0', rankdir='TB', ) graph_instance_get(cr, graph, inst_id, data.get('nested', False)) ps_string = graph.create(prog='dot', format='ps') diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py index e29e95bf68f..9d4ba1df952 100644 --- a/bin/addons/base/module/module.py +++ b/bin/addons/base/module/module.py @@ -44,7 +44,14 @@ class module_category(osv.osv): _description = "Module Category" def _module_nbr(self,cr,uid, ids, prop, unknow_none,context): - cr.execute('select category_id,count(*) from ir_module_module where category_id in ('+','.join(map(str, ids))+') or category_id in (select id from ir_module_category where parent_id in ('+','.join(map(str, ids))+')) group by category_id') + cr.execute('SELECT category_id, COUNT(*) \ + FROM ir_module_module \ + WHERE category_id IN %(ids)s \ + OR category_id IN (SELECT id \ + FROM ir_module_category \ + WHERE parent_id IN %(ids)s) \ + GROUP BY category_id', {'ids': tuple(ids)} + ) result = dict(cr.fetchall()) for id in ids: cr.execute('select id from ir_module_category where parent_id=%s', (id,)) diff --git a/bin/addons/base/res/partner/partner.py b/bin/addons/base/res/partner/partner.py index 3a12868fb91..bb186d378f4 100644 --- a/bin/addons/base/res/partner/partner.py +++ b/bin/addons/base/res/partner/partner.py @@ -55,7 +55,7 @@ class res_partner_category(osv.osv): def _check_recursion(self, cr, uid, ids): level = 100 while len(ids): - cr.execute('select distinct parent_id from res_partner_category where id in ('+','.join(map(str, ids))+')') + cr.execute('select distinct parent_id from res_partner_category where id in %s',(tuple(ids),)) ids = filter(None, map(lambda x:x[0], cr.fetchall())) if not level: return False @@ -226,7 +226,7 @@ class res_partner(osv.osv): return True def address_get(self, cr, uid, ids, adr_pref=['default']): - cr.execute('select type,id from res_partner_address where partner_id in ('+','.join(map(str,map(int, ids)))+')') + cr.execute('select type,id from res_partner_address where partner_id in %s',(tuple(ids),)) res = cr.fetchall() adr = dict(res) # get the id of the (first) default address if there is one, diff --git a/bin/addons/base/res/res_company.py b/bin/addons/base/res/res_company.py index 4b6ec1dc00a..67f3b54b08c 100644 --- a/bin/addons/base/res/res_company.py +++ b/bin/addons/base/res/res_company.py @@ -179,7 +179,7 @@ class res_company(osv.osv): def _check_recursion(self, cr, uid, ids): level = 100 while len(ids): - cr.execute('select distinct parent_id from res_company where id in ('+','.join(map(str, ids))+')') + cr.execute('select distinct parent_id from res_company where id in %s',(tuple(ids),)) ids = filter(None, map(lambda x:x[0], cr.fetchall())) if not level: return False diff --git a/bin/addons/base/res/res_currency.py b/bin/addons/base/res/res_currency.py index 0e4faa68143..86742dc14ae 100644 --- a/bin/addons/base/res/res_currency.py +++ b/bin/addons/base/res/res_currency.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## import time @@ -35,7 +35,7 @@ class res_currency(osv.osv): date=time.strftime('%Y-%m-%d') date= date or time.strftime('%Y-%m-%d') for id in ids: - cr.execute("SELECT currency_id, rate FROM res_currency_rate WHERE currency_id = %s AND name <= '%s' ORDER BY name desc LIMIT 1" % (id, date)) + cr.execute("SELECT currency_id, rate FROM res_currency_rate WHERE currency_id = %s AND name <= %s ORDER BY name desc LIMIT 1" ,(id, date)) if cr.rowcount: id, rate=cr.fetchall()[0] res[id]=rate diff --git a/bin/osv/expression.py b/bin/osv/expression.py index 4da2a70528a..16f34c7a2f8 100644 --- a/bin/osv/expression.py +++ b/bin/osv/expression.py @@ -29,7 +29,7 @@ class expression(object): parse a domain expression use a real polish notation leafs are still in a ('foo', '=', 'bar') format - For more info: http://christophe-simonis-at-tiny.blogspot.com/2008/08/new-new-domain-notation.html + For more info: http://christophe-simonis-at-tiny.blogspot.com/2008/08/new-new-domain-notation.html """ def _is_operator(self, element): @@ -50,16 +50,15 @@ class expression(object): if op in ['<','>','>=','<=']: cr.execute('SELECT "%s"' \ ' FROM "%s"' \ - ' WHERE "%s" %s %s' % (s, f, w, op, ids[0])) + ' WHERE "%s" %s %%s' % (s, f, w, op), (ids[0],)) res.extend([r[0] for r in cr.fetchall()]) else: for i in range(0, len(ids), cr.IN_MAX): subids = ids[i:i+cr.IN_MAX] cr.execute('SELECT "%s"' \ ' FROM "%s"' \ - ' WHERE "%s" in (%s)' % (s, f, w, ','.join(['%s']*len(subids))), - subids) - res.extend([r[0] for r in cr.fetchall()]) + ' WHERE "%s" in %%s' % (s, f, w),(tuple(subids),)) + res.extend([r[0] for r in cr.fetchall()]) else: cr.execute('SELECT distinct("%s")' \ ' FROM "%s" where "%s" is not null' % (s, f, s)), @@ -128,7 +127,7 @@ class expression(object): self.__joins.append('%s.%s=%s.%s' % (working_table._table, 'id', main_table._table, main_table._inherits[working_table._name])) self.__all_tables.add(working_table) main_table = working_table - + field = working_table._columns.get(fargs[0], False) if not field: if left == 'id' and operator == 'child_of': @@ -176,20 +175,20 @@ class expression(object): else: dom = _rec_get(ids2, working_table, parent=left) self.__exp = self.__exp[:i] + dom + self.__exp[i+1:] - - else: + + else: call_null = True - + if right: if isinstance(right, basestring): ids2 = [x[0] for x in field_obj.name_search(cr, uid, right, [], operator, context=context, limit=None)] if ids2: - operator = 'in' + operator = 'in' else: if not isinstance(right,list): ids2 = [right] else: - ids2 = right + ids2 = right if not ids2: if operator in ['like','ilike','in','=']: #no result found with given search criteria @@ -204,12 +203,12 @@ class expression(object): if operator in ['not like','not ilike','not in','<>','!=']: o2m_op = 'not in' self.__exp[i] = ('id', o2m_op, self.__execute_recursive_in(cr, field._fields_id, field_obj._table, 'id', ids2, operator, field._type)) - + if call_null: o2m_op = 'not in' if operator in ['not like','not ilike','not in','<>','!=']: - o2m_op = 'in' - self.__exp[i] = ('id', o2m_op, self.__execute_recursive_in(cr, field._fields_id, field_obj._table, 'id', [], operator, field._type) or [0]) + o2m_op = 'in' + self.__exp[i] = ('id', o2m_op, self.__execute_recursive_in(cr, field._fields_id, field_obj._table, 'id', [], operator, field._type) or [0]) elif field._type == 'many2many': #FIXME @@ -244,20 +243,20 @@ class expression(object): #no result found with given search criteria call_null_m2m = False self.__exp[i] = ('id','=',0) - else: + else: call_null_m2m = True operator = 'in' # operator changed because ids are directly related to main object else: call_null_m2m = False - m2m_op = 'in' + m2m_op = 'in' if operator in ['not like','not ilike','not in','<>','!=']: m2m_op = 'not in' - + self.__exp[i] = ('id', m2m_op, self.__execute_recursive_in(cr, field._id1, field._rel, field._id2, res_ids, operator, field._type) or [0]) if call_null_m2m: m2m_op = 'not in' if operator in ['not like','not ilike','not in','<>','!=']: - m2m_op = 'in' + m2m_op = 'in' self.__exp[i] = ('id', m2m_op, self.__execute_recursive_in(cr, field._id1, field._rel, field._id2, [], operator, field._type) or [0]) elif field._type == 'many2one': @@ -289,16 +288,16 @@ class expression(object): # other field type # add the time part to datetime field when it's not there: if field._type == 'datetime' and self.__exp[i][2] and len(self.__exp[i][2]) == 10: - + self.__exp[i] = list(self.__exp[i]) - + if operator in ('>', '>='): self.__exp[i][2] += ' 00:00:00' elif operator in ('<', '<='): self.__exp[i][2] += ' 23:59:59' - + self.__exp[i] = tuple(self.__exp[i]) - + if field.translate: if operator in ('like', 'ilike', 'not like', 'not ilike'): right = '%%%s%%' % right @@ -341,7 +340,7 @@ class expression(object): if leaf == self.__DUMMY_LEAF: return ('(1=1)', []) left, operator, right = leaf - + if operator == 'inselect': query = '(%s.%s in (%s))' % (table._table, left, right[0]) params = right[1] @@ -355,7 +354,7 @@ class expression(object): len_after = len(params) check_nulls = len_after != len_before query = '(1=0)' - + if len_after: if left == 'id': instr = ','.join(['%s'] * len_after) @@ -372,7 +371,7 @@ class expression(object): query = '(%s OR %s.%s IS NULL)' % (query, table._table, left) else: params = [] - + if right == False and (leaf[0] in table._columns) and table._columns[leaf[0]]._type=="boolean" and (operator == '='): query = '(%s.%s IS NULL or %s.%s = false )' % (table._table, left,table._table, left) elif (((right == False) and (type(right)==bool)) or (right is None)) and (operator == '='): diff --git a/bin/osv/fields.py b/bin/osv/fields.py index ffb0a87a7db..623ab948ae1 100644 --- a/bin/osv/fields.py +++ b/bin/osv/fields.py @@ -469,7 +469,7 @@ class one2many(_column): elif act[0] == 6: obj.write(cr, user, act[2], {self._fields_id:id}, context=context or {}) ids2 = act[2] or [0] - cr.execute('select id from '+_table+' where '+self._fields_id+'=%s and id <> ALL (%s)', (id,ids2)) + cr.execute('select id from '+_table+' where '+self._fields_id+'=%s and id <> ALL %s', (id,tuple(ids2))) ids3 = map(lambda x:x[0], cr.fetchall()) obj.write(cr, user, ids3, {self._fields_id:False}, context=context or {}) return result @@ -521,13 +521,24 @@ class many2many(_column): if d1: d1 = ' and ' + ' and '.join(d1) else: d1 = '' - - cr.execute('SELECT '+self._rel+'.'+self._id2+','+self._rel+'.'+self._id1+' \ - FROM '+self._rel+' , '+(','.join(tables))+' \ - WHERE '+self._rel+'.'+self._id1+' = ANY (%s) \ - AND '+self._rel+'.'+self._id2+' = '+obj._table+'.id '+d1 - +limit_str+' order by '+obj._table+'.'+obj._order+' offset %s', - [ids,]+d2+[offset]) + query = 'SELECT %(rel)s.%(id2)s, %(rel)s.%(id1)s \ + FROM %(rel)s, %(tbl)s \ + WHERE %(rel)s.%(id1)s in %%s \ + AND %(rel)s.%(id2)s = %(tbl)s.id \ + %(d1)s \ + %(limit)s \ + ORDER BY %(tbl)s.%(order)s \ + OFFSET %(offset)d' \ + % {'rel': self._rel, + 'tbl': obj._table, + 'id1': self._id1, + 'id2': self._id2, + 'd1': d1, + 'limit': limit_str, + 'order': obj._order, + 'offset': offset, + } + cr.execute(query, [tuple(ids)] + d2) for r in cr.fetchall(): res[r[1]].append(r[0]) return res diff --git a/bin/osv/orm.py b/bin/osv/orm.py index 7aa1a4cbdb6..e4b3d92f499 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -987,7 +987,7 @@ class orm_template(object): return (-1, res, 'Line ' + str(counter) +' : ' + msg, '' ) #Raising Uncaught exception return (-1, res, 'Line ' + str(counter) +' : ' + str(e), '' ) - + for lang in translate: context2 = context.copy() context2['lang'] = lang @@ -1538,8 +1538,12 @@ class orm_template(object): view_id = view_ref_res[0] if view_id: - where = (model and (" and model='%s'" % (self._name,))) or '' - cr.execute('SELECT arch,name,field_parent,id,type,inherit_id FROM ir_ui_view WHERE id=%s'+where, (view_id,)) + query = "SELECT arch,name,field_parent,id,type,inherit_id FROM ir_ui_view WHERE id=%s" + params = (view_id,) + if model: + query += " AND model=%s" + params += (self._name,) + cr.execute(query, params) else: cr.execute('''SELECT arch,name,field_parent,id,type,inherit_id @@ -1981,7 +1985,7 @@ class orm_memory(orm_template): if id in self.datas: del self.datas[id] if len(ids): - cr.execute('delete from wkf_instance where res_type=%s and res_id = ANY (%s)', (self._name,ids)) + cr.execute('delete from wkf_instance where res_type=%s and res_id in %s', (self._name, tuple(ids))) return True def perm_read(self, cr, user, ids, context=None, details=True): @@ -2194,12 +2198,12 @@ class orm(orm_template): columns += ('id', 'write_uid', 'write_date', 'create_uid', 'create_date') # openerp access columns cr.execute("SELECT a.attname, a.attnotnull" " FROM pg_class c, pg_attribute a" - " WHERE c.relname=%%s" + " WHERE c.relname=%s" " AND c.oid=a.attrelid" - " AND a.attisdropped=%%s" + " AND a.attisdropped=%s" " AND pg_catalog.format_type(a.atttypid, a.atttypmod) NOT IN ('cid', 'tid', 'oid', 'xid')" - " AND a.attname NOT IN (%s)" % ",".join(['%s']*len(columns)), - [self._table, False] + columns) + " AND a.attname NOT IN %s" ,(self._table, False, tuple(columns))), + for column in cr.dictfetchall(): if log: logger.notifyChannel("orm", netsvc.LOG_DEBUG, "column %s is in the table %s but not in the corresponding object %s" % (column['attname'], self._table, self._name)) @@ -2213,9 +2217,9 @@ class orm(orm_template): todo_end = [] self._field_create(cr, context=context) if getattr(self, '_auto', True): - cr.execute("SELECT relname FROM pg_class WHERE relkind in ('r','v') AND relname='%s'" % self._table) + cr.execute("SELECT relname FROM pg_class WHERE relkind in ('r','v') AND relname=%s" ,( self._table,)) if not cr.rowcount: - cr.execute("CREATE TABLE \"%s\" (id SERIAL NOT NULL, PRIMARY KEY(id)) WITHOUT OIDS" % self._table) + cr.execute('CREATE TABLE "%s" (id SERIAL NOT NULL, PRIMARY KEY(id)) WITHOUT OIDS' % (self._table,)) cr.execute("COMMENT ON TABLE \"%s\" IS '%s'" % (self._table, self._description.replace("'","''"))) create = True cr.commit() @@ -2357,7 +2361,7 @@ class orm(orm_template): try: cr.commit() cr.execute('ALTER TABLE "%s" ALTER COLUMN "%s" SET NOT NULL' % (self._table, k)) - except Exception, e: + except Exception: logger.notifyChannel('orm', netsvc.LOG_WARNING, 'WARNING: unable to set column %s of table %s not null !\nTry to re-run: openerp-server.py --update=module\nIf it doesn\'t work, update records and execute manually:\nALTER TABLE %s ALTER COLUMN %s SET NOT NULL' % (k, self._table, self._table, k)) cr.commit() elif len(res)==1: @@ -2428,7 +2432,7 @@ class orm(orm_template): try: cr.execute('ALTER TABLE "%s" ALTER COLUMN "%s" SET NOT NULL' % (self._table, k)) cr.commit() - except Exception, e: + except Exception: logger.notifyChannel('orm', netsvc.LOG_WARNING, 'unable to set a NOT NULL constraint on column %s of the %s table !\nIf you want to have it, you should update the records and execute manually:\nALTER TABLE %s ALTER COLUMN %s SET NOT NULL' % (k, self._table, self._table, k)) cr.commit() elif not f.required and f_pg_notnull == 1: @@ -2482,11 +2486,12 @@ class orm(orm_template): conname = '%s_%s' % (self._table, key) cr.execute("SELECT conname FROM pg_constraint where conname=%s", (conname,)) if not cr.dictfetchall(): + query = 'ALTER TABLE "%s" ADD CONSTRAINT "%s" %s' % (self._table, conname, con,) try: - cr.execute('alter table "%s" add constraint "%s_%s" %s' % (self._table, self._table, key, con,)) + cr.execute(query) cr.commit() except: - logger.notifyChannel('orm', netsvc.LOG_WARNING, 'unable to add \'%s\' constraint on table %s !\n If you want to have it, you should update the records and execute manually:\nALTER table %s ADD CONSTRAINT %s_%s %s' % (con, self._table, self._table, self._table, key, con,)) + logger.notifyChannel('orm', netsvc.LOG_WARNING, 'unable to add \'%s\' constraint on table %s !\n If you want to have it, you should update the records and execute manually:\n%s' % (con, self._table, query)) cr.rollback() if create: @@ -2717,7 +2722,7 @@ class orm(orm_template): return getattr(proxy, name)(cr, uid, lst, *args, **kwargs) return _proxy - + def fields_get(self, cr, user, fields=None, context=None): """ @@ -2823,18 +2828,19 @@ class orm(orm_template): return '"%s"' % (f,) fields_pre2 = map(convert_field, fields_pre) order_by = self._parent_order or self._order + select_fields = ','.join(fields_pre2 + ['id']) + query = 'SELECT %s FROM "%s" WHERE id in %%s' % (select_fields, self._table) + if d1: + query += " AND " + d1 + query += " ORDER BY " + order_by for sub_ids in cr.split_for_in_conditions(ids): if d1: - cr.execute('SELECT %s FROM %s WHERE %s.id IN %%s AND %s ORDER BY %s' % \ - (','.join(fields_pre2 + [self._table + '.id']), ','.join(tables), self._table, ' and '.join(d1), - order_by),[sub_ids,]+d2) + cr.execute(query, [tuple(sub_ids)] + d2) if cr.rowcount != len(sub_ids): raise except_orm(_('AccessError'), _('You try to bypass an access rule while reading (Document type: %s).') % self._description) else: - cr.execute('SELECT %s FROM \"%s\" WHERE id IN %%s ORDER BY %s' % - (','.join(fields_pre2 + ['id']), self._table, - order_by), (sub_ids,)) + cr.execute(query, (tuple(sub_ids),)) res.extend(cr.dictfetchall()) else: res = map(lambda x: {'id': x}, ids) @@ -2921,7 +2927,7 @@ class orm(orm_template): for group in groups: module = group.split(".")[0] grp = group.split(".")[1] - cr.execute("select count(*) from res_groups_users_rel where gid in (select res_id from ir_model_data where name='%s' and module='%s' and model='%s') and uid=%s" % \ + cr.execute("select count(*) from res_groups_users_rel where gid in (select res_id from ir_model_data where name=%s and module=%s and model=%s) and uid=%s" \ (grp, module, 'res.groups', user)) readonly = cr.fetchall() if readonly[0][0] >= 1: @@ -2967,13 +2973,14 @@ class orm(orm_template): if not ids: return [] fields = '' + uniq = isinstance(ids, (int, long)) + if uniq: + ids = [ids] + fields = 'id' if self._log_access: - fields = ', u.create_uid, u.create_date, u.write_uid, u.write_date' - if isinstance(ids, (int, long)): - ids_str = str(ids) - else: - ids_str = string.join(map(lambda x: str(x), ids), ',') - cr.execute('select u.id'+fields+' from "'+self._table+'" u where u.id in ('+ids_str+')') + fields += ', create_uid, create_date, write_uid, write_date' + query = 'SELECT %s FROM "%s" WHERE id in %%s' % (fields, self._table) + cr.execute(query, (tuple(ids),)) res = cr.dictfetchall() for r in res: for key in r: @@ -2981,8 +2988,8 @@ class orm(orm_template): if key in ('write_uid', 'create_uid', 'uid') and details: if r[key]: r[key] = self.pool.get('res.users').name_get(cr, user, [r[key]])[0] - if isinstance(ids, (int, long)): - return res[ids] + if uniq: + return res[ids[0]] return res def _check_concurrency(self, cr, ids, context): @@ -3058,11 +3065,6 @@ class orm(orm_template): for oid in ids: wf_service.trg_delete(uid, self._name, oid, cr) - #cr.execute('select * from '+self._table+' where id in ('+str_d+')', ids) - #res = cr.dictfetchall() - #for key in self._inherits: - # ids2 = [x[self._inherits[key]] for x in res] - # self.pool.get(key).unlink(cr, uid, ids2) self.check_access_rule(cr, uid, ids, 'unlink', context=context) for sub_ids in cr.split_for_in_conditions(ids): @@ -3071,7 +3073,7 @@ class orm(orm_template): for order, object, store_ids, fields in result_store: if object != self._name: obj = self.pool.get(object) - cr.execute('select id from '+obj._table+' where id in ('+','.join(map(str, store_ids))+')') + cr.execute('select id from '+obj._table+' where id in %s',(tuple(store_ids),)) rids = map(lambda x: x[0], cr.fetchall()) if rids: obj._store_set_values(cr, uid, rids, fields, context) @@ -3121,7 +3123,7 @@ class orm(orm_template): for group in groups: module = group.split(".")[0] grp = group.split(".")[1] - cr.execute("select count(*) from res_groups_users_rel where gid in (select res_id from ir_model_data where name='%s' and module='%s' and model='%s') and uid=%s" % \ + cr.execute("select count(*) from res_groups_users_rel where gid in (select res_id from ir_model_data where name=%s and module=%s and model=%s) and uid=%s" \ (grp, module, 'res.groups', user)) readonly = cr.fetchall() if readonly[0][0] >= 1: @@ -3942,13 +3944,12 @@ class orm(orm_template): if not parent: parent = self._parent_name ids_parent = ids[:] - while len(ids_parent): + query = 'SELECT distinct "%s" FROM "%s" WHERE id IN %%s' % (parent, self._table) + while ids_parent: ids_parent2 = [] for i in range(0, len(ids), cr.IN_MAX): sub_ids_parent = ids_parent[i:i+cr.IN_MAX] - cr.execute('SELECT distinct "'+parent+'"'+ - ' FROM "'+self._table+'" ' \ - 'WHERE id = ANY(%s)',(sub_ids_parent,)) + cr.execute(query, (tuple(sub_ids_parent),)) ids_parent2.extend(filter(None, map(lambda x: x[0], cr.fetchall()))) ids_parent = ids_parent2 for i in ids_parent: diff --git a/bin/tools/misc.py b/bin/tools/misc.py index 89f3f721f9d..9b246e5bb5f 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -982,14 +982,15 @@ def get_user_companies(cr, user): def _get_company_children(cr, ids): if not ids: return [] - cr.execute('SELECT id FROM res_company WHERE parent_id = ANY (%s)', (ids,)) - res=[x[0] for x in cr.fetchall()] + cr.execute('SELECT id FROM res_company WHERE parent_id IN %s', (tuple(ids),)) + res = [x[0] for x in cr.fetchall()] res.extend(_get_company_children(cr, res)) return res - cr.execute('SELECT comp.id FROM res_company AS comp, res_users AS u WHERE u.id = %s AND comp.id = u.company_id', (user,)) - compids=[cr.fetchone()[0]] - compids.extend(_get_company_children(cr, compids)) - return compids + cr.execute('SELECT company_id FROM res_users WHERE id=%s', (user,)) + user_comp = cr.fetchone()[0] + if not user_comp: + return [] + return [user_comp] + _get_company_children(cr, [user_comp]) def mod10r(number): """ diff --git a/bin/tools/translate.py b/bin/tools/translate.py index 9277bf6924b..8874b8b166b 100644 --- a/bin/tools/translate.py +++ b/bin/tools/translate.py @@ -446,9 +446,10 @@ def trans_generate(lang, modules, dbname=None): query_param = None if 'all_installed' in modules: query += ' WHERE module IN ( SELECT name FROM ir_module_module WHERE state = \'installed\') ' - elif not 'all' in modules: - query += ' WHERE module IN (%s)' % ','.join(['%s']*len(modules)) - query_param = modules + query_param = None + if 'all' not in modules: + query += ' WHERE module IN %s' + query_param = (tuple(modules),) query += ' ORDER BY module, model, name' cr.execute(query, query_param) From e0d94956c1da3d5a64eb91b3a947bd5dde01c424 Mon Sep 17 00:00:00 2001 From: "Anup (OpenERP)" Date: Fri, 18 Jun 2010 15:46:41 +0530 Subject: [PATCH 13/34] [IMP] SQL injection Refactored bzr revid: ach@tinyerp.com-20100618101641-84cdea9n1pzx36v2 --- bin/addons/__init__.py | 14 +++++------ bin/addons/base/ir/ir_actions.py | 4 ++-- bin/addons/base/ir/ir_attachment.py | 2 +- bin/addons/base/ir/ir_model.py | 4 ++-- bin/addons/base/ir/ir_translation.py | 4 ++-- bin/addons/base/ir/ir_values.py | 4 +--- bin/addons/base/ir/workflow/print_instance.py | 2 +- bin/addons/base/res/partner/partner.py | 4 ++-- bin/addons/base/res/res_company.py | 2 +- bin/osv/expression.py | 2 +- bin/osv/orm.py | 24 +++++++++---------- bin/tools/translate.py | 2 +- bin/workflow/instance.py | 6 ++--- bin/workflow/workitem.py | 6 ++--- doc/migrate/3.3.0-3.4.0/post.py | 14 +++++------ doc/migrate/3.4.0-4.0.0/post.py | 14 +++++------ doc/migrate/3.4.0-4.0.0/pre.py | 16 ++++++------- 17 files changed, 61 insertions(+), 63 deletions(-) diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index 1f0e8355f21..f4bd7c1e1e3 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -88,7 +88,7 @@ class Graph(dict): ## Then we get the values from the database cr.execute('SELECT name, id, state, demo AS dbdemo, latest_version AS installed_version' ' FROM ir_module_module' - ' WHERE name in %s',(tuple(additional_data),) + ' WHERE name IN %s',(tuple(additional_data),) ) ## and we update the default values with values from the database @@ -728,10 +728,10 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, **kwargs): load_demo_xml(cr, m, idref, mode) load_demo(cr, m, idref, mode) cr.execute('update ir_module_module set demo=%s where id=%s', (True, mid)) - + # launch tests only in demo mode, as most tests will depend # on demo data. Other tests can be added into the regular - # 'data' section, but should probably not alter the data, + # 'data' section, but should probably not alter the data, # as there is no rollback. load_test(cr, m, idref, mode) @@ -824,7 +824,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False): loop_guardrail += 1 if loop_guardrail > 100: raise ProgrammingError() - cr.execute("SELECT name from ir_module_module WHERE state in %s" ,(tuple(STATES_TO_LOAD),)) + cr.execute("SELECT name from ir_module_module WHERE state IN %s" ,(tuple(STATES_TO_LOAD),)) module_list = [name for (name,) in cr.fetchall() if name not in graph] if not module_list: @@ -877,11 +877,11 @@ def load_modules(db, force_demo=False, status=None, update_module=False): cr.execute('''delete from ir_ui_menu where - (id not in (select parent_id from ir_ui_menu where parent_id is not null)) + (id not IN (select parent_id from ir_ui_menu where parent_id is not null)) and - (id not in (select res_id from ir_values where model='ir.ui.menu')) + (id not IN (select res_id from ir_values where model='ir.ui.menu')) and - (id not in (select res_id from ir_model_data where model='ir.ui.menu'))''') + (id not IN (select res_id from ir_model_data where model='ir.ui.menu'))''') cr.commit() if not cr.rowcount: break diff --git a/bin/addons/base/ir/ir_actions.py b/bin/addons/base/ir/ir_actions.py index c3e9945df96..4523899116f 100644 --- a/bin/addons/base/ir/ir_actions.py +++ b/bin/addons/base/ir/ir_actions.py @@ -160,7 +160,7 @@ class act_window(osv.osv): ] def get_filters(self, cr, uid, model): - cr.execute('SELECT id FROM ir_act_window a WHERE a.id not in (SELECT act_id FROM ir_act_window_user_rel) AND a.res_model=\''+model+'\' and a.filter=\'1\';') + cr.execute('SELECT id FROM ir_act_window a WHERE a.id not IN (SELECT act_id FROM ir_act_window_user_rel) AND a.res_model=\''+model+'\' and a.filter=\'1\';') all_ids = cr.fetchall() filter_ids = map(lambda x:x[0],all_ids) act_ids = self.search(cr,uid,[('res_model','=',model),('filter','=',1),('default_user_ids','in',(','.join(map(str,[uid,])),))]) @@ -380,7 +380,7 @@ class actions_server(osv.osv): def _select_signals(self, cr, uid, context={}): cr.execute("SELECT distinct w.osv, t.signal FROM wkf w, wkf_activity a, wkf_transition t \ WHERE w.id = a.wkf_id AND t.act_from = a.id OR t.act_to = a.id AND t.signal!='' \ - AND t.signal not in (null, NULL)") + AND t.signal not IN (null, NULL)") result = cr.fetchall() or [] res = [] for rs in result: diff --git a/bin/addons/base/ir/ir_attachment.py b/bin/addons/base/ir/ir_attachment.py index cac1beea029..981c6091ceb 100644 --- a/bin/addons/base/ir/ir_attachment.py +++ b/bin/addons/base/ir/ir_attachment.py @@ -30,7 +30,7 @@ class ir_attachment(osv.osv): ima = self.pool.get('ir.model.access') if isinstance(ids, (int, long)): ids = [ids] - cr.execute('select distinct res_model from ir_attachment where id in %s', (tuple(ids),)) + cr.execute('select distinct res_model from ir_attachment where id IN %s', (tuple(ids),)) for obj in cr.fetchall(): if obj[0]: ima.check(cr, uid, obj[0], mode, context=context) diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py index f13d8e188fe..9accb03ea7c 100644 --- a/bin/addons/base/ir/ir_model.py +++ b/bin/addons/base/ir/ir_model.py @@ -605,13 +605,13 @@ class ir_model_data(osv.osv): return True modules = list(modules) module_in = ",".join(["%s"] * len(modules)) - cr.execute('select id,name,model,res_id,module from ir_model_data where module in (' + module_in + ') and noupdate=%s', modules + [False]) + cr.execute('select id,name,model,res_id,module from ir_model_data where module IN (' + module_in + ') and noupdate=%s', modules + [False]) wkf_todo = [] for (id, name, model, res_id,module) in cr.fetchall(): if (module,name) not in self.loads: self.unlink_mark[(model,res_id)] = id if model=='workflow.activity': - cr.execute('select res_type,res_id from wkf_instance where id in (select inst_id from wkf_workitem where act_id=%s)', (res_id,)) + cr.execute('select res_type,res_id from wkf_instance where id IN (select inst_id from wkf_workitem where act_id=%s)', (res_id,)) wkf_todo.extend(cr.fetchall()) cr.execute("update wkf_transition set condition='True', role_id=NULL, signal=NULL,act_to=act_from,act_from=%s where act_to=%s", (res_id,res_id)) cr.execute("delete from wkf_transition where act_to=%s", (res_id,)) diff --git a/bin/addons/base/ir/ir_translation.py b/bin/addons/base/ir/ir_translation.py index 1a363285dde..7c476606632 100644 --- a/bin/addons/base/ir/ir_translation.py +++ b/bin/addons/base/ir/ir_translation.py @@ -88,7 +88,7 @@ class ir_translation(osv.osv): 'where lang=%s ' \ 'and type=%s ' \ 'and name=%s ' \ - 'and res_id in %s', + 'and res_id IN %s', (lang,tt,name,tuple(ids))) for res_id, value in cr.fetchall(): translations[res_id] = value @@ -107,7 +107,7 @@ class ir_translation(osv.osv): 'where lang=%s ' \ 'and type=%s ' \ 'and name=%s ' \ - 'and res_id in ('+','.join(map(str, ids))+')', + 'and res_id IN ('+','.join(map(str, ids))+')', (lang,tt,name)) cr.commit() for id in ids: diff --git a/bin/addons/base/ir/ir_values.py b/bin/addons/base/ir/ir_values.py index c33aba007fc..13bfee9d192 100644 --- a/bin/addons/base/ir/ir_values.py +++ b/bin/addons/base/ir/ir_values.py @@ -231,9 +231,7 @@ class ir_values(osv.osv): if type(r[2])==type({}) and 'type' in r[2]: groups = r[2].get('groups_id') if groups: - cr.execute('SELECT COUNT(1) FROM res_groups_users_rel WHERE gid IN %s AND uid=%s', - (tuple(groups), uid) - ) + cr.execute('SELECT COUNT(1) FROM res_groups_users_rel WHERE gid IN %s AND uid=%s',(tuple(groups), uid)) cnt = cr.fetchone()[0] if cnt: res2.remove(r) diff --git a/bin/addons/base/ir/workflow/print_instance.py b/bin/addons/base/ir/workflow/print_instance.py index f34bb71b86a..16a560b2457 100644 --- a/bin/addons/base/ir/workflow/print_instance.py +++ b/bin/addons/base/ir/workflow/print_instance.py @@ -57,7 +57,7 @@ def graph_get(cr, graph, wkf_id, nested=False, workitem={}): actfrom[n['id']] = (n['id'],{}) actto[n['id']] = (n['id'],{}) node_ids = tuple(map(itemgetter('id'), nodes)) - cr.execute('select * from wkf_transition where act_from in %s', (node_ids,)) + cr.execute('select * from wkf_transition where act_from IN %s', (node_ids,)) transitions = cr.dictfetchall() for t in transitions: args = {} diff --git a/bin/addons/base/res/partner/partner.py b/bin/addons/base/res/partner/partner.py index bb186d378f4..98f13d9ee6c 100644 --- a/bin/addons/base/res/partner/partner.py +++ b/bin/addons/base/res/partner/partner.py @@ -55,7 +55,7 @@ class res_partner_category(osv.osv): def _check_recursion(self, cr, uid, ids): level = 100 while len(ids): - cr.execute('select distinct parent_id from res_partner_category where id in %s',(tuple(ids),)) + cr.execute('select distinct parent_id from res_partner_category where id IN %s',(tuple(ids),)) ids = filter(None, map(lambda x:x[0], cr.fetchall())) if not level: return False @@ -226,7 +226,7 @@ class res_partner(osv.osv): return True def address_get(self, cr, uid, ids, adr_pref=['default']): - cr.execute('select type,id from res_partner_address where partner_id in %s',(tuple(ids),)) + cr.execute('select type,id from res_partner_address where partner_id IN %s',(tuple(ids),)) res = cr.fetchall() adr = dict(res) # get the id of the (first) default address if there is one, diff --git a/bin/addons/base/res/res_company.py b/bin/addons/base/res/res_company.py index 67f3b54b08c..e2e4d18637f 100644 --- a/bin/addons/base/res/res_company.py +++ b/bin/addons/base/res/res_company.py @@ -179,7 +179,7 @@ class res_company(osv.osv): def _check_recursion(self, cr, uid, ids): level = 100 while len(ids): - cr.execute('select distinct parent_id from res_company where id in %s',(tuple(ids),)) + cr.execute('select distinct parent_id from res_company where id IN %s',(tuple(ids),)) ids = filter(None, map(lambda x:x[0], cr.fetchall())) if not level: return False diff --git a/bin/osv/expression.py b/bin/osv/expression.py index 16f34c7a2f8..5fbdd84abcd 100644 --- a/bin/osv/expression.py +++ b/bin/osv/expression.py @@ -57,7 +57,7 @@ class expression(object): subids = ids[i:i+cr.IN_MAX] cr.execute('SELECT "%s"' \ ' FROM "%s"' \ - ' WHERE "%s" in %%s' % (s, f, w),(tuple(subids),)) + ' WHERE "%s" IN %%s' % (s, f, w),(tuple(subids),)) res.extend([r[0] for r in cr.fetchall()]) else: cr.execute('SELECT distinct("%s")' \ diff --git a/bin/osv/orm.py b/bin/osv/orm.py index a61da33b4c7..61c0abee308 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -1985,7 +1985,7 @@ class orm_memory(orm_template): if id in self.datas: del self.datas[id] if len(ids): - cr.execute('delete from wkf_instance where res_type=%s and res_id in %s', (self._name, tuple(ids))) + cr.execute('delete from wkf_instance where res_type=%s and res_id IN %s', (self._name, tuple(ids))) return True def perm_read(self, cr, user, ids, context=None, details=True): @@ -2216,7 +2216,7 @@ class orm(orm_template): todo_end = [] self._field_create(cr, context=context) if getattr(self, '_auto', True): - cr.execute("SELECT relname FROM pg_class WHERE relkind in ('r','v') AND relname=%s" ,( self._table,)) + cr.execute("SELECT relname FROM pg_class WHERE relkind IN ('r','v') AND relname=%s" ,( self._table,)) if not cr.rowcount: cr.execute('CREATE TABLE "%s" (id SERIAL NOT NULL, PRIMARY KEY(id)) WITHOUT OIDS' % (self._table,)) cr.execute("COMMENT ON TABLE \"%s\" IS '%s'" % (self._table, self._description.replace("'","''"))) @@ -2284,7 +2284,7 @@ class orm(orm_template): if not res: cr.execute('ALTER TABLE "%s" ADD FOREIGN KEY (%s) REFERENCES "%s" ON DELETE SET NULL' % (self._obj, f._fields_id, f._table)) elif isinstance(f, fields.many2many): - cr.execute("SELECT relname FROM pg_class WHERE relkind in ('r','v') AND relname=%s", (f._rel,)) + cr.execute("SELECT relname FROM pg_class WHERE relkind IN ('r','v') AND relname=%s", (f._rel,)) if not cr.dictfetchall(): if not self.pool.get(f._obj): raise except_orm('Programming Error', ('There is no reference available for %s') % (f._obj,)) @@ -2476,7 +2476,7 @@ class orm(orm_template): todo_end.append((order, self._update_store, (f, k))) else: - cr.execute("SELECT relname FROM pg_class WHERE relkind in ('r','v') AND relname=%s", (self._table,)) + cr.execute("SELECT relname FROM pg_class WHERE relkind IN ('r','v') AND relname=%s", (self._table,)) create = not bool(cr.fetchone()) cr.commit() # start a new transaction @@ -2830,7 +2830,7 @@ class orm(orm_template): fields_pre2 = map(convert_field, fields_pre) order_by = self._parent_order or self._order select_fields = ','.join(fields_pre2 + ['id']) - query = 'SELECT %s FROM "%s" WHERE id in %%s' % (select_fields, self._table) + query = 'SELECT %s FROM "%s" WHERE id IN %%s' % (select_fields, self._table) if d1: query += " AND " + d1 query += " ORDER BY " + order_by @@ -2980,7 +2980,7 @@ class orm(orm_template): fields = 'id' if self._log_access: fields += ', create_uid, create_date, write_uid, write_date' - query = 'SELECT %s FROM "%s" WHERE id in %%s' % (fields, self._table) + query = 'SELECT %s FROM "%s" WHERE id IN %%s' % (fields, self._table) cr.execute(query, (tuple(ids),)) res = cr.dictfetchall() for r in res: @@ -3074,7 +3074,7 @@ class orm(orm_template): for order, object, store_ids, fields in result_store: if object != self._name: obj = self.pool.get(object) - cr.execute('select id from '+obj._table+' where id in %s',(tuple(store_ids),)) + cr.execute('select id from '+obj._table+' where id IN %s',(tuple(store_ids),)) rids = map(lambda x: x[0], cr.fetchall()) if rids: obj._store_set_values(cr, uid, rids, fields, context) @@ -3102,7 +3102,7 @@ class orm(orm_template): vals format for relational field type. - + many2many field : + + many2many field : For write operation on a many2many fields a list of tuple is expected. The folowing tuples are accepted: @@ -3140,7 +3140,7 @@ class orm(orm_template): for group in groups: module = group.split(".")[0] grp = group.split(".")[1] - cr.execute("select count(*) from res_groups_users_rel where gid in (select res_id from ir_model_data where name=%s and module=%s and model=%s) and uid=%s" \ + cr.execute("select count(*) from res_groups_users_rel where gid IN (select res_id from ir_model_data where name=%s and module=%s and model=%s) and uid=%s" \ (grp, module, 'res.groups', user)) readonly = cr.fetchall() if readonly[0][0] >= 1: @@ -3262,7 +3262,7 @@ class orm(orm_template): nids = [] for sub_ids in cr.split_for_in_conditions(ids): cr.execute('select distinct "'+col+'" from "'+self._table+'" ' \ - 'where id in %s', (sub_ids,)) + 'where id IN %s', (sub_ids,)) nids.extend([x[0] for x in cr.fetchall()]) v = {} @@ -3458,7 +3458,7 @@ class orm(orm_template): for group in groups: module = group.split(".")[0] grp = group.split(".")[1] - cr.execute("select count(*) from res_groups_users_rel where gid in (select res_id from ir_model_data where name='%s' and module='%s' and model='%s') and uid=%s" % \ + cr.execute("select count(*) from res_groups_users_rel where gid IN (select res_id from ir_model_data where name='%s' and module='%s' and model='%s') and uid=%s" % \ (grp, module, 'res.groups', user)) readonly = cr.fetchall() if readonly[0][0] >= 1: @@ -3603,7 +3603,7 @@ class orm(orm_template): field_flag = False field_dict = {} if self._log_access: - cr.execute('select id,write_date from '+self._table+' where id in ('+','.join(map(str, ids))+')') + cr.execute('select id,write_date from '+self._table+' where id IN ('+','.join(map(str, ids))+')') res = cr.fetchall() for r in res: if r[1]: diff --git a/bin/tools/translate.py b/bin/tools/translate.py index 8874b8b166b..d85ee20422f 100644 --- a/bin/tools/translate.py +++ b/bin/tools/translate.py @@ -148,7 +148,7 @@ class GettextAlias(object): except: return source - cr.execute('select value from ir_translation where lang=%s and type in (%s,%s) and src=%s', (lang, 'code','sql_constraint', source)) + cr.execute('select value from ir_translation where lang=%s and type IN (%s,%s) and src=%s', (lang, 'code','sql_constraint', source)) res_trans = cr.fetchone() return res_trans and res_trans[0] or source _ = GettextAlias() diff --git a/bin/workflow/instance.py b/bin/workflow/instance.py index e1407fd1455..e530d56dcd2 100644 --- a/bin/workflow/instance.py +++ b/bin/workflow/instance.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -71,7 +71,7 @@ def _update_end(cr, inst_id, ident): act_names = cr.fetchall() cr.execute("update wkf_instance set state='complete' where id=%s", (inst_id,)) cr.execute("update wkf_workitem set state='complete' where subflow_id=%s", (inst_id,)) - cr.execute("select i.id,w.osv,i.res_id from wkf_instance i left join wkf w on (i.wkf_id=w.id) where i.id in (select inst_id from wkf_workitem where subflow_id=%s)", (inst_id,)) + cr.execute("select i.id,w.osv,i.res_id from wkf_instance i left join wkf w on (i.wkf_id=w.id) where i.id IN (select inst_id from wkf_workitem where subflow_id=%s)", (inst_id,)) for i in cr.fetchall(): for act_name in act_names: validate(cr, i[0], (ident[0],i[1],i[2]), 'subflow.'+act_name[0]) diff --git a/bin/workflow/workitem.py b/bin/workflow/workitem.py index 4576f8c5278..bd98e8f67a1 100644 --- a/bin/workflow/workitem.py +++ b/bin/workflow/workitem.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -89,7 +89,7 @@ def _execute(cr, workitem, activity, ident, stack): # signal_todo = [] if (workitem['state']=='active') and activity['signal_send']: - cr.execute("select i.id,w.osv,i.res_id from wkf_instance i left join wkf w on (i.wkf_id=w.id) where i.id in (select inst_id from wkf_workitem where subflow_id=%s)", (workitem['inst_id'],)) + cr.execute("select i.id,w.osv,i.res_id from wkf_instance i left join wkf w on (i.wkf_id=w.id) where i.id IN (select inst_id from wkf_workitem where subflow_id=%s)", (workitem['inst_id'],)) for i in cr.fetchall(): signal_todo.append((i[0], (ident[0],i[1],i[2]), activity['signal_send'])) diff --git a/doc/migrate/3.3.0-3.4.0/post.py b/doc/migrate/3.3.0-3.4.0/post.py index bdbd719116b..dadab1a38d8 100644 --- a/doc/migrate/3.3.0-3.4.0/post.py +++ b/doc/migrate/3.3.0-3.4.0/post.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -33,11 +33,11 @@ parser = optparse.OptionParser(version="Tiny ERP server migration script " + __v parser.add_option("-c", "--config", dest="config", help="specify path to Tiny ERP config file") group = optparse.OptionGroup(parser, "Database related options") -group.add_option("--db_host", dest="db_host", help="specify the database host") -group.add_option("--db_port", dest="db_port", help="specify the database port") +group.add_option("--db_host", dest="db_host", help="specify the database host") +group.add_option("--db_port", dest="db_port", help="specify the database port") group.add_option("-d", "--database", dest="db_name", help="specify the database name") group.add_option("-r", "--db_user", dest="db_user", help="specify the database user name") -group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") +group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") parser.add_option_group(group) options = optparse.Values() @@ -94,7 +94,7 @@ for partner in partners: res_id = 'res.partner,%d' % partner['id'] cr.execute( "insert into ir_property(name, value, res_id, company_id, fields_id) "\ - "values(%s, %s, %s, %d, %d)", + "values(%s, %s, %s, %d, %d)", ('property_payment_term', value, res_id, company_id, fields_id)) # remove the field @@ -116,7 +116,7 @@ registered_reports = cr.fetchall() reg_reports_ids = ','.join([str(id) for (id,) in registered_reports]) for report in reports_wh_duplicates: - cr.execute("select id from ir_act_report_xml where model=%s and report_name=%s and id not in ("+reg_reports_ids+")", (report['model'], report['report_name'])) + cr.execute("select id from ir_act_report_xml where model=%s and report_name=%s and id not IN ("+reg_reports_ids+")", (report['model'], report['report_name'])) (id,) = cr.fetchone() cr.execute("delete from ir_act_report_xml where id=%d", (id,)) cr.execute("delete from ir_values where value='ir.actions.report.xml,%d'", (id,)) diff --git a/doc/migrate/3.4.0-4.0.0/post.py b/doc/migrate/3.4.0-4.0.0/post.py index 2abb06dd6f9..ba32be7d79d 100644 --- a/doc/migrate/3.4.0-4.0.0/post.py +++ b/doc/migrate/3.4.0-4.0.0/post.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -33,11 +33,11 @@ parser = optparse.OptionParser(version="Tiny ERP server migration script " + __v parser.add_option("-c", "--config", dest="config", help="specify path to Tiny ERP config file") group = optparse.OptionGroup(parser, "Database related options") -group.add_option("--db_host", dest="db_host", help="specify the database host") -group.add_option("--db_port", dest="db_port", help="specify the database port") +group.add_option("--db_host", dest="db_host", help="specify the database host") +group.add_option("--db_port", dest="db_port", help="specify the database port") group.add_option("-d", "--database", dest="db_name", help="specify the database name") group.add_option("-r", "--db_user", dest="db_user", help="specify the database user name") -group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") +group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") parser.add_option_group(group) options = optparse.Values() @@ -78,10 +78,10 @@ cr.commit() # --------------- # while True: - cr.execute("select id from ir_ui_menu where (id not in (select parent_id from ir_ui_menu where parent_id is not null)) and (id not in (select res_id from ir_values where model='ir.ui.menu'))") + cr.execute("select id from ir_ui_menu where (id not IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id not IN (select res_id from ir_values where model='ir.ui.menu'))") if not cr.rowcount: break - cr.execute("delete from ir_ui_menu where (id not in (select parent_id from ir_ui_menu where parent_id is not null)) and (id not in (select res_id from ir_values where model='ir.ui.menu'))") + cr.execute("delete from ir_ui_menu where (id not IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id not IN (select res_id from ir_values where model='ir.ui.menu'))") cr.commit() # ----------------------------------------- # diff --git a/doc/migrate/3.4.0-4.0.0/pre.py b/doc/migrate/3.4.0-4.0.0/pre.py index 3e9f2bbf2d4..d3025f247a6 100644 --- a/doc/migrate/3.4.0-4.0.0/pre.py +++ b/doc/migrate/3.4.0-4.0.0/pre.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -33,11 +33,11 @@ parser = optparse.OptionParser(version="Tiny ERP server migration script " + __v parser.add_option("-c", "--config", dest="config", help="specify path to Tiny ERP config file") group = optparse.OptionGroup(parser, "Database related options") -group.add_option("--db_host", dest="db_host", help="specify the database host") -group.add_option("--db_port", dest="db_port", help="specify the database port") +group.add_option("--db_host", dest="db_host", help="specify the database host") +group.add_option("--db_port", dest="db_port", help="specify the database port") group.add_option("-d", "--database", dest="db_name", help="specify the database name") group.add_option("-r", "--db_user", dest="db_user", help="specify the database user name") -group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") +group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") parser.add_option_group(group) options = optparse.Values() @@ -78,7 +78,7 @@ def change_column(cr, table, column, new_type, copy): ] if copy: commands.insert( - 2, + 2, "UPDATE %s SET %s=temp_column::%s" % (table, column, new_type)) for command in commands: @@ -102,10 +102,10 @@ if not cr.rowcount: # --------------- # while True: - cr.execute("select id from ir_ui_menu where id not in (select parent_id from ir_ui_menu where parent_id is not null) and id not in (select res_id from ir_model_data where model='ir.ui.menu')") + cr.execute("select id from ir_ui_menu where id not IN (select parent_id from ir_ui_menu where parent_id is not null) and id not IN (select res_id from ir_model_data where model='ir.ui.menu')") if not cr.rowcount: break - cr.execute("delete from ir_ui_menu where id not in (select parent_id from ir_ui_menu where parent_id is not null) and id not in (select res_id from ir_model_data where model='ir.ui.menu')") + cr.execute("delete from ir_ui_menu where id not IN (select parent_id from ir_ui_menu where parent_id is not null) and id not IN (select res_id from ir_model_data where model='ir.ui.menu')") cr.commit() # ----------------------------------------------------- # From 1cf10a7daaf5cd45e7c8638aa9fc78caf85a64e7 Mon Sep 17 00:00:00 2001 From: vra Date: Fri, 18 Jun 2010 19:35:37 +0530 Subject: [PATCH 14/34] [FIX][IMP] SQL-Injection ,minor improvement. bzr revid: vra@tinyerp.com-20100618140537-mjbviu7sxxwn83x8 --- bin/addons/__init__.py | 2 +- bin/addons/base/ir/ir_actions.py | 4 ++-- bin/addons/base/ir/ir_model.py | 2 +- bin/addons/base/ir/ir_translation.py | 4 ++-- bin/addons/base/res/res_config.py | 2 +- bin/osv/orm.py | 8 ++++---- bin/report/render/rml2txt/rml2txt.py | 2 +- doc/migrate/3.3.0-3.4.0/post.py | 4 ++-- doc/migrate/3.4.0-4.0.0/post-tiny.py | 2 +- doc/migrate/3.4.0-4.0.0/post.py | 4 ++-- doc/migrate/3.4.0-4.0.0/pre.py | 4 ++-- doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py | 2 +- 12 files changed, 20 insertions(+), 20 deletions(-) diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index f4bd7c1e1e3..a7557448ad2 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -840,7 +840,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False): has_updates = has_updates or r if has_updates: - cr.execute("""select model,name from ir_model where id not in (select model_id from ir_model_access)""") + cr.execute("""select model,name from ir_model where id NOT IN (select model_id from ir_model_access)""") for (model, name) in cr.fetchall(): logger.notifyChannel('init', netsvc.LOG_WARNING, 'object %s (%s) has no access rules!' % (model, name)) diff --git a/bin/addons/base/ir/ir_actions.py b/bin/addons/base/ir/ir_actions.py index 4523899116f..cdf917692e8 100644 --- a/bin/addons/base/ir/ir_actions.py +++ b/bin/addons/base/ir/ir_actions.py @@ -160,7 +160,7 @@ class act_window(osv.osv): ] def get_filters(self, cr, uid, model): - cr.execute('SELECT id FROM ir_act_window a WHERE a.id not IN (SELECT act_id FROM ir_act_window_user_rel) AND a.res_model=\''+model+'\' and a.filter=\'1\';') + cr.execute('SELECT id FROM ir_act_window a WHERE a.id NOT IN (SELECT act_id FROM ir_act_window_user_rel) AND a.res_model=\''+model+'\' and a.filter=\'1\';') all_ids = cr.fetchall() filter_ids = map(lambda x:x[0],all_ids) act_ids = self.search(cr,uid,[('res_model','=',model),('filter','=',1),('default_user_ids','in',(','.join(map(str,[uid,])),))]) @@ -380,7 +380,7 @@ class actions_server(osv.osv): def _select_signals(self, cr, uid, context={}): cr.execute("SELECT distinct w.osv, t.signal FROM wkf w, wkf_activity a, wkf_transition t \ WHERE w.id = a.wkf_id AND t.act_from = a.id OR t.act_to = a.id AND t.signal!='' \ - AND t.signal not IN (null, NULL)") + AND t.signal NOT IN (null, NULL)") result = cr.fetchall() or [] res = [] for rs in result: diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py index 9accb03ea7c..086a3c3fe81 100644 --- a/bin/addons/base/ir/ir_model.py +++ b/bin/addons/base/ir/ir_model.py @@ -314,7 +314,7 @@ class ir_model_access(osv.osv): if not grouparr: return False - cr.execute("select 1 from res_groups_users_rel where uid=%s and gid in(select res_id from ir_model_data where module=%s and name=%s)", (uid, grouparr[0], grouparr[1],)) + cr.execute("select 1 from res_groups_users_rel where uid=%s and gid IN (select res_id from ir_model_data where module=%s and name=%s)", (uid, grouparr[0], grouparr[1],)) return bool(cr.fetchone()) def check_group(self, cr, uid, model, mode, group_ids): diff --git a/bin/addons/base/ir/ir_translation.py b/bin/addons/base/ir/ir_translation.py index 7c476606632..6c64d024ab0 100644 --- a/bin/addons/base/ir/ir_translation.py +++ b/bin/addons/base/ir/ir_translation.py @@ -107,8 +107,8 @@ class ir_translation(osv.osv): 'where lang=%s ' \ 'and type=%s ' \ 'and name=%s ' \ - 'and res_id IN ('+','.join(map(str, ids))+')', - (lang,tt,name)) + 'and res_id IN %s', + (lang,tt,name,tuple(ids),)) cr.commit() for id in ids: self.create(cr, uid, { diff --git a/bin/addons/base/res/res_config.py b/bin/addons/base/res/res_config.py index 49d96768d6a..c6b9cb9fcad 100644 --- a/bin/addons/base/res/res_config.py +++ b/bin/addons/base/res/res_config.py @@ -77,7 +77,7 @@ class res_config_configurable(osv.osv_memory): todo_obj = todos.browse(cr, uid, active_todos[0], context=None) todo_groups = map(lambda x:x.id, todo_obj.groups_id) if todo_groups: - cr.execute("select 1 from res_groups_users_rel where uid=%s and gid=ANY(%s)",(uid, todo_groups,)) + cr.execute("select 1 from res_groups_users_rel where uid=%s and gid IN %s",(uid, tuple(todo_groups),)) dont_skip_todo = bool(cr.fetchone()) if dont_skip_todo: return todos.browse(cr, uid, active_todos[0], context=None) diff --git a/bin/osv/orm.py b/bin/osv/orm.py index 61c0abee308..3a45bf855b6 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -2928,7 +2928,7 @@ class orm(orm_template): for group in groups: module = group.split(".")[0] grp = group.split(".")[1] - cr.execute("select count(*) from res_groups_users_rel where gid in (select res_id from ir_model_data where name=%s and module=%s and model=%s) and uid=%s" \ + cr.execute("select count(*) from res_groups_users_rel where gid IN (select res_id from ir_model_data where name=%s and module=%s and model=%s) and uid=%s" \ (grp, module, 'res.groups', user)) readonly = cr.fetchall() if readonly[0][0] >= 1: @@ -3070,7 +3070,7 @@ class orm(orm_template): self.check_access_rule(cr, uid, ids, 'unlink', context=context) for sub_ids in cr.split_for_in_conditions(ids): cr.execute('delete from ' + self._table + ' ' \ - 'where id in %s', (sub_ids,)) + 'where id IN %s', (sub_ids,)) for order, object, store_ids, fields in result_store: if object != self._name: obj = self.pool.get(object) @@ -3230,7 +3230,7 @@ class orm(orm_template): self.check_access_rule(cr, user, ids, 'write', context=context) for sub_ids in cr.split_for_in_conditions(ids): cr.execute('update ' + self._table + ' set ' + ','.join(upd0) + ' ' \ - 'where id in %s', upd1 + [sub_ids]) + 'where id IN %s', upd1 + [sub_ids]) if totranslate: # TODO: optimize @@ -3603,7 +3603,7 @@ class orm(orm_template): field_flag = False field_dict = {} if self._log_access: - cr.execute('select id,write_date from '+self._table+' where id IN ('+','.join(map(str, ids))+')') + cr.execute('select id,write_date from '+self._table+' where id IN %s',(tuple(ids),)) res = cr.fetchall() for r in res: if r[1]: diff --git a/bin/report/render/rml2txt/rml2txt.py b/bin/report/render/rml2txt/rml2txt.py index 86362c57535..d4378c0749d 100755 --- a/bin/report/render/rml2txt/rml2txt.py +++ b/bin/report/render/rml2txt/rml2txt.py @@ -33,7 +33,7 @@ Font_size= 10.0 def verbose(text): sys.stderr.write(text+"\n"); -class textbox(): +class textbox(object): """A box containing plain text. It can have an offset, in chars. Lines can be either text strings, or textbox'es, recursively. diff --git a/doc/migrate/3.3.0-3.4.0/post.py b/doc/migrate/3.3.0-3.4.0/post.py index dadab1a38d8..9cb3bc975c9 100644 --- a/doc/migrate/3.3.0-3.4.0/post.py +++ b/doc/migrate/3.3.0-3.4.0/post.py @@ -116,7 +116,7 @@ registered_reports = cr.fetchall() reg_reports_ids = ','.join([str(id) for (id,) in registered_reports]) for report in reports_wh_duplicates: - cr.execute("select id from ir_act_report_xml where model=%s and report_name=%s and id not IN ("+reg_reports_ids+")", (report['model'], report['report_name'])) + cr.execute("select id from ir_act_report_xml where model=%s and report_name=%s and id NOT IN ("+reg_reports_ids+")", (report['model'], report['report_name'])) (id,) = cr.fetchone() cr.execute("delete from ir_act_report_xml where id=%d", (id,)) cr.execute("delete from ir_values where value='ir.actions.report.xml,%d'", (id,)) @@ -129,7 +129,7 @@ cr.commit() # this removes all transitions which are not registered in ir_model_data -cr.execute("delete from wkf_transition where id not in (select res_id from ir_model_data where model='workflow.transition')") +cr.execute("delete from wkf_transition where id NOT IN (select res_id from ir_model_data where model='workflow.transition')") cr.commit() # -------------------------------- # diff --git a/doc/migrate/3.4.0-4.0.0/post-tiny.py b/doc/migrate/3.4.0-4.0.0/post-tiny.py index f4d299f3763..5cbaa07f678 100644 --- a/doc/migrate/3.4.0-4.0.0/post-tiny.py +++ b/doc/migrate/3.4.0-4.0.0/post-tiny.py @@ -70,7 +70,7 @@ cr = db.cursor() # remove old menu # # --------------- # -cr.execute("delete from ir_ui_menu where (id not in (select parent_id from ir_ui_menu where parent_id is not null)) and (id not in (select res_id from ir_values where model='ir.ui.menu'))") +cr.execute("delete from ir_ui_menu where (id NOT IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id not in (select res_id from ir_values where model='ir.ui.menu'))") cr.commit() # --------------- # diff --git a/doc/migrate/3.4.0-4.0.0/post.py b/doc/migrate/3.4.0-4.0.0/post.py index ba32be7d79d..fe3c931bbe6 100644 --- a/doc/migrate/3.4.0-4.0.0/post.py +++ b/doc/migrate/3.4.0-4.0.0/post.py @@ -78,10 +78,10 @@ cr.commit() # --------------- # while True: - cr.execute("select id from ir_ui_menu where (id not IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id not IN (select res_id from ir_values where model='ir.ui.menu'))") + cr.execute("select id from ir_ui_menu where (id NOT IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id NOT IN (select res_id from ir_values where model='ir.ui.menu'))") if not cr.rowcount: break - cr.execute("delete from ir_ui_menu where (id not IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id not IN (select res_id from ir_values where model='ir.ui.menu'))") + cr.execute("delete from ir_ui_menu where (id NOT IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id NOT IN (select res_id from ir_values where model='ir.ui.menu'))") cr.commit() # ----------------------------------------- # diff --git a/doc/migrate/3.4.0-4.0.0/pre.py b/doc/migrate/3.4.0-4.0.0/pre.py index d3025f247a6..e665ab74bc9 100644 --- a/doc/migrate/3.4.0-4.0.0/pre.py +++ b/doc/migrate/3.4.0-4.0.0/pre.py @@ -102,10 +102,10 @@ if not cr.rowcount: # --------------- # while True: - cr.execute("select id from ir_ui_menu where id not IN (select parent_id from ir_ui_menu where parent_id is not null) and id not IN (select res_id from ir_model_data where model='ir.ui.menu')") + cr.execute("select id from ir_ui_menu where id NOT IN (select parent_id from ir_ui_menu where parent_id is not null) and id NOT IN (select res_id from ir_model_data where model='ir.ui.menu')") if not cr.rowcount: break - cr.execute("delete from ir_ui_menu where id not IN (select parent_id from ir_ui_menu where parent_id is not null) and id not IN (select res_id from ir_model_data where model='ir.ui.menu')") + cr.execute("delete from ir_ui_menu where id NOT IN (select parent_id from ir_ui_menu where parent_id is not null) and id NOT IN (select res_id from ir_model_data where model='ir.ui.menu')") cr.commit() # ----------------------------------------------------- # diff --git a/doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py b/doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py index f2485a24100..8efd4a88d1c 100644 --- a/doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py +++ b/doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py @@ -79,7 +79,7 @@ for c in res: res2 = cr.fetchone() cr.execute('SELECT id from res_country where code = %s', (c[0],)) ids = ','.join(map(lambda x: str(x[0]), cr.fetchall())) - cr.execute('UPDATE res_partner_address set country_id = %d where country_id in ('+ids+')', (res2[0],)) + cr.execute('UPDATE res_partner_address set country_id = %d where country_id IN ('+ids+')', (res2[0],)) cr.execute('DELETE FROM res_country WHERE code = %s and id <> %d', (c[0], res2[0],)) cr.commit() From b311f12e2a697bfaad7582aff9ac6502129e9a61 Mon Sep 17 00:00:00 2001 From: vra Date: Mon, 21 Jun 2010 14:35:43 +0530 Subject: [PATCH 15/34] [REVERT] revert the migrate folder changes for SQL-Injection. bzr revid: vra@tinyerp.com-20100621090543-q2l7y6tedu33kd9w --- doc/migrate/3.3.0-3.4.0/post.py | 16 ++++++++-------- doc/migrate/3.4.0-4.0.0/post-tiny.py | 2 +- doc/migrate/3.4.0-4.0.0/post.py | 14 +++++++------- doc/migrate/3.4.0-4.0.0/pre.py | 16 ++++++++-------- doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py | 2 +- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/doc/migrate/3.3.0-3.4.0/post.py b/doc/migrate/3.3.0-3.4.0/post.py index 9cb3bc975c9..bdbd719116b 100644 --- a/doc/migrate/3.3.0-3.4.0/post.py +++ b/doc/migrate/3.3.0-3.4.0/post.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -33,11 +33,11 @@ parser = optparse.OptionParser(version="Tiny ERP server migration script " + __v parser.add_option("-c", "--config", dest="config", help="specify path to Tiny ERP config file") group = optparse.OptionGroup(parser, "Database related options") -group.add_option("--db_host", dest="db_host", help="specify the database host") -group.add_option("--db_port", dest="db_port", help="specify the database port") +group.add_option("--db_host", dest="db_host", help="specify the database host") +group.add_option("--db_port", dest="db_port", help="specify the database port") group.add_option("-d", "--database", dest="db_name", help="specify the database name") group.add_option("-r", "--db_user", dest="db_user", help="specify the database user name") -group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") +group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") parser.add_option_group(group) options = optparse.Values() @@ -94,7 +94,7 @@ for partner in partners: res_id = 'res.partner,%d' % partner['id'] cr.execute( "insert into ir_property(name, value, res_id, company_id, fields_id) "\ - "values(%s, %s, %s, %d, %d)", + "values(%s, %s, %s, %d, %d)", ('property_payment_term', value, res_id, company_id, fields_id)) # remove the field @@ -116,7 +116,7 @@ registered_reports = cr.fetchall() reg_reports_ids = ','.join([str(id) for (id,) in registered_reports]) for report in reports_wh_duplicates: - cr.execute("select id from ir_act_report_xml where model=%s and report_name=%s and id NOT IN ("+reg_reports_ids+")", (report['model'], report['report_name'])) + cr.execute("select id from ir_act_report_xml where model=%s and report_name=%s and id not in ("+reg_reports_ids+")", (report['model'], report['report_name'])) (id,) = cr.fetchone() cr.execute("delete from ir_act_report_xml where id=%d", (id,)) cr.execute("delete from ir_values where value='ir.actions.report.xml,%d'", (id,)) @@ -129,7 +129,7 @@ cr.commit() # this removes all transitions which are not registered in ir_model_data -cr.execute("delete from wkf_transition where id NOT IN (select res_id from ir_model_data where model='workflow.transition')") +cr.execute("delete from wkf_transition where id not in (select res_id from ir_model_data where model='workflow.transition')") cr.commit() # -------------------------------- # diff --git a/doc/migrate/3.4.0-4.0.0/post-tiny.py b/doc/migrate/3.4.0-4.0.0/post-tiny.py index 5cbaa07f678..f4d299f3763 100644 --- a/doc/migrate/3.4.0-4.0.0/post-tiny.py +++ b/doc/migrate/3.4.0-4.0.0/post-tiny.py @@ -70,7 +70,7 @@ cr = db.cursor() # remove old menu # # --------------- # -cr.execute("delete from ir_ui_menu where (id NOT IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id not in (select res_id from ir_values where model='ir.ui.menu'))") +cr.execute("delete from ir_ui_menu where (id not in (select parent_id from ir_ui_menu where parent_id is not null)) and (id not in (select res_id from ir_values where model='ir.ui.menu'))") cr.commit() # --------------- # diff --git a/doc/migrate/3.4.0-4.0.0/post.py b/doc/migrate/3.4.0-4.0.0/post.py index fe3c931bbe6..2abb06dd6f9 100644 --- a/doc/migrate/3.4.0-4.0.0/post.py +++ b/doc/migrate/3.4.0-4.0.0/post.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -33,11 +33,11 @@ parser = optparse.OptionParser(version="Tiny ERP server migration script " + __v parser.add_option("-c", "--config", dest="config", help="specify path to Tiny ERP config file") group = optparse.OptionGroup(parser, "Database related options") -group.add_option("--db_host", dest="db_host", help="specify the database host") -group.add_option("--db_port", dest="db_port", help="specify the database port") +group.add_option("--db_host", dest="db_host", help="specify the database host") +group.add_option("--db_port", dest="db_port", help="specify the database port") group.add_option("-d", "--database", dest="db_name", help="specify the database name") group.add_option("-r", "--db_user", dest="db_user", help="specify the database user name") -group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") +group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") parser.add_option_group(group) options = optparse.Values() @@ -78,10 +78,10 @@ cr.commit() # --------------- # while True: - cr.execute("select id from ir_ui_menu where (id NOT IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id NOT IN (select res_id from ir_values where model='ir.ui.menu'))") + cr.execute("select id from ir_ui_menu where (id not in (select parent_id from ir_ui_menu where parent_id is not null)) and (id not in (select res_id from ir_values where model='ir.ui.menu'))") if not cr.rowcount: break - cr.execute("delete from ir_ui_menu where (id NOT IN (select parent_id from ir_ui_menu where parent_id is not null)) and (id NOT IN (select res_id from ir_values where model='ir.ui.menu'))") + cr.execute("delete from ir_ui_menu where (id not in (select parent_id from ir_ui_menu where parent_id is not null)) and (id not in (select res_id from ir_values where model='ir.ui.menu'))") cr.commit() # ----------------------------------------- # diff --git a/doc/migrate/3.4.0-4.0.0/pre.py b/doc/migrate/3.4.0-4.0.0/pre.py index e665ab74bc9..3e9f2bbf2d4 100644 --- a/doc/migrate/3.4.0-4.0.0/pre.py +++ b/doc/migrate/3.4.0-4.0.0/pre.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # 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 . +# along with this program. If not, see . # ############################################################################## @@ -33,11 +33,11 @@ parser = optparse.OptionParser(version="Tiny ERP server migration script " + __v parser.add_option("-c", "--config", dest="config", help="specify path to Tiny ERP config file") group = optparse.OptionGroup(parser, "Database related options") -group.add_option("--db_host", dest="db_host", help="specify the database host") -group.add_option("--db_port", dest="db_port", help="specify the database port") +group.add_option("--db_host", dest="db_host", help="specify the database host") +group.add_option("--db_port", dest="db_port", help="specify the database port") group.add_option("-d", "--database", dest="db_name", help="specify the database name") group.add_option("-r", "--db_user", dest="db_user", help="specify the database user name") -group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") +group.add_option("-w", "--db_password", dest="db_password", help="specify the database password") parser.add_option_group(group) options = optparse.Values() @@ -78,7 +78,7 @@ def change_column(cr, table, column, new_type, copy): ] if copy: commands.insert( - 2, + 2, "UPDATE %s SET %s=temp_column::%s" % (table, column, new_type)) for command in commands: @@ -102,10 +102,10 @@ if not cr.rowcount: # --------------- # while True: - cr.execute("select id from ir_ui_menu where id NOT IN (select parent_id from ir_ui_menu where parent_id is not null) and id NOT IN (select res_id from ir_model_data where model='ir.ui.menu')") + cr.execute("select id from ir_ui_menu where id not in (select parent_id from ir_ui_menu where parent_id is not null) and id not in (select res_id from ir_model_data where model='ir.ui.menu')") if not cr.rowcount: break - cr.execute("delete from ir_ui_menu where id NOT IN (select parent_id from ir_ui_menu where parent_id is not null) and id NOT IN (select res_id from ir_model_data where model='ir.ui.menu')") + cr.execute("delete from ir_ui_menu where id not in (select parent_id from ir_ui_menu where parent_id is not null) and id not in (select res_id from ir_model_data where model='ir.ui.menu')") cr.commit() # ----------------------------------------------------- # diff --git a/doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py b/doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py index 8efd4a88d1c..f2485a24100 100644 --- a/doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py +++ b/doc/migrate/4.0.0-4.2.0/tiny/pre-tiny.py @@ -79,7 +79,7 @@ for c in res: res2 = cr.fetchone() cr.execute('SELECT id from res_country where code = %s', (c[0],)) ids = ','.join(map(lambda x: str(x[0]), cr.fetchall())) - cr.execute('UPDATE res_partner_address set country_id = %d where country_id IN ('+ids+')', (res2[0],)) + cr.execute('UPDATE res_partner_address set country_id = %d where country_id in ('+ids+')', (res2[0],)) cr.execute('DELETE FROM res_country WHERE code = %s and id <> %d', (c[0], res2[0],)) cr.commit() From d966213c124ea618693deddc19ef85927f9a511c Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Wed, 23 Jun 2010 16:52:03 +0530 Subject: [PATCH 16/34] [REM]: remove the print stmt bzr revid: mga@tinyerp.com-20100623112203-9e4x9lo3uk0fvapi --- addons/account/account_move_line.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index cf8318f1ef2..fd10dff1c95 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -529,7 +529,6 @@ class account_move_line(osv.osv): return result def onchange_partner_id(self, cr, uid, ids, move_id, partner_id, account_id=None, debit=0, credit=0, date=False, journal=False): - print 'XXXXXXXXXXXXXXXXXXXXXXXXXXX : ', move_id, partner_id, account_id, debit, credit, date, journal val = {} val['date_maturity'] = False From 0ecbc92cc638ea1f618c2101ceeef58082dc712f Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Wed, 23 Jun 2010 16:53:06 +0530 Subject: [PATCH 17/34] [REM]: removing the smtpclient module bzr revid: mga@tinyerp.com-20100623112306-podmblrhz3nceku4 --- addons/smtpclient/i18n/ca.po | 856 ------------------------------- addons/smtpclient/i18n/de.po | 840 ------------------------------ addons/smtpclient/i18n/es.po | 857 ------------------------------- addons/smtpclient/i18n/et.po | 841 ------------------------------ addons/smtpclient/i18n/fr.po | 871 -------------------------------- addons/smtpclient/i18n/zh_CN.po | 840 ------------------------------ 6 files changed, 5105 deletions(-) delete mode 100644 addons/smtpclient/i18n/ca.po delete mode 100644 addons/smtpclient/i18n/de.po delete mode 100644 addons/smtpclient/i18n/es.po delete mode 100644 addons/smtpclient/i18n/et.po delete mode 100644 addons/smtpclient/i18n/fr.po delete mode 100644 addons/smtpclient/i18n/zh_CN.po diff --git a/addons/smtpclient/i18n/ca.po b/addons/smtpclient/i18n/ca.po deleted file mode 100644 index 009359cafb2..00000000000 --- a/addons/smtpclient/i18n/ca.po +++ /dev/null @@ -1,856 +0,0 @@ -# Catalan translation for openobject-addons -# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-11-26 06:00+0000\n" -"PO-Revision-Date: 2010-04-28 15:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Catalan \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-22 04:20+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: smtpclient -#: field:email.smtpclient.queue,bcc:0 -msgid "BCC to" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__number__ for Invoice / Sales Number" -msgstr "__number__ per a número de Factura / Comanda venda" - -#. module: smtpclient -#: field:email.smtpclient,ssl:0 -msgid "Use SSL?" -msgstr "Utilitza SSL" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Start Server" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_verifycode -msgid "Verify Server" -msgstr "Verifica servidor" - -#. module: smtpclient -#: field:email.smtpclient,priority:0 -msgid "Server Priority" -msgstr "" - -#. module: smtpclient -#: help:email.sendcode,init,emailto:0 -msgid "Enter the address Email where you want to get the Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Other Mail Servers" -msgstr "" - -#. module: smtpclient -#: constraint:ir.actions.act_window:0 -msgid "Invalid model name in the action definition." -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,to:0 -msgid "Mail to" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Message Error!" -msgstr "Missatge d'error!" - -#. module: smtpclient -#: field:email.smtpclient,name:0 -msgid "Server Name" -msgstr "Nom servidor" - -#. module: smtpclient -#: field:email.smtpclient,header_ids:0 -msgid "Default Headers" -msgstr "" - -#. module: smtpclient -#: wizard_button:email.testemail,init,send:0 -msgid "Send Email" -msgstr "Envia Email" - -#. module: smtpclient -#: field:res.company.address,company_id:0 -msgid "Company" -msgstr "Companyia" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Set to Draft" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Server already verified!" -msgstr "El servidor ja està verificat!" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#, python-format -msgid "Verification Failed. Please check the Server Configuration!" -msgstr "Ha fallat la verificació. Comproveu la configuració del servidor!" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error!" -msgstr "Error del servidor SMTP!" - -#. module: smtpclient -#: field:email.smtpclient,auth_type:0 -#: field:email.smtpclient,type:0 -msgid "Server Type" -msgstr "Tipus de servidor" - -#. module: smtpclient -#: field:email.smtpclient,from_email:0 -msgid "Email From" -msgstr "Remitent Email" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "User Information" -msgstr "Informació de l'usuari" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP SMTP server Email Registration Code!" -msgstr "Codi de registre per Email del servidor SMTP d'OpenERP!" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_report_smtp_server -#: view:report.smtp.server:0 -msgid "Server Statistics" -msgstr "Estadístiques del servidor" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Messages" -msgstr "Missatges" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Sale" -msgstr "Vendes" - -#. module: smtpclient -#: field:email.headers,value:0 -msgid "Value" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Access Permission" -msgstr "Permís d'accés" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_headers -msgid "Email Headers" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue:0 -msgid "Queue Option" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Please configure Email Server Messages [Verification / Test]" -msgstr "" -"Si us plau, configureu el servidor de missatges per Email [Verificació / " -"Prova]" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Verification failed. Invalid Verification Code!" -msgstr "Ha fallat la verificació. Codi de verificació invàlid!" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_history -msgid "Email History" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.history:0 -msgid "Server History" -msgstr "Historial servidor" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Yahoo!!! Server" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,test_email:0 -msgid "Test Message" -msgstr "Missatge de prova" - -#. module: smtpclient -#: field:report.smtp.server,server_id:0 -msgid "Server ID" -msgstr "ID servidor" - -#. module: smtpclient -#: help:email.smtpclient,delete_queue_period:0 -msgid "delete emails/contents from email queue after specified no of days" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,no:0 -msgid "Total No." -msgstr "Núm. total" - -#. module: smtpclient -#: help:email.smtpclient,process_id:0 -msgid "Mail Transport Agent Process" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__user__ for User Name" -msgstr "__user__ per a nom d'usuari" - -#. module: smtpclient -#: field:email.smtpclient,date_create:0 -msgid "Date Create" -msgstr "Data creació" - -#. module: smtpclient -#: field:email.smtpclient,state:0 -msgid "Server Status" -msgstr "Estat servidor" - -#. module: smtpclient -#: field:email.smtpclient.queue,error:0 -msgid "Last Error" -msgstr "" - -#. module: smtpclient -#: wizard_view:email.sendcode,init:0 -#: wizard_button:email.sendcode,init,send:0 -msgid "Send Code" -msgstr "Envia codi" - -#. module: smtpclient -#: field:email.smtpclient.queue,name:0 -msgid "Subject" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Read Error!" -msgstr "Error de lectura!" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Unable to read Server Settings" -msgstr "No és possible llegir la configuració del servidor" - -#. module: smtpclient -#: field:email.smtpclient,server_statistics:0 -msgid "Statistics" -msgstr "Estadístiques" - -#. module: smtpclient -#: wizard_view:email.testemail,init:0 -msgid "Test Email" -msgstr "Email de prova" - -#. module: smtpclient -#: field:email.smtpclient.history,server_id:0 -msgid "Smtp Server" -msgstr "Servidor SMTP" - -#. module: smtpclient -#: field:res.company,addresses:0 -msgid "Email Addresses" -msgstr "Direcció d'Email" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_history_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server_history -msgid "Email Server History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Waiting" -msgstr "" - -#. module: smtpclient -#: help:email.testemail,init,emailto:0 -msgid "Enter the address Email where you want to get the Test Email" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Not Verified" -msgstr "No verificat" - -#. module: smtpclient -#: field:email.smtpclient.history,email:0 -msgid "Email" -msgstr "Email" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Sent" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,user_id:0 -msgid "Username" -msgstr "Nom usuari" - -#. module: smtpclient -#: field:res.company.address,name:0 -msgid "Address Type" -msgstr "Tipus d'adreça" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Permission" -msgstr "Permís" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Message with All Headers" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Message Headers" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,report_id:0 -msgid "Report" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Other Information" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Configuration" -msgstr "Configuració" - -#. module: smtpclient -#: constraint:ir.cron:0 -msgid "Invalid arguments" -msgstr "" - -#. module: smtpclient -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML invàlid per a la definició de la vista!" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,disclaimers:0 -msgid "Disclaimers" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,name:0 -msgid "Server" -msgstr "Servidor" - -#. module: smtpclient -#: view:res.company:0 -msgid "SMTP Settings" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,body:0 -msgid "" -"The message text that will be send along with the email which is send " -"through this server" -msgstr "" -"El text del missatge que serà enviat junt amb l'Email que és enviat " -"mitjançant aquest servidor" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_testemail -msgid "Send Test Email" -msgstr "Envia Email de prova" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_queue -msgid "Email Queue" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Server Information" -msgstr "Informació del servidor" - -#. module: smtpclient -#: help:email.verifycode,init,code:0 -msgid "Enter the verification code thay you get in your verification Email" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_history -msgid "Email Client History" -msgstr "Historial del client d'Email" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Never Delete Message" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP Test Email!" -msgstr "Email de prova d'OpenERP!" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,body:0 -#: view:email.smtpclient.queue:0 -#: field:email.smtpclient.queue,serialized_message:0 -msgid "Message" -msgstr "Missatge" - -#. module: smtpclient -#: field:email.smtpclient,process_id:0 -msgid "MTA Process" -msgstr "" - -#. module: smtpclient -#: field:email.headers,server_id:0 -#: view:email.smtpclient:0 -#: field:email.smtpclient,server:0 -#: field:email.smtpclient.queue,server_id:0 -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server -msgid "SMTP Server" -msgstr "Servidor SMTP" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Google Server" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Verified" -msgstr "Verificat" - -#. module: smtpclient -#: help:email.smtpclient,priority:0 -msgid "" -"Priority between 0 to 10, will be used to define the MTA process priotiry" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,port:0 -msgid "SMTP Port" -msgstr "Port SMTP" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Email TO Address not Defined !" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,auth:0 -msgid "Use Auth" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,pstate:0 -msgid "Server Statue" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,user:0 -msgid "User Name" -msgstr "Nom usuari" - -#. module: smtpclient -#: field:email.smtpclient,verify_email:0 -msgid "Verify Message" -msgstr "Verifica missatge" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient -#: model:ir.module.module,shortdesc:smtpclient.module_meta_information -msgid "Email Client" -msgstr "Client Email" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Disclaimers Message" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__code__ for Verification Code" -msgstr "__code__ per a codi de verificació" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Queued" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,date_create:0 -#: field:email.smtpclient.queue,date_create:0 -msgid "Date" -msgstr "Data" - -#. module: smtpclient -#: field:email.smtpclient.queue,cc:0 -msgid "CC to" -msgstr "" - -#. module: smtpclient -#: model:email.smtpclient,verify_email:smtpclient.email_smtpclient_sendmailserver0 -msgid "" -"Verification Message. This is the code\n" -"__code__ \n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"Created by user __user__" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_queue_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server_queue -msgid "Message Queue" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Default" -msgstr "Per defecte" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete Content After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "You have no permission to access SMTP Server : %s " -msgstr "No teniu permís per accedir al servidor SMTP: %s " - -#. module: smtpclient -#: field:email.smtpclient,active:0 -msgid "Active" -msgstr "Actiu" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_queue -msgid "Message Queus" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#: code:addons/smtpclient/wizard/verifycode.py:0 -#: view:email.smtpclient.queue:0 -#: selection:email.smtpclient.queue,state:0 -#, python-format -msgid "Error" -msgstr "Error" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server Error!" -msgstr "Error del servidor!" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Clear All After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Please verify Email Server, without verification you can not send Email(s)." -msgstr "" -"Si us plau, verifiqueu el servidor de correu electrònic, sense verificar-lo " -"no podeu enviar Email(s)." - -#. module: smtpclient -#: field:email.smtpclient,history_line:0 -#: field:report.smtp.server,history:0 -msgid "History" -msgstr "Historial" - -#. module: smtpclient -#: field:email.smtpclient.queue,priority:0 -msgid "Message Priority" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,file_ids:0 -msgid "Attachments" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__name__ for Customer Name" -msgstr "__name__ per a nom de client" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "General" -msgstr "" - -#. module: smtpclient -#: field:email.headers,key:0 -msgid "Header" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Verification Message. This is the code\n" -"\n" -"__code__\n" -"\n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"\n" -"Created by user __user__" -msgstr "" -"Missatge de verificació. Aquest és el codi\n" -"\n" -"__code__\n" -"\n" -"que haureu de copiar al servidor d'Email d'OpenERP (assistent Verifica " -"servidor).\n" -"\n" -"Creat per l'usuari __user__" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Invoice" -msgstr "Factura" - -#. module: smtpclient -#: wizard_view:email.verifycode,init:0 -#: wizard_button:email.verifycode,init,check:0 -msgid "Verify Code" -msgstr "Verifica codi" - -#. module: smtpclient -#: wizard_button:email.sendcode,init,end:0 -#: wizard_button:email.testemail,init,end:0 -#: wizard_button:email.verifycode,init,end:0 -msgid "Cancel" -msgstr "Cancel·la" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue_period:0 -msgid "Delete after" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server is not Verified, Please Verify the Server !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,resource_id:0 -msgid "Resource ID" -msgstr "ID del registre" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Data Error !" -msgstr "" - -#. module: smtpclient -#: constraint:ir.model:0 -msgid "" -"The Object name must start with x_ and not contain any special character !" -msgstr "" -"El nom de l'objecte ha de començar amb x_ i no contenir cap caràcter " -"especial!" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete when Email Sent" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Account" -msgstr "Comptabilitat" - -#. module: smtpclient -#: model:ir.module.module,description:smtpclient.module_meta_information -msgid "" -"Email Client module that provides:\n" -" Sending Email\n" -" Use Multiple Server\n" -" Multi Threading\n" -" Multi Attachment\n" -" " -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Stock" -msgstr "Estoc" - -#. module: smtpclient -#: field:email.smtpclient.history,name:0 -msgid "Description" -msgstr "Descripció" - -#. module: smtpclient -#: field:email.smtpclient,code:0 -#: wizard_field:email.verifycode,init,code:0 -msgid "Verification Code" -msgstr "Codi de verificació" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Stop" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,body:0 -msgid "Email Text" -msgstr "" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Delivery" -msgstr "Enviament" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Running" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Last Error occured" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Waiting for Verification" -msgstr "Esperant verificació" - -#. module: smtpclient -#: field:email.smtpclient,password:0 -msgid "Password" -msgstr "Contrasenya" - -#. module: smtpclient -#: field:email.smtpclient,users_id:0 -msgid "Users Allowed" -msgstr "Usuaris permesos" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#, python-format -msgid "Verification Code Already Generated !" -msgstr "" - -#. module: smtpclient -#: wizard_field:email.sendcode,init,emailto:0 -#: field:email.smtpclient,email:0 -#: wizard_field:email.testemail,init,emailto:0 -#: view:res.company:0 -#: field:res.company.address,email:0 -msgid "Email Address" -msgstr "Direcció de correu" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Verification Message" -msgstr "Missatge de verificació" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Stop Server" -msgstr "" - -#. module: smtpclient -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server -msgid "Email Servers" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_sendcode -msgid "Send Verification Code" -msgstr "Envia codi de verificació" - -#. module: smtpclient -#: field:email.smtpclient.history,model:0 -msgid "Model" -msgstr "Model" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_tree -#: field:ir.actions.server,email_server:0 -msgid "Email Server" -msgstr "Servidor Email" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Permission Error!" -msgstr "Error dels permisos!" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_res_company_address -msgid "res.company.address" -msgstr "res.company.address" - -#. module: smtpclient -#: field:email.smtpclient.queue,state:0 -msgid "Message Status" -msgstr "" diff --git a/addons/smtpclient/i18n/de.po b/addons/smtpclient/i18n/de.po deleted file mode 100644 index 66c0c21fb58..00000000000 --- a/addons/smtpclient/i18n/de.po +++ /dev/null @@ -1,840 +0,0 @@ -# German translation for openobject-addons -# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-11-26 06:00+0000\n" -"PO-Revision-Date: 2010-05-11 11:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: German \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-22 04:20+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: smtpclient -#: field:email.smtpclient.queue,bcc:0 -msgid "BCC to" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__number__ for Invoice / Sales Number" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,ssl:0 -msgid "Use SSL?" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Start Server" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_verifycode -msgid "Verify Server" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,priority:0 -msgid "Server Priority" -msgstr "" - -#. module: smtpclient -#: help:email.sendcode,init,emailto:0 -msgid "Enter the address Email where you want to get the Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Other Mail Servers" -msgstr "" - -#. module: smtpclient -#: constraint:ir.actions.act_window:0 -msgid "Invalid model name in the action definition." -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,to:0 -msgid "Mail to" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Message Error!" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,name:0 -msgid "Server Name" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,header_ids:0 -msgid "Default Headers" -msgstr "" - -#. module: smtpclient -#: wizard_button:email.testemail,init,send:0 -msgid "Send Email" -msgstr "" - -#. module: smtpclient -#: field:res.company.address,company_id:0 -msgid "Company" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Set to Draft" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Server already verified!" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#, python-format -msgid "Verification Failed. Please check the Server Configuration!" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error!" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,auth_type:0 -#: field:email.smtpclient,type:0 -msgid "Server Type" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,from_email:0 -msgid "Email From" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "User Information" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP SMTP server Email Registration Code!" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_report_smtp_server -#: view:report.smtp.server:0 -msgid "Server Statistics" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Messages" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Sale" -msgstr "" - -#. module: smtpclient -#: field:email.headers,value:0 -msgid "Value" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Access Permission" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_headers -msgid "Email Headers" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue:0 -msgid "Queue Option" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Please configure Email Server Messages [Verification / Test]" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Verification failed. Invalid Verification Code!" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_history -msgid "Email History" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.history:0 -msgid "Server History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Yahoo!!! Server" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,test_email:0 -msgid "Test Message" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,server_id:0 -msgid "Server ID" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,delete_queue_period:0 -msgid "delete emails/contents from email queue after specified no of days" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,no:0 -msgid "Total No." -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,process_id:0 -msgid "Mail Transport Agent Process" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__user__ for User Name" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,date_create:0 -msgid "Date Create" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,state:0 -msgid "Server Status" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,error:0 -msgid "Last Error" -msgstr "" - -#. module: smtpclient -#: wizard_view:email.sendcode,init:0 -#: wizard_button:email.sendcode,init,send:0 -msgid "Send Code" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,name:0 -msgid "Subject" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Read Error!" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Unable to read Server Settings" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,server_statistics:0 -msgid "Statistics" -msgstr "" - -#. module: smtpclient -#: wizard_view:email.testemail,init:0 -msgid "Test Email" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,server_id:0 -msgid "Smtp Server" -msgstr "" - -#. module: smtpclient -#: field:res.company,addresses:0 -msgid "Email Addresses" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_history_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server_history -msgid "Email Server History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Waiting" -msgstr "" - -#. module: smtpclient -#: help:email.testemail,init,emailto:0 -msgid "Enter the address Email where you want to get the Test Email" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Not Verified" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,email:0 -msgid "Email" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Sent" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,user_id:0 -msgid "Username" -msgstr "" - -#. module: smtpclient -#: field:res.company.address,name:0 -msgid "Address Type" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Permission" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Message with All Headers" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Message Headers" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,report_id:0 -msgid "Report" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Other Information" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Configuration" -msgstr "" - -#. module: smtpclient -#: constraint:ir.cron:0 -msgid "Invalid arguments" -msgstr "" - -#. module: smtpclient -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,disclaimers:0 -msgid "Disclaimers" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,name:0 -msgid "Server" -msgstr "" - -#. module: smtpclient -#: view:res.company:0 -msgid "SMTP Settings" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,body:0 -msgid "" -"The message text that will be send along with the email which is send " -"through this server" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_testemail -msgid "Send Test Email" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_queue -msgid "Email Queue" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Server Information" -msgstr "" - -#. module: smtpclient -#: help:email.verifycode,init,code:0 -msgid "Enter the verification code thay you get in your verification Email" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_history -msgid "Email Client History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Never Delete Message" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP Test Email!" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,body:0 -#: view:email.smtpclient.queue:0 -#: field:email.smtpclient.queue,serialized_message:0 -msgid "Message" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,process_id:0 -msgid "MTA Process" -msgstr "" - -#. module: smtpclient -#: field:email.headers,server_id:0 -#: view:email.smtpclient:0 -#: field:email.smtpclient,server:0 -#: field:email.smtpclient.queue,server_id:0 -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server -msgid "SMTP Server" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Google Server" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Verified" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,priority:0 -msgid "" -"Priority between 0 to 10, will be used to define the MTA process priotiry" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,port:0 -msgid "SMTP Port" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Email TO Address not Defined !" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,auth:0 -msgid "Use Auth" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,pstate:0 -msgid "Server Statue" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,user:0 -msgid "User Name" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,verify_email:0 -msgid "Verify Message" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient -#: model:ir.module.module,shortdesc:smtpclient.module_meta_information -msgid "Email Client" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Disclaimers Message" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__code__ for Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Queued" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,date_create:0 -#: field:email.smtpclient.queue,date_create:0 -msgid "Date" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,cc:0 -msgid "CC to" -msgstr "" - -#. module: smtpclient -#: model:email.smtpclient,verify_email:smtpclient.email_smtpclient_sendmailserver0 -msgid "" -"Verification Message. This is the code\n" -"__code__ \n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"Created by user __user__" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_queue_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server_queue -msgid "Message Queue" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Default" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete Content After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "You have no permission to access SMTP Server : %s " -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,active:0 -msgid "Active" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_queue -msgid "Message Queus" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#: code:addons/smtpclient/wizard/verifycode.py:0 -#: view:email.smtpclient.queue:0 -#: selection:email.smtpclient.queue,state:0 -#, python-format -msgid "Error" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server Error!" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Clear All After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Please verify Email Server, without verification you can not send Email(s)." -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,history_line:0 -#: field:report.smtp.server,history:0 -msgid "History" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,priority:0 -msgid "Message Priority" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,file_ids:0 -msgid "Attachments" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__name__ for Customer Name" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "General" -msgstr "" - -#. module: smtpclient -#: field:email.headers,key:0 -msgid "Header" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Verification Message. This is the code\n" -"\n" -"__code__\n" -"\n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"\n" -"Created by user __user__" -msgstr "" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Invoice" -msgstr "" - -#. module: smtpclient -#: wizard_view:email.verifycode,init:0 -#: wizard_button:email.verifycode,init,check:0 -msgid "Verify Code" -msgstr "" - -#. module: smtpclient -#: wizard_button:email.sendcode,init,end:0 -#: wizard_button:email.testemail,init,end:0 -#: wizard_button:email.verifycode,init,end:0 -msgid "Cancel" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue_period:0 -msgid "Delete after" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server is not Verified, Please Verify the Server !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,resource_id:0 -msgid "Resource ID" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Data Error !" -msgstr "" - -#. module: smtpclient -#: constraint:ir.model:0 -msgid "" -"The Object name must start with x_ and not contain any special character !" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete when Email Sent" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Account" -msgstr "" - -#. module: smtpclient -#: model:ir.module.module,description:smtpclient.module_meta_information -msgid "" -"Email Client module that provides:\n" -" Sending Email\n" -" Use Multiple Server\n" -" Multi Threading\n" -" Multi Attachment\n" -" " -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Stock" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,name:0 -msgid "Description" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,code:0 -#: wizard_field:email.verifycode,init,code:0 -msgid "Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Stop" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,body:0 -msgid "Email Text" -msgstr "" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Delivery" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Running" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Last Error occured" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Waiting for Verification" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,password:0 -msgid "Password" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,users_id:0 -msgid "Users Allowed" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#, python-format -msgid "Verification Code Already Generated !" -msgstr "" - -#. module: smtpclient -#: wizard_field:email.sendcode,init,emailto:0 -#: field:email.smtpclient,email:0 -#: wizard_field:email.testemail,init,emailto:0 -#: view:res.company:0 -#: field:res.company.address,email:0 -msgid "Email Address" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Verification Message" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Stop Server" -msgstr "" - -#. module: smtpclient -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server -msgid "Email Servers" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_sendcode -msgid "Send Verification Code" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,model:0 -msgid "Model" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_tree -#: field:ir.actions.server,email_server:0 -msgid "Email Server" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Permission Error!" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_res_company_address -msgid "res.company.address" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,state:0 -msgid "Message Status" -msgstr "" diff --git a/addons/smtpclient/i18n/es.po b/addons/smtpclient/i18n/es.po deleted file mode 100644 index c726e534022..00000000000 --- a/addons/smtpclient/i18n/es.po +++ /dev/null @@ -1,857 +0,0 @@ -# Spanish translation for openobject-addons -# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-11-26 06:00+0000\n" -"PO-Revision-Date: 2010-04-28 15:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Spanish \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-22 04:20+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: smtpclient -#: field:email.smtpclient.queue,bcc:0 -msgid "BCC to" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__number__ for Invoice / Sales Number" -msgstr "__number__ para número de Factura / Pedido venta" - -#. module: smtpclient -#: field:email.smtpclient,ssl:0 -msgid "Use SSL?" -msgstr "Utilizar SSL" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Start Server" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_verifycode -msgid "Verify Server" -msgstr "Verificar servidor" - -#. module: smtpclient -#: field:email.smtpclient,priority:0 -msgid "Server Priority" -msgstr "" - -#. module: smtpclient -#: help:email.sendcode,init,emailto:0 -msgid "Enter the address Email where you want to get the Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Other Mail Servers" -msgstr "" - -#. module: smtpclient -#: constraint:ir.actions.act_window:0 -msgid "Invalid model name in the action definition." -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,to:0 -msgid "Mail to" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Message Error!" -msgstr "¡Mensaje de error!" - -#. module: smtpclient -#: field:email.smtpclient,name:0 -msgid "Server Name" -msgstr "Nombre servidor" - -#. module: smtpclient -#: field:email.smtpclient,header_ids:0 -msgid "Default Headers" -msgstr "" - -#. module: smtpclient -#: wizard_button:email.testemail,init,send:0 -msgid "Send Email" -msgstr "Enviar Email" - -#. module: smtpclient -#: field:res.company.address,company_id:0 -msgid "Company" -msgstr "Compañía" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Set to Draft" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Server already verified!" -msgstr "¡El servidor ya está verificado!" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#, python-format -msgid "Verification Failed. Please check the Server Configuration!" -msgstr "" -"Ha fallado la verificación. ¡Compruebe la configuración del servidor!" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error!" -msgstr "¡Error del servidor SMTP!" - -#. module: smtpclient -#: field:email.smtpclient,auth_type:0 -#: field:email.smtpclient,type:0 -msgid "Server Type" -msgstr "Tipo de servidor" - -#. module: smtpclient -#: field:email.smtpclient,from_email:0 -msgid "Email From" -msgstr "Remitente Email" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "User Information" -msgstr "Información del usuario" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP SMTP server Email Registration Code!" -msgstr "¡Código de registro por Email del servidor SMTP de OpenERP!" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_report_smtp_server -#: view:report.smtp.server:0 -msgid "Server Statistics" -msgstr "Estadísticas del servidor" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Messages" -msgstr "Mensajes" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Sale" -msgstr "Ventas" - -#. module: smtpclient -#: field:email.headers,value:0 -msgid "Value" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Access Permission" -msgstr "Permiso de acceso" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_headers -msgid "Email Headers" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue:0 -msgid "Queue Option" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Please configure Email Server Messages [Verification / Test]" -msgstr "" -"Por favor, configure el servidor de mensajes por Email [Verificación / " -"Prueba]" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Verification failed. Invalid Verification Code!" -msgstr "Ha fallado la verificación. ¡Código de verificación inválido!" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_history -msgid "Email History" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.history:0 -msgid "Server History" -msgstr "Historial servidor" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Yahoo!!! Server" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,test_email:0 -msgid "Test Message" -msgstr "Mensaje de prueba" - -#. module: smtpclient -#: field:report.smtp.server,server_id:0 -msgid "Server ID" -msgstr "ID servidor" - -#. module: smtpclient -#: help:email.smtpclient,delete_queue_period:0 -msgid "delete emails/contents from email queue after specified no of days" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,no:0 -msgid "Total No." -msgstr "Núm. total" - -#. module: smtpclient -#: help:email.smtpclient,process_id:0 -msgid "Mail Transport Agent Process" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__user__ for User Name" -msgstr "__user__ para nombre de usuario" - -#. module: smtpclient -#: field:email.smtpclient,date_create:0 -msgid "Date Create" -msgstr "Fecha creación" - -#. module: smtpclient -#: field:email.smtpclient,state:0 -msgid "Server Status" -msgstr "Estado servidor" - -#. module: smtpclient -#: field:email.smtpclient.queue,error:0 -msgid "Last Error" -msgstr "" - -#. module: smtpclient -#: wizard_view:email.sendcode,init:0 -#: wizard_button:email.sendcode,init,send:0 -msgid "Send Code" -msgstr "Enviar código" - -#. module: smtpclient -#: field:email.smtpclient.queue,name:0 -msgid "Subject" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Read Error!" -msgstr "¡Error de lectura!" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Unable to read Server Settings" -msgstr "No es posible leer la configuración del servidor" - -#. module: smtpclient -#: field:email.smtpclient,server_statistics:0 -msgid "Statistics" -msgstr "Estadísticas" - -#. module: smtpclient -#: wizard_view:email.testemail,init:0 -msgid "Test Email" -msgstr "Email de prueba" - -#. module: smtpclient -#: field:email.smtpclient.history,server_id:0 -msgid "Smtp Server" -msgstr "Servidor SMTP" - -#. module: smtpclient -#: field:res.company,addresses:0 -msgid "Email Addresses" -msgstr "Dirección de Email" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_history_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server_history -msgid "Email Server History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Waiting" -msgstr "" - -#. module: smtpclient -#: help:email.testemail,init,emailto:0 -msgid "Enter the address Email where you want to get the Test Email" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Not Verified" -msgstr "No verificado" - -#. module: smtpclient -#: field:email.smtpclient.history,email:0 -msgid "Email" -msgstr "Email" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Sent" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,user_id:0 -msgid "Username" -msgstr "Nombre usuario" - -#. module: smtpclient -#: field:res.company.address,name:0 -msgid "Address Type" -msgstr "Tipo de dirección" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Permission" -msgstr "Permiso" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Message with All Headers" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Message Headers" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,report_id:0 -msgid "Report" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Other Information" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Configuration" -msgstr "Configuración" - -#. module: smtpclient -#: constraint:ir.cron:0 -msgid "Invalid arguments" -msgstr "" - -#. module: smtpclient -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "¡XML inválido para la definición de la vista!" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,disclaimers:0 -msgid "Disclaimers" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,name:0 -msgid "Server" -msgstr "Servidor" - -#. module: smtpclient -#: view:res.company:0 -msgid "SMTP Settings" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,body:0 -msgid "" -"The message text that will be send along with the email which is send " -"through this server" -msgstr "" -"El texto del mensaje que será enviado junto con el Email que es enviado " -"mediante este servidor" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_testemail -msgid "Send Test Email" -msgstr "Enviar Email de prueba" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_queue -msgid "Email Queue" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Server Information" -msgstr "Información del servidor" - -#. module: smtpclient -#: help:email.verifycode,init,code:0 -msgid "Enter the verification code thay you get in your verification Email" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_history -msgid "Email Client History" -msgstr "Historial del cliente de Email" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Never Delete Message" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP Test Email!" -msgstr "¡Email de prueba de OpenERP!" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,body:0 -#: view:email.smtpclient.queue:0 -#: field:email.smtpclient.queue,serialized_message:0 -msgid "Message" -msgstr "Mensaje" - -#. module: smtpclient -#: field:email.smtpclient,process_id:0 -msgid "MTA Process" -msgstr "" - -#. module: smtpclient -#: field:email.headers,server_id:0 -#: view:email.smtpclient:0 -#: field:email.smtpclient,server:0 -#: field:email.smtpclient.queue,server_id:0 -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server -msgid "SMTP Server" -msgstr "Servidor SMTP" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Google Server" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Verified" -msgstr "Verificado" - -#. module: smtpclient -#: help:email.smtpclient,priority:0 -msgid "" -"Priority between 0 to 10, will be used to define the MTA process priotiry" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,port:0 -msgid "SMTP Port" -msgstr "Puerto SMTP" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Email TO Address not Defined !" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,auth:0 -msgid "Use Auth" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,pstate:0 -msgid "Server Statue" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,user:0 -msgid "User Name" -msgstr "Nombre usuario" - -#. module: smtpclient -#: field:email.smtpclient,verify_email:0 -msgid "Verify Message" -msgstr "Verificar mensaje" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient -#: model:ir.module.module,shortdesc:smtpclient.module_meta_information -msgid "Email Client" -msgstr "Cliente Email" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Disclaimers Message" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__code__ for Verification Code" -msgstr "__code__ para código de verificación" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Queued" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,date_create:0 -#: field:email.smtpclient.queue,date_create:0 -msgid "Date" -msgstr "Fecha" - -#. module: smtpclient -#: field:email.smtpclient.queue,cc:0 -msgid "CC to" -msgstr "" - -#. module: smtpclient -#: model:email.smtpclient,verify_email:smtpclient.email_smtpclient_sendmailserver0 -msgid "" -"Verification Message. This is the code\n" -"__code__ \n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"Created by user __user__" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_queue_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server_queue -msgid "Message Queue" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Default" -msgstr "Por defecto" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete Content After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "You have no permission to access SMTP Server : %s " -msgstr "No tiene permiso para acceder al servidor SMTP: %s " - -#. module: smtpclient -#: field:email.smtpclient,active:0 -msgid "Active" -msgstr "Activo" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_queue -msgid "Message Queus" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#: code:addons/smtpclient/wizard/verifycode.py:0 -#: view:email.smtpclient.queue:0 -#: selection:email.smtpclient.queue,state:0 -#, python-format -msgid "Error" -msgstr "Error" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server Error!" -msgstr "¡Error del servidor!" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Clear All After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Please verify Email Server, without verification you can not send Email(s)." -msgstr "" -"Por favor, verifique el servidor de correo electrónico, sin verificarlo no " -"puede enviar Email(s)." - -#. module: smtpclient -#: field:email.smtpclient,history_line:0 -#: field:report.smtp.server,history:0 -msgid "History" -msgstr "Historial" - -#. module: smtpclient -#: field:email.smtpclient.queue,priority:0 -msgid "Message Priority" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,file_ids:0 -msgid "Attachments" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__name__ for Customer Name" -msgstr "__name__ para nombre de cliente" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "General" -msgstr "" - -#. module: smtpclient -#: field:email.headers,key:0 -msgid "Header" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Verification Message. This is the code\n" -"\n" -"__code__\n" -"\n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"\n" -"Created by user __user__" -msgstr "" -"Mensaje de verificación. Éste es el código\n" -"\n" -"__code__\n" -"\n" -"que deberá copiar en el servidor de Email de OpenERP (asistente Verificar " -"servidor).\n" -"\n" -"Creado por el usuario __user__" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Invoice" -msgstr "Factura" - -#. module: smtpclient -#: wizard_view:email.verifycode,init:0 -#: wizard_button:email.verifycode,init,check:0 -msgid "Verify Code" -msgstr "Verificar código" - -#. module: smtpclient -#: wizard_button:email.sendcode,init,end:0 -#: wizard_button:email.testemail,init,end:0 -#: wizard_button:email.verifycode,init,end:0 -msgid "Cancel" -msgstr "Cancelar" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue_period:0 -msgid "Delete after" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server is not Verified, Please Verify the Server !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,resource_id:0 -msgid "Resource ID" -msgstr "ID del registro" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Data Error !" -msgstr "" - -#. module: smtpclient -#: constraint:ir.model:0 -msgid "" -"The Object name must start with x_ and not contain any special character !" -msgstr "" -"¡El nombre del objeto debe empezar con x_ y no contener ningún carácter " -"especial!" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete when Email Sent" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Account" -msgstr "Contabilidad" - -#. module: smtpclient -#: model:ir.module.module,description:smtpclient.module_meta_information -msgid "" -"Email Client module that provides:\n" -" Sending Email\n" -" Use Multiple Server\n" -" Multi Threading\n" -" Multi Attachment\n" -" " -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Stock" -msgstr "Stock" - -#. module: smtpclient -#: field:email.smtpclient.history,name:0 -msgid "Description" -msgstr "Descripción" - -#. module: smtpclient -#: field:email.smtpclient,code:0 -#: wizard_field:email.verifycode,init,code:0 -msgid "Verification Code" -msgstr "Código de verificación" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Stop" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,body:0 -msgid "Email Text" -msgstr "" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Delivery" -msgstr "Envío" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Running" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Last Error occured" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Waiting for Verification" -msgstr "Esperando verificación" - -#. module: smtpclient -#: field:email.smtpclient,password:0 -msgid "Password" -msgstr "Contraseña" - -#. module: smtpclient -#: field:email.smtpclient,users_id:0 -msgid "Users Allowed" -msgstr "Usuarios permitidos" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#, python-format -msgid "Verification Code Already Generated !" -msgstr "" - -#. module: smtpclient -#: wizard_field:email.sendcode,init,emailto:0 -#: field:email.smtpclient,email:0 -#: wizard_field:email.testemail,init,emailto:0 -#: view:res.company:0 -#: field:res.company.address,email:0 -msgid "Email Address" -msgstr "Dirección de correo" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Verification Message" -msgstr "Mensaje de verificación" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Stop Server" -msgstr "" - -#. module: smtpclient -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server -msgid "Email Servers" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_sendcode -msgid "Send Verification Code" -msgstr "Enviar código de verificación" - -#. module: smtpclient -#: field:email.smtpclient.history,model:0 -msgid "Model" -msgstr "Modelo" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_tree -#: field:ir.actions.server,email_server:0 -msgid "Email Server" -msgstr "Servidor Email" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Permission Error!" -msgstr "¡Error de los permisos!" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_res_company_address -msgid "res.company.address" -msgstr "res.company.address" - -#. module: smtpclient -#: field:email.smtpclient.queue,state:0 -msgid "Message Status" -msgstr "" diff --git a/addons/smtpclient/i18n/et.po b/addons/smtpclient/i18n/et.po deleted file mode 100644 index e9de56e3c73..00000000000 --- a/addons/smtpclient/i18n/et.po +++ /dev/null @@ -1,841 +0,0 @@ -# Estonian translation for openobject-addons -# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-11-26 06:00+0000\n" -"PO-Revision-Date: 2010-05-07 16:28+0000\n" -"Last-Translator: lyyser \n" -"Language-Team: Estonian \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-22 04:20+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: smtpclient -#: field:email.smtpclient.queue,bcc:0 -msgid "BCC to" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__number__ for Invoice / Sales Number" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,ssl:0 -msgid "Use SSL?" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Start Server" -msgstr "Käivita server" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_verifycode -msgid "Verify Server" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,priority:0 -msgid "Server Priority" -msgstr "" - -#. module: smtpclient -#: help:email.sendcode,init,emailto:0 -msgid "Enter the address Email where you want to get the Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Other Mail Servers" -msgstr "" - -#. module: smtpclient -#: constraint:ir.actions.act_window:0 -msgid "Invalid model name in the action definition." -msgstr "Vigane mudeli nimi toimingu definitsioonis." - -#. module: smtpclient -#: field:email.smtpclient.queue,to:0 -msgid "Mail to" -msgstr "Saada e-mail" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Message Error!" -msgstr "Vea sõnum!" - -#. module: smtpclient -#: field:email.smtpclient,name:0 -msgid "Server Name" -msgstr "Serveri nimi" - -#. module: smtpclient -#: field:email.smtpclient,header_ids:0 -msgid "Default Headers" -msgstr "Vaikimisi päised" - -#. module: smtpclient -#: wizard_button:email.testemail,init,send:0 -msgid "Send Email" -msgstr "Saada e-kiri" - -#. module: smtpclient -#: field:res.company.address,company_id:0 -msgid "Company" -msgstr "Ettevõte" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Set to Draft" -msgstr "Sea mustandiks" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Server already verified!" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#, python-format -msgid "Verification Failed. Please check the Server Configuration!" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error!" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,auth_type:0 -#: field:email.smtpclient,type:0 -msgid "Server Type" -msgstr "Serveri tüüp" - -#. module: smtpclient -#: field:email.smtpclient,from_email:0 -msgid "Email From" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "User Information" -msgstr "Kasutajainfo" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP SMTP server Email Registration Code!" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_report_smtp_server -#: view:report.smtp.server:0 -msgid "Server Statistics" -msgstr "Serveri statistika" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Messages" -msgstr "Sõnumid" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Sale" -msgstr "Müük" - -#. module: smtpclient -#: field:email.headers,value:0 -msgid "Value" -msgstr "Väärtus" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Access Permission" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_headers -msgid "Email Headers" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue:0 -msgid "Queue Option" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Please configure Email Server Messages [Verification / Test]" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Verification failed. Invalid Verification Code!" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_history -msgid "Email History" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.history:0 -msgid "Server History" -msgstr "Serveri ajalugu" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Yahoo!!! Server" -msgstr "Yahoo!!! Server" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,test_email:0 -msgid "Test Message" -msgstr "Test sõnum" - -#. module: smtpclient -#: field:report.smtp.server,server_id:0 -msgid "Server ID" -msgstr "Serveri ID" - -#. module: smtpclient -#: help:email.smtpclient,delete_queue_period:0 -msgid "delete emails/contents from email queue after specified no of days" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,no:0 -msgid "Total No." -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,process_id:0 -msgid "Mail Transport Agent Process" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__user__ for User Name" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,date_create:0 -msgid "Date Create" -msgstr "Loomise aeg" - -#. module: smtpclient -#: field:email.smtpclient,state:0 -msgid "Server Status" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,error:0 -msgid "Last Error" -msgstr "Viimane viga" - -#. module: smtpclient -#: wizard_view:email.sendcode,init:0 -#: wizard_button:email.sendcode,init,send:0 -msgid "Send Code" -msgstr "Saada kood" - -#. module: smtpclient -#: field:email.smtpclient.queue,name:0 -msgid "Subject" -msgstr "Teema" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Read Error!" -msgstr "Lugemise viga!" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Unable to read Server Settings" -msgstr "Ei saa lugeda serveri seadeid" - -#. module: smtpclient -#: field:email.smtpclient,server_statistics:0 -msgid "Statistics" -msgstr "Statistika" - -#. module: smtpclient -#: wizard_view:email.testemail,init:0 -msgid "Test Email" -msgstr "Test e-mail" - -#. module: smtpclient -#: field:email.smtpclient.history,server_id:0 -msgid "Smtp Server" -msgstr "" - -#. module: smtpclient -#: field:res.company,addresses:0 -msgid "Email Addresses" -msgstr "E-posti aadressid" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_history_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server_history -msgid "Email Server History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Waiting" -msgstr "Ootamine" - -#. module: smtpclient -#: help:email.testemail,init,emailto:0 -msgid "Enter the address Email where you want to get the Test Email" -msgstr "Sisestage e-maili aadresskuhu soovite saada test e-maili" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Not Verified" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,email:0 -msgid "Email" -msgstr "E-post" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Sent" -msgstr "Saadetud" - -#. module: smtpclient -#: field:email.smtpclient.history,user_id:0 -msgid "Username" -msgstr "Kasutajanimi" - -#. module: smtpclient -#: field:res.company.address,name:0 -msgid "Address Type" -msgstr "Aadressi tüüp" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Permission" -msgstr "Õigus" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Message with All Headers" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Message Headers" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,report_id:0 -msgid "Report" -msgstr "Aruanne" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Other Information" -msgstr "Muu info" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Configuration" -msgstr "Seadistamine" - -#. module: smtpclient -#: constraint:ir.cron:0 -msgid "Invalid arguments" -msgstr "Vigased argumendid" - -#. module: smtpclient -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Vigane XML vaate arhitektuurile!" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,disclaimers:0 -msgid "Disclaimers" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,name:0 -msgid "Server" -msgstr "Server" - -#. module: smtpclient -#: view:res.company:0 -msgid "SMTP Settings" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,body:0 -msgid "" -"The message text that will be send along with the email which is send " -"through this server" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_testemail -msgid "Send Test Email" -msgstr "Saada test e-mail" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_queue -msgid "Email Queue" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Server Information" -msgstr "" - -#. module: smtpclient -#: help:email.verifycode,init,code:0 -msgid "Enter the verification code thay you get in your verification Email" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_history -msgid "Email Client History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Never Delete Message" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP Test Email!" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,body:0 -#: view:email.smtpclient.queue:0 -#: field:email.smtpclient.queue,serialized_message:0 -msgid "Message" -msgstr "Sõnum" - -#. module: smtpclient -#: field:email.smtpclient,process_id:0 -msgid "MTA Process" -msgstr "" - -#. module: smtpclient -#: field:email.headers,server_id:0 -#: view:email.smtpclient:0 -#: field:email.smtpclient,server:0 -#: field:email.smtpclient.queue,server_id:0 -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server -msgid "SMTP Server" -msgstr "SMTP server" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Google Server" -msgstr "Google Server" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Verified" -msgstr "Verifitseeritud" - -#. module: smtpclient -#: help:email.smtpclient,priority:0 -msgid "" -"Priority between 0 to 10, will be used to define the MTA process priotiry" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,port:0 -msgid "SMTP Port" -msgstr "SMTP Port" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Email TO Address not Defined !" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error !" -msgstr "SMTP Serveri viga!" - -#. module: smtpclient -#: field:email.smtpclient,auth:0 -msgid "Use Auth" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,pstate:0 -msgid "Server Statue" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,user:0 -msgid "User Name" -msgstr "Kasutajanimi" - -#. module: smtpclient -#: field:email.smtpclient,verify_email:0 -msgid "Verify Message" -msgstr "Kinnita sõnum" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient -#: model:ir.module.module,shortdesc:smtpclient.module_meta_information -msgid "Email Client" -msgstr "E-posti klient" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Disclaimers Message" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__code__ for Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Queued" -msgstr "Järjekorras" - -#. module: smtpclient -#: field:email.smtpclient.history,date_create:0 -#: field:email.smtpclient.queue,date_create:0 -msgid "Date" -msgstr "Kuupäev" - -#. module: smtpclient -#: field:email.smtpclient.queue,cc:0 -msgid "CC to" -msgstr "" - -#. module: smtpclient -#: model:email.smtpclient,verify_email:smtpclient.email_smtpclient_sendmailserver0 -msgid "" -"Verification Message. This is the code\n" -"__code__ \n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"Created by user __user__" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_queue_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server_queue -msgid "Message Queue" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Default" -msgstr "Vaikimisi" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete Content After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "You have no permission to access SMTP Server : %s " -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,active:0 -msgid "Active" -msgstr "Aktiivne" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_queue -msgid "Message Queus" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#: code:addons/smtpclient/wizard/verifycode.py:0 -#: view:email.smtpclient.queue:0 -#: selection:email.smtpclient.queue,state:0 -#, python-format -msgid "Error" -msgstr "Viga" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server Error!" -msgstr "Serveri viga!" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Clear All After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Please verify Email Server, without verification you can not send Email(s)." -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,history_line:0 -#: field:report.smtp.server,history:0 -msgid "History" -msgstr "Ajalugu" - -#. module: smtpclient -#: field:email.smtpclient.queue,priority:0 -msgid "Message Priority" -msgstr "Sõnumi prioriteet" - -#. module: smtpclient -#: field:ir.actions.server,file_ids:0 -msgid "Attachments" -msgstr "Manused" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__name__ for Customer Name" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "General" -msgstr "Üldine" - -#. module: smtpclient -#: field:email.headers,key:0 -msgid "Header" -msgstr "Päis" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Verification Message. This is the code\n" -"\n" -"__code__\n" -"\n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"\n" -"Created by user __user__" -msgstr "" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Invoice" -msgstr "Arve" - -#. module: smtpclient -#: wizard_view:email.verifycode,init:0 -#: wizard_button:email.verifycode,init,check:0 -msgid "Verify Code" -msgstr "Kinnita kood" - -#. module: smtpclient -#: wizard_button:email.sendcode,init,end:0 -#: wizard_button:email.testemail,init,end:0 -#: wizard_button:email.verifycode,init,end:0 -msgid "Cancel" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue_period:0 -msgid "Delete after" -msgstr "Kustuta hiljem" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server is not Verified, Please Verify the Server !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,resource_id:0 -msgid "Resource ID" -msgstr "Allika ID" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Data Error !" -msgstr "SMTP andmeviga !" - -#. module: smtpclient -#: constraint:ir.model:0 -msgid "" -"The Object name must start with x_ and not contain any special character !" -msgstr "" -"Objekti nimi peab algama x_'ga ja ei tohi sisaldada ühtegi erisümbolit !" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete when Email Sent" -msgstr "Kustuta, kui e-mail on saadetud" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Account" -msgstr "Konto" - -#. module: smtpclient -#: model:ir.module.module,description:smtpclient.module_meta_information -msgid "" -"Email Client module that provides:\n" -" Sending Email\n" -" Use Multiple Server\n" -" Multi Threading\n" -" Multi Attachment\n" -" " -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Stock" -msgstr "Laoseis" - -#. module: smtpclient -#: field:email.smtpclient.history,name:0 -msgid "Description" -msgstr "Kirjeldus" - -#. module: smtpclient -#: field:email.smtpclient,code:0 -#: wizard_field:email.verifycode,init,code:0 -msgid "Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Stop" -msgstr "Peata" - -#. module: smtpclient -#: field:email.smtpclient.queue,body:0 -msgid "Email Text" -msgstr "E-maili tekst" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Delivery" -msgstr "Edastamine" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Running" -msgstr "Töös" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Last Error occured" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Waiting for Verification" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,password:0 -msgid "Password" -msgstr "Salasõna" - -#. module: smtpclient -#: field:email.smtpclient,users_id:0 -msgid "Users Allowed" -msgstr "Lubatud kasutajad" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#, python-format -msgid "Verification Code Already Generated !" -msgstr "" - -#. module: smtpclient -#: wizard_field:email.sendcode,init,emailto:0 -#: field:email.smtpclient,email:0 -#: wizard_field:email.testemail,init,emailto:0 -#: view:res.company:0 -#: field:res.company.address,email:0 -msgid "Email Address" -msgstr "E-posti aadress" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Verification Message" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Stop Server" -msgstr "" - -#. module: smtpclient -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server -msgid "Email Servers" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_sendcode -msgid "Send Verification Code" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,model:0 -msgid "Model" -msgstr "Mudel" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_tree -#: field:ir.actions.server,email_server:0 -msgid "Email Server" -msgstr "E-maili server" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Permission Error!" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_res_company_address -msgid "res.company.address" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,state:0 -msgid "Message Status" -msgstr "Sõnumi olek" diff --git a/addons/smtpclient/i18n/fr.po b/addons/smtpclient/i18n/fr.po deleted file mode 100644 index 77dd3aaf5f5..00000000000 --- a/addons/smtpclient/i18n/fr.po +++ /dev/null @@ -1,871 +0,0 @@ -# French translation for openobject-addons -# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-11-26 06:00+0000\n" -"PO-Revision-Date: 2010-05-22 09:14+0000\n" -"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \n" -"Language-Team: French \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-22 04:20+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: smtpclient -#: field:email.smtpclient.queue,bcc:0 -msgid "BCC to" -msgstr "Copie cachée à" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__number__ for Invoice / Sales Number" -msgstr "__number__ pour la facture / Numéro de vente" - -#. module: smtpclient -#: field:email.smtpclient,ssl:0 -msgid "Use SSL?" -msgstr "Utiliser SSL?" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Start Server" -msgstr "Démarrer le serveur" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_verifycode -msgid "Verify Server" -msgstr "Vérifier le serveur" - -#. module: smtpclient -#: field:email.smtpclient,priority:0 -msgid "Server Priority" -msgstr "Priorité du serveur" - -#. module: smtpclient -#: help:email.sendcode,init,emailto:0 -msgid "Enter the address Email where you want to get the Verification Code" -msgstr "" -"Saisir l'adresse email à laquelle vous voulez envoyer le code de vérification" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Other Mail Servers" -msgstr "Autres serveurs de courrier" - -#. module: smtpclient -#: constraint:ir.actions.act_window:0 -msgid "Invalid model name in the action definition." -msgstr "Nom de modèle invalide pour la définition de l'action" - -#. module: smtpclient -#: field:email.smtpclient.queue,to:0 -msgid "Mail to" -msgstr "Envoyer par email à" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Message Error!" -msgstr "Erreur de message!" - -#. module: smtpclient -#: field:email.smtpclient,name:0 -msgid "Server Name" -msgstr "Nom du serveur" - -#. module: smtpclient -#: field:email.smtpclient,header_ids:0 -msgid "Default Headers" -msgstr "Entêtes de courrier par défaut" - -#. module: smtpclient -#: wizard_button:email.testemail,init,send:0 -msgid "Send Email" -msgstr "Envoyer un email" - -#. module: smtpclient -#: field:res.company.address,company_id:0 -msgid "Company" -msgstr "Société" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Set to Draft" -msgstr "Mettre en brouillon" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Server already verified!" -msgstr "Serveur déjà vérifié!" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#, python-format -msgid "Verification Failed. Please check the Server Configuration!" -msgstr "" -"Échec de vérification. Merci de vérifier le serveur de configuration!" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error!" -msgstr "Erreur du serveur SMTP!" - -#. module: smtpclient -#: field:email.smtpclient,auth_type:0 -#: field:email.smtpclient,type:0 -msgid "Server Type" -msgstr "Type de serveur" - -#. module: smtpclient -#: field:email.smtpclient,from_email:0 -msgid "Email From" -msgstr "Email de" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "User Information" -msgstr "Information utilisateur" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP SMTP server Email Registration Code!" -msgstr "Code d'enregistrement email du serveur SMTP OpenERP!" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_report_smtp_server -#: view:report.smtp.server:0 -msgid "Server Statistics" -msgstr "Statistiques du serveur" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Messages" -msgstr "Messages" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Sale" -msgstr "Vente" - -#. module: smtpclient -#: field:email.headers,value:0 -msgid "Value" -msgstr "Valeur" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Access Permission" -msgstr "Permission d'accès" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_headers -msgid "Email Headers" -msgstr "Entêtes de courrier" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue:0 -msgid "Queue Option" -msgstr "Option de file d'attente" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Please configure Email Server Messages [Verification / Test]" -msgstr "" -"Merci de configurer les messages du serveur email [Vérification / Test]" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Verification failed. Invalid Verification Code!" -msgstr "Échec de vérification. Code de vérification non valide!" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_history -msgid "Email History" -msgstr "Historique des emails" - -#. module: smtpclient -#: view:email.smtpclient.history:0 -msgid "Server History" -msgstr "Historique du serveur" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Yahoo!!! Server" -msgstr "Serveur Yahoo!" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,test_email:0 -msgid "Test Message" -msgstr "Message de test" - -#. module: smtpclient -#: field:report.smtp.server,server_id:0 -msgid "Server ID" -msgstr "ID du serveur" - -#. module: smtpclient -#: help:email.smtpclient,delete_queue_period:0 -msgid "delete emails/contents from email queue after specified no of days" -msgstr "" -"effacer les emails/contenu placé en attente après le nombre de jours spécifié" - -#. module: smtpclient -#: field:report.smtp.server,no:0 -msgid "Total No." -msgstr "Nombre total" - -#. module: smtpclient -#: help:email.smtpclient,process_id:0 -msgid "Mail Transport Agent Process" -msgstr "Processus d'agent de transport email" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__user__ for User Name" -msgstr "__user__ pour le nom d'utilisateur" - -#. module: smtpclient -#: field:email.smtpclient,date_create:0 -msgid "Date Create" -msgstr "Date de création" - -#. module: smtpclient -#: field:email.smtpclient,state:0 -msgid "Server Status" -msgstr "État du serveur" - -#. module: smtpclient -#: field:email.smtpclient.queue,error:0 -msgid "Last Error" -msgstr "Dernière erreur" - -#. module: smtpclient -#: wizard_view:email.sendcode,init:0 -#: wizard_button:email.sendcode,init,send:0 -msgid "Send Code" -msgstr "Envoyer un code" - -#. module: smtpclient -#: field:email.smtpclient.queue,name:0 -msgid "Subject" -msgstr "Sujet" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Read Error!" -msgstr "Erreur de lecture!" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Unable to read Server Settings" -msgstr "Impossible de lire les paramètres du serveur" - -#. module: smtpclient -#: field:email.smtpclient,server_statistics:0 -msgid "Statistics" -msgstr "Statistiques" - -#. module: smtpclient -#: wizard_view:email.testemail,init:0 -msgid "Test Email" -msgstr "Email de test" - -#. module: smtpclient -#: field:email.smtpclient.history,server_id:0 -msgid "Smtp Server" -msgstr "Serveur SMTP" - -#. module: smtpclient -#: field:res.company,addresses:0 -msgid "Email Addresses" -msgstr "Adresses email" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_history_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server_history -msgid "Email Server History" -msgstr "Historique du serveur email" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Waiting" -msgstr "En attente" - -#. module: smtpclient -#: help:email.testemail,init,emailto:0 -msgid "Enter the address Email where you want to get the Test Email" -msgstr "" -"Saisir l'adresse email à laquelle vous voulez recevoir l'email de test" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Not Verified" -msgstr "Non vérifié" - -#. module: smtpclient -#: field:email.smtpclient.history,email:0 -msgid "Email" -msgstr "Email" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Sent" -msgstr "Envoyé" - -#. module: smtpclient -#: field:email.smtpclient.history,user_id:0 -msgid "Username" -msgstr "Nom d'utilisateur" - -#. module: smtpclient -#: field:res.company.address,name:0 -msgid "Address Type" -msgstr "Type d'adresse" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Permission" -msgstr "Permission" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Message with All Headers" -msgstr "Message avec entêtes complètes" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Message Headers" -msgstr "Entêtes de message" - -#. module: smtpclient -#: field:ir.actions.server,report_id:0 -msgid "Report" -msgstr "Rapport" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Other Information" -msgstr "Autre information" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Configuration" -msgstr "Configuration" - -#. module: smtpclient -#: constraint:ir.cron:0 -msgid "Invalid arguments" -msgstr "Paramètres non valides" - -#. module: smtpclient -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML non valide pour l'architecture de la vue !" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,disclaimers:0 -msgid "Disclaimers" -msgstr "Avertissement de responsabilité limitée" - -#. module: smtpclient -#: field:report.smtp.server,name:0 -msgid "Server" -msgstr "Serveur" - -#. module: smtpclient -#: view:res.company:0 -msgid "SMTP Settings" -msgstr "Paramètres SMTP" - -#. module: smtpclient -#: help:email.smtpclient,body:0 -msgid "" -"The message text that will be send along with the email which is send " -"through this server" -msgstr "Le message texte qui sera envoyé avec l'email envoyé par ce serveur" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_testemail -msgid "Send Test Email" -msgstr "Envoyer email de test" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_queue -msgid "Email Queue" -msgstr "File d'attente email" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Server Information" -msgstr "Information sur le serveur" - -#. module: smtpclient -#: help:email.verifycode,init,code:0 -msgid "Enter the verification code thay you get in your verification Email" -msgstr "" -"Saisir le code de vérification que vous avez reçu dans votre email de " -"vérification" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_history -msgid "Email Client History" -msgstr "Historique du client email" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Never Delete Message" -msgstr "Ne jamais effacer le message" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP Test Email!" -msgstr "Email de test OpenERP!" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,body:0 -#: view:email.smtpclient.queue:0 -#: field:email.smtpclient.queue,serialized_message:0 -msgid "Message" -msgstr "Message" - -#. module: smtpclient -#: field:email.smtpclient,process_id:0 -msgid "MTA Process" -msgstr "Processus MTA" - -#. module: smtpclient -#: field:email.headers,server_id:0 -#: view:email.smtpclient:0 -#: field:email.smtpclient,server:0 -#: field:email.smtpclient.queue,server_id:0 -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server -msgid "SMTP Server" -msgstr "Serveur SMTP" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Google Server" -msgstr "Serveur Google" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Verified" -msgstr "Vérifié" - -#. module: smtpclient -#: help:email.smtpclient,priority:0 -msgid "" -"Priority between 0 to 10, will be used to define the MTA process priotiry" -msgstr "" -"Priorité de 0 à 10, utilisé pour définir les priorités des processus MTA" - -#. module: smtpclient -#: field:email.smtpclient,port:0 -msgid "SMTP Port" -msgstr "Port SMTP" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Email TO Address not Defined !" -msgstr "Adresse d'envoi non définie!" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error !" -msgstr "Erreur de serveur SMTP!" - -#. module: smtpclient -#: field:email.smtpclient,auth:0 -msgid "Use Auth" -msgstr "Utiliser l'authentification" - -#. module: smtpclient -#: field:email.smtpclient,pstate:0 -msgid "Server Statue" -msgstr "État du serveur" - -#. module: smtpclient -#: field:email.smtpclient,user:0 -msgid "User Name" -msgstr "Nom d'utilisateur" - -#. module: smtpclient -#: field:email.smtpclient,verify_email:0 -msgid "Verify Message" -msgstr "Vérifiez le message" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient -#: model:ir.module.module,shortdesc:smtpclient.module_meta_information -msgid "Email Client" -msgstr "Client email" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Disclaimers Message" -msgstr "Message sur la limitation de garantie" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__code__ for Verification Code" -msgstr "__code__ pour le Code de Vérification" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Queued" -msgstr "File d'attente" - -#. module: smtpclient -#: field:email.smtpclient.history,date_create:0 -#: field:email.smtpclient.queue,date_create:0 -msgid "Date" -msgstr "Date" - -#. module: smtpclient -#: field:email.smtpclient.queue,cc:0 -msgid "CC to" -msgstr "En copie à" - -#. module: smtpclient -#: model:email.smtpclient,verify_email:smtpclient.email_smtpclient_sendmailserver0 -msgid "" -"Verification Message. This is the code\n" -"__code__ \n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"Created by user __user__" -msgstr "" -"Message de vérification. Ceci est le code\n" -"__code__ \n" -"que vous devez saisir dans le serveur email OpenERP (assistant Vérification " -"du Serveur).\n" -"Créé par utilisateur __utilisateur__" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_queue_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server_queue -msgid "Message Queue" -msgstr "File d'attente des messages" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Default" -msgstr "Défaut" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete Content After" -msgstr "Effacer le contenu après" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "You have no permission to access SMTP Server : %s " -msgstr "Vous n'avez aucune permission d'accès au serveur SMTP : %s " - -#. module: smtpclient -#: field:email.smtpclient,active:0 -msgid "Active" -msgstr "Actif" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_queue -msgid "Message Queus" -msgstr "File d'attente des messages" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#: code:addons/smtpclient/wizard/verifycode.py:0 -#: view:email.smtpclient.queue:0 -#: selection:email.smtpclient.queue,state:0 -#, python-format -msgid "Error" -msgstr "Erreur" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server Error!" -msgstr "Erreur serveur !" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Clear All After" -msgstr "Tout effacer après" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Please verify Email Server, without verification you can not send Email(s)." -msgstr "" -"Merci de vérifier votre serveur email, sans vérification vous ne pouvez pas " -"envoyer d'email(s)." - -#. module: smtpclient -#: field:email.smtpclient,history_line:0 -#: field:report.smtp.server,history:0 -msgid "History" -msgstr "Historique" - -#. module: smtpclient -#: field:email.smtpclient.queue,priority:0 -msgid "Message Priority" -msgstr "Priorité du message" - -#. module: smtpclient -#: field:ir.actions.server,file_ids:0 -msgid "Attachments" -msgstr "Fichiers attachés" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__name__ for Customer Name" -msgstr "__name__ pour le Nom du Client" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "General" -msgstr "Général" - -#. module: smtpclient -#: field:email.headers,key:0 -msgid "Header" -msgstr "Entête" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Verification Message. This is the code\n" -"\n" -"__code__\n" -"\n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"\n" -"Created by user __user__" -msgstr "" -"Message de vérification. Voici le code\n" -"\n" -"__code__\n" -"\n" -"Vous devez le copier dans le serveur de couriel d'Open ERP (Assistant de " -"vérification).\n" -"\n" -"Créer par l'utilisateur __user__" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Invoice" -msgstr "Facture" - -#. module: smtpclient -#: wizard_view:email.verifycode,init:0 -#: wizard_button:email.verifycode,init,check:0 -msgid "Verify Code" -msgstr "Code de vérification" - -#. module: smtpclient -#: wizard_button:email.sendcode,init,end:0 -#: wizard_button:email.testemail,init,end:0 -#: wizard_button:email.verifycode,init,end:0 -msgid "Cancel" -msgstr "Annuler" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue_period:0 -msgid "Delete after" -msgstr "Effacer après" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server is not Verified, Please Verify the Server !" -msgstr "Le serveur n'est pas vérifié, merci de vérifier le serveur!" - -#. module: smtpclient -#: field:email.smtpclient.history,resource_id:0 -msgid "Resource ID" -msgstr "ID de la ressource" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Data Error !" -msgstr "Erreur de données SMTP !" - -#. module: smtpclient -#: constraint:ir.model:0 -msgid "" -"The Object name must start with x_ and not contain any special character !" -msgstr "" -"Le nom de l'objet doit commencer par x_ et ne doit pas contenir de " -"caractères spéciaux !" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete when Email Sent" -msgstr "Effacer une fois l'email envoyé" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Account" -msgstr "Compte" - -#. module: smtpclient -#: model:ir.module.module,description:smtpclient.module_meta_information -msgid "" -"Email Client module that provides:\n" -" Sending Email\n" -" Use Multiple Server\n" -" Multi Threading\n" -" Multi Attachment\n" -" " -msgstr "" -"Module de client email qui permet d' :\n" -" Envoyer des emails\n" -" Utiliser plusieurs serveurs\n" -" Utiliser plusieurs files d'envoi (multi-threading)\n" -" Envoyer plusieurs fichiers attachés\n" -" " - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Stock" -msgstr "Stock" - -#. module: smtpclient -#: field:email.smtpclient.history,name:0 -msgid "Description" -msgstr "Description" - -#. module: smtpclient -#: field:email.smtpclient,code:0 -#: wizard_field:email.verifycode,init,code:0 -msgid "Verification Code" -msgstr "Code de vérifcation" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Stop" -msgstr "Arrêter" - -#. module: smtpclient -#: field:email.smtpclient.queue,body:0 -msgid "Email Text" -msgstr "Texte de l'email" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Delivery" -msgstr "Livraison" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Running" -msgstr "En cours" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Last Error occured" -msgstr "Dernière erreur apparu" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Waiting for Verification" -msgstr "En attente de vérification" - -#. module: smtpclient -#: field:email.smtpclient,password:0 -msgid "Password" -msgstr "Mot de passe" - -#. module: smtpclient -#: field:email.smtpclient,users_id:0 -msgid "Users Allowed" -msgstr "Utilisateurs authorisés" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#, python-format -msgid "Verification Code Already Generated !" -msgstr "Génération du code de vérification déjà effectuée!" - -#. module: smtpclient -#: wizard_field:email.sendcode,init,emailto:0 -#: field:email.smtpclient,email:0 -#: wizard_field:email.testemail,init,emailto:0 -#: view:res.company:0 -#: field:res.company.address,email:0 -msgid "Email Address" -msgstr "Adresse courriel" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Verification Message" -msgstr "Message de vérification" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Stop Server" -msgstr "Arrêter le serveur" - -#. module: smtpclient -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server -msgid "Email Servers" -msgstr "Serveurs email" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_sendcode -msgid "Send Verification Code" -msgstr "Envoyer le code de vérification" - -#. module: smtpclient -#: field:email.smtpclient.history,model:0 -msgid "Model" -msgstr "Modèle" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_tree -#: field:ir.actions.server,email_server:0 -msgid "Email Server" -msgstr "Serveur de couriel" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Permission Error!" -msgstr "Erreur de permission !" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_res_company_address -msgid "res.company.address" -msgstr "res.company.address" - -#. module: smtpclient -#: field:email.smtpclient.queue,state:0 -msgid "Message Status" -msgstr "État du message" diff --git a/addons/smtpclient/i18n/zh_CN.po b/addons/smtpclient/i18n/zh_CN.po deleted file mode 100644 index 8361e59116a..00000000000 --- a/addons/smtpclient/i18n/zh_CN.po +++ /dev/null @@ -1,840 +0,0 @@ -# Chinese (Simplified) translation for openobject-addons -# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR , 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2009-11-26 06:00+0000\n" -"PO-Revision-Date: 2010-05-15 06:34+0000\n" -"Last-Translator: Wei \"oldrev\" Li \n" -"Language-Team: Chinese (Simplified) \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-22 04:20+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: smtpclient -#: field:email.smtpclient.queue,bcc:0 -msgid "BCC to" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__number__ for Invoice / Sales Number" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,ssl:0 -msgid "Use SSL?" -msgstr "使用 SSL?" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Start Server" -msgstr "启动服务器" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_verifycode -msgid "Verify Server" -msgstr "校验服务器" - -#. module: smtpclient -#: field:email.smtpclient,priority:0 -msgid "Server Priority" -msgstr "服务器优先级" - -#. module: smtpclient -#: help:email.sendcode,init,emailto:0 -msgid "Enter the address Email where you want to get the Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Other Mail Servers" -msgstr "其他的邮件服务器" - -#. module: smtpclient -#: constraint:ir.actions.act_window:0 -msgid "Invalid model name in the action definition." -msgstr "在动作定义中使用了无效的模快名。" - -#. module: smtpclient -#: field:email.smtpclient.queue,to:0 -msgid "Mail to" -msgstr "致" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Message Error!" -msgstr "邮件错误!" - -#. module: smtpclient -#: field:email.smtpclient,name:0 -msgid "Server Name" -msgstr "服务器名称" - -#. module: smtpclient -#: field:email.smtpclient,header_ids:0 -msgid "Default Headers" -msgstr "缺省邮件头" - -#. module: smtpclient -#: wizard_button:email.testemail,init,send:0 -msgid "Send Email" -msgstr "发送邮件" - -#. module: smtpclient -#: field:res.company.address,company_id:0 -msgid "Company" -msgstr "公司" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Set to Draft" -msgstr "设为草稿" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Server already verified!" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#, python-format -msgid "Verification Failed. Please check the Server Configuration!" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error!" -msgstr "SMTP 服务器错误!" - -#. module: smtpclient -#: field:email.smtpclient,auth_type:0 -#: field:email.smtpclient,type:0 -msgid "Server Type" -msgstr "服务器类型" - -#. module: smtpclient -#: field:email.smtpclient,from_email:0 -msgid "Email From" -msgstr "发件人" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "User Information" -msgstr "用户信息" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP SMTP server Email Registration Code!" -msgstr "OpenERP SMTP 服务器电子邮件注册码" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_report_smtp_server -#: view:report.smtp.server:0 -msgid "Server Statistics" -msgstr "服务器统计" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Messages" -msgstr "邮件列表" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Sale" -msgstr "销售" - -#. module: smtpclient -#: field:email.headers,value:0 -msgid "Value" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Access Permission" -msgstr "访问权限" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_headers -msgid "Email Headers" -msgstr "邮件头" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue:0 -msgid "Queue Option" -msgstr "队列选项" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Please configure Email Server Messages [Verification / Test]" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/verifycode.py:0 -#, python-format -msgid "Verification failed. Invalid Verification Code!" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_history -msgid "Email History" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.history:0 -msgid "Server History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Yahoo!!! Server" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,test_email:0 -msgid "Test Message" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,server_id:0 -msgid "Server ID" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,delete_queue_period:0 -msgid "delete emails/contents from email queue after specified no of days" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,no:0 -msgid "Total No." -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,process_id:0 -msgid "Mail Transport Agent Process" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__user__ for User Name" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,date_create:0 -msgid "Date Create" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,state:0 -msgid "Server Status" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,error:0 -msgid "Last Error" -msgstr "" - -#. module: smtpclient -#: wizard_view:email.sendcode,init:0 -#: wizard_button:email.sendcode,init,send:0 -msgid "Send Code" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,name:0 -msgid "Subject" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Read Error!" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Unable to read Server Settings" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,server_statistics:0 -msgid "Statistics" -msgstr "" - -#. module: smtpclient -#: wizard_view:email.testemail,init:0 -msgid "Test Email" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,server_id:0 -msgid "Smtp Server" -msgstr "" - -#. module: smtpclient -#: field:res.company,addresses:0 -msgid "Email Addresses" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_history_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server_history -msgid "Email Server History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Waiting" -msgstr "" - -#. module: smtpclient -#: help:email.testemail,init,emailto:0 -msgid "Enter the address Email where you want to get the Test Email" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Not Verified" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,email:0 -msgid "Email" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Sent" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,user_id:0 -msgid "Username" -msgstr "" - -#. module: smtpclient -#: field:res.company.address,name:0 -msgid "Address Type" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Permission" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Message with All Headers" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Message Headers" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,report_id:0 -msgid "Report" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Other Information" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Configuration" -msgstr "" - -#. module: smtpclient -#: constraint:ir.cron:0 -msgid "Invalid arguments" -msgstr "" - -#. module: smtpclient -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,disclaimers:0 -msgid "Disclaimers" -msgstr "" - -#. module: smtpclient -#: field:report.smtp.server,name:0 -msgid "Server" -msgstr "" - -#. module: smtpclient -#: view:res.company:0 -msgid "SMTP Settings" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,body:0 -msgid "" -"The message text that will be send along with the email which is send " -"through this server" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_testemail -msgid "Send Test Email" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_queue -msgid "Email Queue" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Server Information" -msgstr "" - -#. module: smtpclient -#: help:email.verifycode,init,code:0 -msgid "Enter the verification code thay you get in your verification Email" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient_history -msgid "Email Client History" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Never Delete Message" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "OpenERP Test Email!" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -#: field:email.smtpclient,body:0 -#: view:email.smtpclient.queue:0 -#: field:email.smtpclient.queue,serialized_message:0 -msgid "Message" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,process_id:0 -msgid "MTA Process" -msgstr "" - -#. module: smtpclient -#: field:email.headers,server_id:0 -#: view:email.smtpclient:0 -#: field:email.smtpclient,server:0 -#: field:email.smtpclient.queue,server_id:0 -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server -msgid "SMTP Server" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,auth_type:0 -msgid "Google Server" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Verified" -msgstr "" - -#. module: smtpclient -#: help:email.smtpclient,priority:0 -msgid "" -"Priority between 0 to 10, will be used to define the MTA process priotiry" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,port:0 -msgid "SMTP Port" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Email TO Address not Defined !" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Server Error !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,auth:0 -msgid "Use Auth" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,pstate:0 -msgid "Server Statue" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,user:0 -msgid "User Name" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,verify_email:0 -msgid "Verify Message" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_email_smtpclient -#: model:ir.module.module,shortdesc:smtpclient.module_meta_information -msgid "Email Client" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Disclaimers Message" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__code__ for Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient.queue,state:0 -msgid "Queued" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,date_create:0 -#: field:email.smtpclient.queue,date_create:0 -msgid "Date" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,cc:0 -msgid "CC to" -msgstr "" - -#. module: smtpclient -#: model:email.smtpclient,verify_email:smtpclient.email_smtpclient_sendmailserver0 -msgid "" -"Verification Message. This is the code\n" -"__code__ \n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"Created by user __user__" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_queue_tree -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server_queue -msgid "Message Queue" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -#: selection:res.company.address,name:0 -msgid "Default" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete Content After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "You have no permission to access SMTP Server : %s " -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,active:0 -msgid "Active" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_queue -msgid "Message Queus" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#: code:addons/smtpclient/wizard/testemail.py:0 -#: code:addons/smtpclient/wizard/verifycode.py:0 -#: view:email.smtpclient.queue:0 -#: selection:email.smtpclient.queue,state:0 -#, python-format -msgid "Error" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server Error!" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Clear All After" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Please verify Email Server, without verification you can not send Email(s)." -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,history_line:0 -#: field:report.smtp.server,history:0 -msgid "History" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,priority:0 -msgid "Message Priority" -msgstr "" - -#. module: smtpclient -#: field:ir.actions.server,file_ids:0 -msgid "Attachments" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "__name__ for Customer Name" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "General" -msgstr "" - -#. module: smtpclient -#: field:email.headers,key:0 -msgid "Header" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "" -"Verification Message. This is the code\n" -"\n" -"__code__\n" -"\n" -"you must copy in the OpenERP Email Server (Verify Server wizard).\n" -"\n" -"Created by user __user__" -msgstr "" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Invoice" -msgstr "" - -#. module: smtpclient -#: wizard_view:email.verifycode,init:0 -#: wizard_button:email.verifycode,init,check:0 -msgid "Verify Code" -msgstr "" - -#. module: smtpclient -#: wizard_button:email.sendcode,init,end:0 -#: wizard_button:email.testemail,init,end:0 -#: wizard_button:email.verifycode,init,end:0 -msgid "Cancel" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,delete_queue_period:0 -msgid "Delete after" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Server is not Verified, Please Verify the Server !" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,resource_id:0 -msgid "Resource ID" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "SMTP Data Error !" -msgstr "" - -#. module: smtpclient -#: constraint:ir.model:0 -msgid "" -"The Object name must start with x_ and not contain any special character !" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,delete_queue:0 -msgid "Delete when Email Sent" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Account" -msgstr "" - -#. module: smtpclient -#: model:ir.module.module,description:smtpclient.module_meta_information -msgid "" -"Email Client module that provides:\n" -" Sending Email\n" -" Use Multiple Server\n" -" Multi Threading\n" -" Multi Attachment\n" -" " -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,type:0 -msgid "Stock" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,name:0 -msgid "Description" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,code:0 -#: wizard_field:email.verifycode,init,code:0 -msgid "Verification Code" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Stop" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,body:0 -msgid "Email Text" -msgstr "" - -#. module: smtpclient -#: selection:res.company.address,name:0 -msgid "Delivery" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,pstate:0 -msgid "Running" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient.queue:0 -msgid "Last Error occured" -msgstr "" - -#. module: smtpclient -#: selection:email.smtpclient,state:0 -msgid "Waiting for Verification" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,password:0 -msgid "Password" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient,users_id:0 -msgid "Users Allowed" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/wizard/sendcode.py:0 -#, python-format -msgid "Verification Code Already Generated !" -msgstr "" - -#. module: smtpclient -#: wizard_field:email.sendcode,init,emailto:0 -#: field:email.smtpclient,email:0 -#: wizard_field:email.testemail,init,emailto:0 -#: view:res.company:0 -#: field:res.company.address,email:0 -msgid "Email Address" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Verification Message" -msgstr "" - -#. module: smtpclient -#: view:email.smtpclient:0 -msgid "Stop Server" -msgstr "" - -#. module: smtpclient -#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server -msgid "Email Servers" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.wizard,name:smtpclient.wizard_email_sendcode -msgid "Send Verification Code" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.history,model:0 -msgid "Model" -msgstr "" - -#. module: smtpclient -#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_tree -#: field:ir.actions.server,email_server:0 -msgid "Email Server" -msgstr "" - -#. module: smtpclient -#: code:addons/smtpclient/smtpclient.py:0 -#, python-format -msgid "Permission Error!" -msgstr "" - -#. module: smtpclient -#: model:ir.model,name:smtpclient.model_res_company_address -msgid "res.company.address" -msgstr "" - -#. module: smtpclient -#: field:email.smtpclient.queue,state:0 -msgid "Message Status" -msgstr "" From f63415abba53ca9e70a36da7085e258b2d83b830 Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Wed, 23 Jun 2010 17:17:40 +0530 Subject: [PATCH 18/34] [FIX]: fix a problem, now Journal Items will display all columns on first view load bzr revid: mga@tinyerp.com-20100623114740-d2gq04riomwvj5bw --- addons/account/account_move_line.py | 6 +++--- addons/account/account_view.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index fd10dff1c95..272933018ad 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -790,7 +790,7 @@ class account_move_line(osv.osv): result = super(osv.osv, self).fields_view_get(cr, uid, view_id,view_type,context,toolbar=toolbar, submenu=submenu) if view_type != 'tree': return result - + fld = [] fields = {} flds = [] @@ -800,12 +800,12 @@ class account_move_line(osv.osv): ids = journal_pool.search(cr, uid, []) journals = journal_pool.browse(cr, uid, ids) - all_journal = [] + all_journal = [None] for journal in journals: all_journal.append(journal.id) for field in journal.view_id.columns_id: if not field.field in fields: - fields[field.field] = [journal.id] + fields[field.field] = [None, journal.id] fld.append((field.field, field.sequence)) flds.append(field.field) else: diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index dd0fa276c41..b22ce445f53 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -848,7 +848,7 @@
- + From 7c8fad14205a0d28b3dace5058b022fc0c40a4bf Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 23 Jun 2010 17:37:08 +0200 Subject: [PATCH 19/34] [IMP] marketing campaign statistics bzr revid: fp@tinyerp.com-20100623153708-njpaifwv52fnhssj --- .../report/campaign_analysis.py | 16 +++++++--------- .../report/campaign_analysis_view.xml | 15 +++++++++++++-- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/addons/marketing_campaign/report/campaign_analysis.py b/addons/marketing_campaign/report/campaign_analysis.py index 590abf47fce..4853cb65e2c 100644 --- a/addons/marketing_campaign/report/campaign_analysis.py +++ b/addons/marketing_campaign/report/campaign_analysis.py @@ -26,13 +26,13 @@ class campaign_analysis(osv.osv): #{{{ _description = "Campaign Analysis" _auto = False _rec_name = 'date' - def _total_cost(self, cr, uid, ids, field_name, arg, context={}): - - """ @param cr: the current row, from the database cursor, + """ + @param cr: the current row, from the database cursor, @param uid: the current user’s ID for security checks, @param ids: List of case and section Data’s IDs - @param context: A standard dictionary for contextual values """ + @param context: A standard dictionary for contextual values + """ result = {} for ca_obj in self.browse(cr, uid, ids, context): wi_ids = self.pool.get('marketing.campaign.workitem').search(cr, uid, @@ -41,7 +41,6 @@ class campaign_analysis(osv.osv): #{{{ (ca_obj.campaign_id.fixed_cost / len(wi_ids)) result[ca_obj.id] = total_cost return result - _columns = { 'year': fields.char('Year', size=4, readonly=True), 'month':fields.selection([('01','January'), ('02','February'), @@ -49,7 +48,7 @@ class campaign_analysis(osv.osv): #{{{ ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True), - 'date': fields.datetime('Date', readonly=True), + 'date': fields.date('Date', readonly=True), 'campaign_id': fields.many2one('marketing.campaign', 'Campaign', readonly=True), 'activity_id': fields.many2one('marketing.campaign.activity', 'Activity', @@ -64,10 +63,8 @@ class campaign_analysis(osv.osv): #{{{ 'revenue': fields.float('Revenue',digits=(16,2),readonly=True), 'count' : fields.integer('# of Actions', readonly=True), } - def init(self, cr): tools.drop_view_if_exists(cr, 'campaign_analysis') - cr.execute(""" create or replace view campaign_analysis as ( select @@ -79,6 +76,7 @@ class campaign_analysis(osv.osv): #{{{ wi.activity_id as activity_id, wi.segment_id as segment_id, wi.partner_id as partner_id , + wi.state as state, sum(act.revenue) as revenue, count(*) as count from @@ -87,7 +85,7 @@ class campaign_analysis(osv.osv): #{{{ left join marketing_campaign_segment s on (s.id=wi.segment_id) left join marketing_campaign_activity act on (act.id= wi.activity_id) group by - s.campaign_id,wi.activity_id,wi.segment_id,wi.partner_id, + s.campaign_id,wi.activity_id,wi.segment_id,wi.partner_id,wi.state, wi.date::date ) """) diff --git a/addons/marketing_campaign/report/campaign_analysis_view.xml b/addons/marketing_campaign/report/campaign_analysis_view.xml index 5a622d1364b..fb83e12a225 100644 --- a/addons/marketing_campaign/report/campaign_analysis_view.xml +++ b/addons/marketing_campaign/report/campaign_analysis_view.xml @@ -35,11 +35,20 @@ - + + + + @@ -50,6 +59,8 @@ + + From b1991d21d501face1db8383c99ecd9b9ead145e3 Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Thu, 24 Jun 2010 01:14:06 +0530 Subject: [PATCH 20/34] [IMP]: accounting improvements * account.move * account.move.line * account.invoice * account.voucher * bank statement bzr revid: mga@tinyerp.com-20100623194406-3go72eb7hseiylhb --- addons/account/account_bank_statement.py | 10 +- addons/account/account_invoice_view.xml | 8 +- addons/account/account_report.xml | 2 +- addons/account/account_view.xml | 105 +++++++++++++----- .../process/customer_invoice_process.xml | 8 +- .../process/supplier_invoice_process.xml | 6 +- addons/account_voucher/voucher_report.xml | 4 +- addons/account_voucher/voucher_view.xml | 17 ++- 8 files changed, 112 insertions(+), 48 deletions(-) diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 6de3dabaa28..0e46944a436 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -45,7 +45,7 @@ class account_bank_statement(osv.osv): 'type': 'ir.actions.act_window', 'target': 'new', 'nodestroy': True - } + } def _default_journal_id(self, cr, uid, context={}): if context.get('journal_id', False): @@ -556,9 +556,9 @@ account_bank_statement_reconcile_line() class account_bank_statement_line(osv.osv): - def onchange_partner_id(self, cursor, user, line_id, partner_id, type, currency_id, - context={}): + def onchange_partner_id(self, cursor, user, line_id, partner_id, type, currency_id, context={}): res = {'value': {}} + if not partner_id: return res line = self.browse(cursor, user, line_id) @@ -591,6 +591,10 @@ class account_bank_statement_line(osv.osv): balance = res_currency_obj.compute(cursor, user, company_currency_id, currency_id, balance, context=context) res['value']['amount'] = balance + + if context.get('amount', 0) > 0: + res['value']['amount'] = context.get('amount') + return res def _reconcile_amount(self, cursor, user, ids, name, args, context=None): diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index bceb1b3c857..fc10c58cc8f 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -349,11 +349,15 @@ + + - + + + @@ -363,7 +367,7 @@ - + diff --git a/addons/account/account_report.xml b/addons/account/account_report.xml index 6480178d1ae..fc622d8f0c0 100644 --- a/addons/account/account_report.xml +++ b/addons/account/account_report.xml @@ -34,7 +34,7 @@ string="Taxes Report"/> tree,form
- + + + account.bank.statement.select + account.bank.statement + search + + + + + + + + + + + + + + account.bank.statement.tree account.bank.statement @@ -358,19 +376,20 @@ form
- - - - - - - - -