From e5ee85c74569f6aaaaee62b78d9b6959646546e7 Mon Sep 17 00:00:00 2001 From: Chris Halls Date: Fri, 9 Apr 2010 12:38:23 +0100 Subject: [PATCH 01/19] [FIX] renamed function name db_exist -> exp_db_exist Fixes problem when trying to restore a database. See p_christ@hol.gr-20090829152346-7i1iiqs8skdddamq for the function rename bzr revid: chris.halls@credativ.co.uk-20100409113823-4xuc1bm8zdyfiq32 --- bin/service/web_services.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/service/web_services.py b/bin/service/web_services.py index 4dfdeec1237..308a7aa18a9 100644 --- a/bin/service/web_services.py +++ b/bin/service/web_services.py @@ -217,7 +217,7 @@ class db(netsvc.ExportService): self._set_pg_psw_env_var() - if self.db_exist(db_name): + if self.exp_db_exist(db_name): logger.notifyChannel("web-services", netsvc.LOG_WARNING, 'RESTORE DB: %s already exists' % (db_name,)) raise Exception, "Database already exists" From 9b3771b2f2ab107a16df4b90b4823a6ae767c1c2 Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Sun, 18 Apr 2010 02:29:18 +0530 Subject: [PATCH 02/19] [IMP]: improvement in tools.send_email add missing field `condition` in to the server action bzr revid: mga@tinyerp.com-20100417205918-ifjuddmuvmizkb4b --- bin/addons/base/ir/ir.xml | 1 + bin/tools/misc.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml index 2e589ef361e..3888bebbebb 100644 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -1230,6 +1230,7 @@ + diff --git a/bin/tools/misc.py b/bin/tools/misc.py index 56672047163..7aee1aed1b0 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -466,13 +466,13 @@ def email_send(email_from, email_to, subject, body, email_cc=None, email_bcc=Non msg['X-Generated-By'] = 'OpenERP (http://www.openerp.com)' msg['X-OpenERP-Server-Host'] = socket.gethostname() msg['X-OpenERP-Server-Version'] = release.version - msg['X-Priority'] = priorities.get(priority, '3 (Normal)') # Add dynamic X Header for key, value in x_headers.iteritems(): msg['X-OpenERP-%s' % key] = str(value) - + msg['%s' % key] = str(value) + if openobject_id: msg['Message-Id'] = "<%s-openobject-%s@%s>" % (time.time(), openobject_id, socket.gethostname()) From f449fad81de2c0727d6c4f73167cd041a70fcfde Mon Sep 17 00:00:00 2001 From: Launchpad Code Hosting Date: Sun, 18 Apr 2010 04:49:18 +0100 Subject: [PATCH 03/19] Launchpad automatic translations update. bzr revid: codehost@crowberry-20100418034918-7q3ho5231znybtdj --- bin/addons/base/i18n/hr.po | 4 ++-- bin/addons/base/i18n/ja.po | 4 ++-- bin/addons/base/i18n/sv.po | 4 ++-- bin/addons/base/i18n/uk.po | 4 ++-- bin/addons/base/i18n/zh_CN.po | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bin/addons/base/i18n/hr.po b/bin/addons/base/i18n/hr.po index e0a291b1cd2..cce7a61781c 100644 --- a/bin/addons/base/i18n/hr.po +++ b/bin/addons/base/i18n/hr.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-16 04:25+0000\n" +"PO-Revision-Date: 2010-04-17 06:11+0000\n" "Last-Translator: goranc \n" "Language-Team: openerp-translators\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-17 03:52+0000\n" +"X-Launchpad-Export-Date: 2010-04-18 03:48+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Language: hr\n" diff --git a/bin/addons/base/i18n/ja.po b/bin/addons/base/i18n/ja.po index df3c6f9ab43..6c7afdf6c1a 100644 --- a/bin/addons/base/i18n/ja.po +++ b/bin/addons/base/i18n/ja.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-16 04:27+0000\n" +"PO-Revision-Date: 2010-04-17 06:01+0000\n" "Last-Translator: Harry (Open ERP) \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-17 03:51+0000\n" +"X-Launchpad-Export-Date: 2010-04-18 03:48+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base diff --git a/bin/addons/base/i18n/sv.po b/bin/addons/base/i18n/sv.po index efd91759d40..c1dfea32b12 100644 --- a/bin/addons/base/i18n/sv.po +++ b/bin/addons/base/i18n/sv.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-16 04:48+0000\n" +"PO-Revision-Date: 2010-04-17 06:00+0000\n" "Last-Translator: Anders Wallenquist \n" "Language-Team: <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-17 03:52+0000\n" +"X-Launchpad-Export-Date: 2010-04-18 03:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base diff --git a/bin/addons/base/i18n/uk.po b/bin/addons/base/i18n/uk.po index 969487006fb..2ee9bee6001 100644 --- a/bin/addons/base/i18n/uk.po +++ b/bin/addons/base/i18n/uk.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-16 04:24+0000\n" +"PO-Revision-Date: 2010-04-17 06:12+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-04-17 03:53+0000\n" +"X-Launchpad-Export-Date: 2010-04-18 03:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base diff --git a/bin/addons/base/i18n/zh_CN.po b/bin/addons/base/i18n/zh_CN.po index 48f91c10459..d9bc802d2cb 100644 --- a/bin/addons/base/i18n/zh_CN.po +++ b/bin/addons/base/i18n/zh_CN.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-16 05:56+0000\n" +"PO-Revision-Date: 2010-04-17 05:19+0000\n" "Last-Translator: OpenERP Administrators \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-17 03:53+0000\n" +"X-Launchpad-Export-Date: 2010-04-18 03:49+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base From a285dbba9a1545024e086f9929c4d245d9dc4cd1 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sun, 18 Apr 2010 17:32:04 +0200 Subject: [PATCH 04/19] [IMP] simplified views bzr revid: fp@tinyerp.com-20100418153204-3y5x0i8vwk6oxr6z --- bin/addons/base/res/partner/partner_view.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/addons/base/res/partner/partner_view.xml b/bin/addons/base/res/partner/partner_view.xml index de9a359eba9..ccbd3bc79f7 100644 --- a/bin/addons/base/res/partner/partner_view.xml +++ b/bin/addons/base/res/partner/partner_view.xml @@ -141,7 +141,9 @@ - + - - - 10 + never + done - 1 diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml index 3888bebbebb..6f7b297ddc9 100644 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -106,9 +106,9 @@ - + - + @@ -191,7 +191,9 @@ tree,form - + @@ -434,6 +436,7 @@ @@ -443,8 +446,10 @@ [('parent_id','=',False)] tree - - + Companies ir.actions.act_window @@ -534,7 +539,9 @@ tree - + Roles @@ -914,18 +921,35 @@ + + Translations + ir.translation + search + + + + + + + + + + + Translations ir.translation form
- - - - - - + + + + + +
@@ -945,20 +969,12 @@
- All terms + Translation Terms ir.translation form - - Untranslated terms - ir.translation - form - - ['|',('value', '=', False),('value','=','')] - - + + ir.property.search + ir.property + search + + + + + + + + + ir.property.form ir.property form -
+ - + - +
@@ -22,33 +39,21 @@ ir.property tree - + - + - - Default Properties - ir.actions.act_window - ir.property - form - [('res_id','=',False)] - - - - - - - All Properties + Configuration Parameters ir.actions.act_window ir.property form - - + +
diff --git a/bin/addons/base/res/partner/partner_view.xml b/bin/addons/base/res/partner/partner_view.xml index ccbd3bc79f7..90d3ef1a483 100644 --- a/bin/addons/base/res/partner/partner_view.xml +++ b/bin/addons/base/res/partner/partner_view.xml @@ -320,7 +320,7 @@ - + @@ -552,7 +552,7 @@
- + @@ -567,7 +567,6 @@ - diff --git a/bin/addons/base/res/res_config.py b/bin/addons/base/res/res_config.py index 2885a4059cf..68a5a383cbb 100644 --- a/bin/addons/base/res/res_config.py +++ b/bin/addons/base/res/res_config.py @@ -40,9 +40,7 @@ class res_config_configurable(osv.osv_memory): total = self.pool.get('ir.actions.todo')\ .search_count(cr, uid, [], context) open = self.pool.get('ir.actions.todo')\ - .search_count(cr, uid, [('active','=',True), - ('state','<>','open')], - context) + .search_count(cr, uid, [('state','<>','open')], context) if total: return round(open*100./total) return 100. @@ -58,8 +56,7 @@ class res_config_configurable(osv.osv_memory): todos = self.pool.get('ir.actions.todo') self.logger.notifyChannel('actions', netsvc.LOG_INFO, 'getting next %s' % todos) - active_todos = todos.search(cr, uid, [('state','=','open'), - ('active','=',True)], + active_todos = todos.search(cr, uid, [('state','=','open')], limit=1) if active_todos: return todos.browse(cr, uid, active_todos[0], context=None) @@ -111,6 +108,13 @@ class res_config_configurable(osv.osv_memory): return self.pool.get(current_user_menu.type)\ .read(cr, uid, current_user_menu.id) + def start(self, cr, uid, ids, context=None): + ids2 = self.pool.get('ir.actions.todo').search(cr, uid, [], context=context) + for todo in self.pool.get('ir.actions.todo').browse(cr, uid, ids2, context=context): + if (todo.restart=='always') or (todo.restart=='onskip' and (todo.state in ('skip','cancel'))): + todo.write({'state':'open'}) + return self.next(cr, uid, ids, context) + def next(self, cr, uid, ids, context=None): """ Returns the next todo action to execute (using the default sort order) @@ -183,6 +187,7 @@ class res_config_configurable(osv.osv_memory): next = self.cancel(cr, uid, ids, context=None) if next: return next return self.next(cr, uid, ids, context=context) + res_config_configurable() class res_config_installer(osv.osv_memory): diff --git a/bin/osv/fields.py b/bin/osv/fields.py index 283d1c958b1..93b318efbcf 100644 --- a/bin/osv/fields.py +++ b/bin/osv/fields.py @@ -119,23 +119,23 @@ class boolean(_column): _symbol_f = lambda x: x and 'True' or 'False' _symbol_set = (_symbol_c, _symbol_f) - class integer_big(_column): _type = 'integer_big' _symbol_c = '%s' _symbol_f = lambda x: int(x or 0) _symbol_set = (_symbol_c, _symbol_f) + _symbol_get = lambda self,x: x or 0 class integer(_column): _type = 'integer' _symbol_c = '%s' _symbol_f = lambda x: int(x or 0) _symbol_set = (_symbol_c, _symbol_f) + _symbol_get = lambda self,x: x or 0 class reference(_column): _type = 'reference' - def __init__(self, string, selection, size, **args): _column.__init__(self, string=string, size=size, selection=selection, **args) @@ -173,6 +173,7 @@ class float(_column): _symbol_c = '%s' _symbol_f = lambda x: __builtin__.float(x or 0.0) _symbol_set = (_symbol_c, _symbol_f) + _symbol_get = lambda self,x: x or 0.0 def __init__(self, string='unknown', digits=None, digits_compute=None, **args): _column.__init__(self, string=string, **args) @@ -197,7 +198,6 @@ class datetime(_column): class time(_column): _type = 'time' - class binary(_column): _type = 'binary' _symbol_c = '%s' From 41fa9c92ad42fee8030b114cfebf683b3cdbb97b Mon Sep 17 00:00:00 2001 From: Launchpad Code Hosting Date: Mon, 19 Apr 2010 04:45:37 +0100 Subject: [PATCH 06/19] Launchpad automatic translations update. bzr revid: codehost@crowberry-20100419034537-8xfw0ipbkmcwmp3x --- bin/addons/base/i18n/hr.po | 4 ++-- bin/addons/base/i18n/ja.po | 4 ++-- bin/addons/base/i18n/sv.po | 4 ++-- bin/addons/base/i18n/uk.po | 4 ++-- bin/addons/base/i18n/zh_CN.po | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bin/addons/base/i18n/hr.po b/bin/addons/base/i18n/hr.po index cce7a61781c..48923b9e2ee 100644 --- a/bin/addons/base/i18n/hr.po +++ b/bin/addons/base/i18n/hr.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-17 06:11+0000\n" +"PO-Revision-Date: 2010-04-18 04:18+0000\n" "Last-Translator: goranc \n" "Language-Team: openerp-translators\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-18 03:48+0000\n" +"X-Launchpad-Export-Date: 2010-04-19 03:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Language: hr\n" diff --git a/bin/addons/base/i18n/ja.po b/bin/addons/base/i18n/ja.po index 6c7afdf6c1a..338866f20f4 100644 --- a/bin/addons/base/i18n/ja.po +++ b/bin/addons/base/i18n/ja.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-17 06:01+0000\n" +"PO-Revision-Date: 2010-04-18 04:22+0000\n" "Last-Translator: Harry (Open ERP) \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-18 03:48+0000\n" +"X-Launchpad-Export-Date: 2010-04-19 03:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base diff --git a/bin/addons/base/i18n/sv.po b/bin/addons/base/i18n/sv.po index c1dfea32b12..23d2299062d 100644 --- a/bin/addons/base/i18n/sv.po +++ b/bin/addons/base/i18n/sv.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-17 06:00+0000\n" +"PO-Revision-Date: 2010-04-18 04:21+0000\n" "Last-Translator: Anders Wallenquist \n" "Language-Team: <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-18 03:49+0000\n" +"X-Launchpad-Export-Date: 2010-04-19 03:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base diff --git a/bin/addons/base/i18n/uk.po b/bin/addons/base/i18n/uk.po index 2ee9bee6001..8fb6971dd14 100644 --- a/bin/addons/base/i18n/uk.po +++ b/bin/addons/base/i18n/uk.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-17 06:12+0000\n" +"PO-Revision-Date: 2010-04-18 04:22+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-04-18 03:49+0000\n" +"X-Launchpad-Export-Date: 2010-04-19 03:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base diff --git a/bin/addons/base/i18n/zh_CN.po b/bin/addons/base/i18n/zh_CN.po index d9bc802d2cb..1fbe8134184 100644 --- a/bin/addons/base/i18n/zh_CN.po +++ b/bin/addons/base/i18n/zh_CN.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-04-17 05:19+0000\n" +"PO-Revision-Date: 2010-04-18 04:22+0000\n" "Last-Translator: OpenERP Administrators \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-18 03:49+0000\n" +"X-Launchpad-Export-Date: 2010-04-19 03:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base From 14ecc8dff196b3bdffb094cf1095c8bcca34c4ab Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 19 Apr 2010 09:39:24 +0200 Subject: [PATCH 07/19] [IMP] bugfix read_group, no group_by bzr revid: fp@tinyerp.com-20100419073924-1qkjwp2if61a0iah --- bin/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/osv/orm.py b/bin/osv/orm.py index f860e73cbe9..376fdb024ba 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -2020,7 +2020,7 @@ class orm(orm_template): if val == None:r[fld] = False alldata[r['id']] = r del r['id'] - data = self.read(cr, uid, alldata.keys(), groupby and [groupby] or [], context=context) + data = self.read(cr, uid, alldata.keys(), groupby and [groupby] or ['id'], context=context) today = datetime.date.today() for d in data: if groupby: From df5ee4d8f066c126b50d2b7d01d07f0dcc0296b6 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Mon, 19 Apr 2010 13:00:51 +0200 Subject: [PATCH 08/19] [IMP] preparation for refactoring of tools/netsvc to allow importing openerp as a module bzr revid: odo@openerp.com-20100419110051-kmby8ptd7phne1fr --- bin/tools/config.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/bin/tools/config.py b/bin/tools/config.py index 18e9f61373e..8f1f1ca55ea 100644 --- a/bin/tools/config.py +++ b/bin/tools/config.py @@ -85,14 +85,14 @@ class configmanager(object): } self.misc = {} - - hasSSL = check_ssl() + self.config_file = fname + self.has_ssl = check_ssl() self._LOGLEVELS = dict([(getattr(netsvc, 'LOG_%s' % x), getattr(logging, x)) for x in ('CRITICAL', 'ERROR', 'WARNING', 'INFO', 'TEST', 'DEBUG', 'DEBUG_RPC', 'NOTSET')]) version = "%s %s" % (release.description, release.version) - parser = optparse.OptionParser(version=version) + self.parser = parser = optparse.OptionParser(version=version) parser.add_option("-c", "--config", dest="config", help="specify alternate config file") parser.add_option("-s", "--save", action="store_true", dest="save", default=False, @@ -123,7 +123,7 @@ class configmanager(object): parser.add_option('--price_accuracy', dest='price_accuracy', default='2', help='deprecated since v6.0, replaced by module decimal_precision') parser.add_option('--no-database-list', action="store_false", dest='list_db', default=True, help="disable the ability to return the list of databases") - if hasSSL: + if self.has_ssl: group = optparse.OptionGroup(parser, "SSL Configuration") group.add_option("-S", "--secure", dest="secure", help="launch server over https instead of http") @@ -151,7 +151,7 @@ class configmanager(object): group.add_option('--email-from', dest='email_from', default='', help='specify the SMTP email address for sending email') group.add_option('--smtp', dest='smtp_server', default='', help='specify the SMTP server for sending email') group.add_option('--smtp-port', dest='smtp_port', default='25', help='specify the SMTP port', type="int") - if hasSSL: + if self.has_ssl: group.add_option('--smtp-ssl', dest='smtp_ssl', default='', help='specify the SMTP server support SSL or not') group.add_option('--smtp-user', dest='smtp_user', default='', help='specify the SMTP username for sending email') group.add_option('--smtp-password', dest='smtp_password', default='', help='specify the SMTP password for sending email') @@ -189,7 +189,8 @@ class configmanager(object): action="callback", callback=self._check_addons_path, nargs=1, type="string") parser.add_option_group(group) - (opt, args) = parser.parse_args() + def parse_config(self): + (opt, args) = self.parser.parse_args() def die(cond, msg): if cond: @@ -220,7 +221,8 @@ class configmanager(object): rcfilepath = os.path.expanduser('~/.openerp_serverrc') self.rcfile = os.path.abspath( - fname or opt.config or os.environ.get('OPENERP_SERVER') or rcfilepath) + self.config_file or opt.config \ + or os.environ.get('OPENERP_SERVER') or rcfilepath) self.load() @@ -237,7 +239,7 @@ class configmanager(object): 'netinterface', 'netport', 'db_maxconn', 'import_partial', 'addons_path', 'netrpc', 'xmlrpc', 'syslog', 'without_demo', 'timezone',] - if hasSSL: + if self.has_ssl: keys.extend(['smtp_ssl', 'secure_cert_file', 'secure_pkey_file']) keys.append('secure') @@ -248,7 +250,7 @@ class configmanager(object): keys = ['language', 'translate_out', 'translate_in', 'debug_mode', 'stop_after_init', 'logrotate', 'without_demo', 'netrpc', 'xmlrpc', 'syslog', 'list_db'] - if hasSSL and not self.options['secure']: + if self.has_ssl and not self.options['secure']: keys.append('secure') for arg in keys: @@ -440,7 +442,10 @@ class configmanager(object): config = configmanager() - +# FIXME:following line should be called explicitly by the server +# when it starts, to allow doing 'import tools.config' from +# other python executables without parsing *their* args. +config.parse_config() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 78556c7a19e25699e1206de9e3cc92533fe20f53 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Mon, 19 Apr 2010 13:16:55 +0200 Subject: [PATCH 09/19] [FIX] safety check for missing terp file in modules bzr revid: odo@openerp.com-20100419111655-crp73szug687q57x --- bin/addons/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index 60850c16ff8..d0798614e67 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -336,7 +336,7 @@ def upgrade_graph(graph, cr, module_list, force=None): for module in module_list: mod_path = get_module_path(module) terp_file = get_module_resource(module, '__openerp__.py') - if not os.path.isfile(terp_file): + if not terp_file or not os.path.isfile(terp_file): terp_file = get_module_resource(module, '__terp__.py') if not mod_path or not terp_file: From 1a3b72c8f372c177748335b448f52da08833ebc8 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Mon, 19 Apr 2010 19:08:14 +0200 Subject: [PATCH 10/19] [FIX] minor: escaped RST special char in docstring bzr revid: odo@openerp.com-20100419170814-yr7zkwnlgugievo0 --- bin/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/osv/orm.py b/bin/osv/orm.py index 376fdb024ba..a76b9a5fc81 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -2837,7 +2837,7 @@ class orm(orm_template): :param user: current user id :param ids: id or list of ids :param context: context arguments, like lang, time zone - :param details: if True, *_uid fields are replaced with the name of the user + :param details: if True, \*_uid fields are replaced with the name of the user :return: list of ownership dictionaries for each requested record :rtype: list of dictionaries with the following keys: From 08d7ecffc20b37d55194fe2de2210902171ddcd5 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 19 Apr 2010 13:44:10 +0200 Subject: [PATCH 11/19] fix bzr revid: fp@tinyerp.com-20100419114410-uy7ns84ytk91a28g --- bin/addons/base/module/module.py | 6 +++++- bin/osv/orm.py | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py index 01ea8cc0745..0a427427515 100644 --- a/bin/addons/base/module/module.py +++ b/bin/addons/base/module/module.py @@ -107,7 +107,11 @@ class module(osv.osv): elif key=='ir.actions.report.xml': res[mnames[data_id.module]]['reports_by_module'] += report_obj.browse(cr,uid,data_id.res_id).name + '\n' elif key=='ir.ui.menu': - res[mnames[data_id.module]]['menus_by_module'] += menu_obj.browse(cr,uid,data_id.res_id).complete_name + '\n' + try: + m = menu_obj.browse(cr,uid,data_id.res_id) + res[mnames[data_id.module]]['menus_by_module'] += m.complete_name + '\n' + except: + pass except KeyError, e: pass return res diff --git a/bin/osv/orm.py b/bin/osv/orm.py index a76b9a5fc81..8fd1810455c 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -2034,7 +2034,8 @@ class orm(orm_template): days = calendar.monthrange(dt.year, dt.month)[1] d[groupby] = datetime.datetime.strptime(d[groupby][:10],'%Y-%m-%d').strftime('%B %Y') - d['__domain'] = [(groupby,'>=',alldata[d['id']][groupby] and datetime.datetime.strptime(alldata[d['id']][groupby][:7] + '-01','%Y-%m-%d').strftime('%Y-%m-%d') or False),\ + if not context.get('group_by_no_leaf', False): + d['__domain'] = [(groupby,'>=',alldata[d['id']][groupby] and datetime.datetime.strptime(alldata[d['id']][groupby][:7] + '-01','%Y-%m-%d').strftime('%Y-%m-%d') or False),\ (groupby,'<=',alldata[d['id']][groupby] and datetime.datetime.strptime(alldata[d['id']][groupby][:7] + '-' + str(days),'%Y-%m-%d').strftime('%Y-%m-%d') or False)] + domain elif fget[groupby]['type'] == 'many2one': d[groupby] = d[groupby] and ((type(d[groupby])==type(1)) and d[groupby] or d[groupby][1]) or '' From e1eeb3549e1229078548489f2c70b6d1d2967d9d Mon Sep 17 00:00:00 2001 From: "HDA (OpenERP)" Date: Mon, 19 Apr 2010 19:07:31 +0530 Subject: [PATCH 12/19] Fixed yml one2many reference problem bzr revid: hda@tinyerp.com-20100419133731-w7lqdgmrut85on8a --- addons/base_module_record/base_module_record.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/base_module_record/base_module_record.py b/addons/base_module_record/base_module_record.py index cda1f4ebb82..97c0ada4bca 100644 --- a/addons/base_module_record/base_module_record.py +++ b/addons/base_module_record/base_module_record.py @@ -143,7 +143,7 @@ class base_module_record(osv.osv): obj = dt.browse(cr, uid, dtids[0]) self.depends[obj.module] = True return obj.module+'.'+obj.name, obj.noupdate - + def _create_record(self, cr, uid, doc, model, data, record_id, noupdate=False): data_pool = self.pool.get('ir.model.data') @@ -384,7 +384,7 @@ class base_module_record(osv.osv): elif rec[3]=='create': id = self._create_id(cr, uid, rec[2],rec[4]) record,noupdate = self._create_record(cr, uid, doc, rec[2], rec[4], id) - self.ids[(rec[3], result)] = id + self.ids[(rec[2], result)] = id record_list += record elif rec[3]=='copy': @@ -446,8 +446,8 @@ class base_module_record(osv.osv): terp.appendChild(data) wkf = doc.createElement('workflow') data.appendChild(wkf) - wkf.setAttribute("model", rec[1][3]) - wkf.setAttribute("action", rec[1][4]) + wkf.setAttribute("model", rec[1][2]) + wkf.setAttribute("action", rec[1][3]) if noupdate: data.setAttribute("noupdate", "1") wkf.setAttribute("ref", rec_id) @@ -482,10 +482,12 @@ class base_module_record(osv.osv): continue if self.mode == "workflow": record= self._generate_object_yaml(cr, uid, rec[1],rec[0]) + yaml_file+="!comment Performing a workflow action %s on module %s"%(record['action'], record['model']) + '''\n''' object=yaml.load(unicode('''\n !workflow %s \n'''%record,'iso-8859-1')) - yaml_file += str(object) + '''\n''' + yaml_file += str(object) + '''\n\n''' else: record= self._generate_object_yaml(cr, uid, rec[1],rec[3]) + yaml_file+="!comment Creating an %s record"%(record['model']) + '''\n''' object= yaml.load(unicode('''\n !record %s \n'''%record,'iso-8859-1')) yaml_file += str(object) + '''\n''' attrs=yaml.dump(object.attrs, default_flow_style=False) @@ -497,7 +499,9 @@ class base_module_record(osv.osv): if line.find('!record') == 0: line = "- \n" + " " + line elif line.find('!workflow') == 0: - line = "- \n" + " " + line + line = "- \n" + " " + line + elif line.find('!comment') == 0: + line=line.replace('!comment','- \n ') elif line.find('- -') != -1: line=line.replace('- -',' -') line = " " + line From e55d830a7c76e8390bd2f533370424368339da4d Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 19 Apr 2010 16:22:35 +0200 Subject: [PATCH 13/19] [IMP] purchase views bzr revid: fp@tinyerp.com-20100419142235-25m4ug4pstzf8b8m --- addons/purchase/purchase_view.xml | 44 +++++++++++++++---------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 2dfe7378e83..edd482b3df4 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -171,29 +171,6 @@ - - - Requests for Quotation - ir.actions.act_window - purchase.order - form - {'search_default_draft': 1} - tree,form - - - - - - Purchase Orders - ir.actions.act_window - purchase.order - tree,form,calendar,graph - - {'search_default_approved': 1} - - - purchase.order.tree purchase.order @@ -216,6 +193,27 @@ + + Requests for Quotation + ir.actions.act_window + purchase.order + form + {'search_default_draft': 1} + tree,form,graph,calendar + + + + + Purchase Orders + ir.actions.act_window + purchase.order + tree,form,graph,calendar + {'search_default_approved': 1} + + + + purchase.order.line.form purchase.order.line From 1ff23a26bada2f9f520af81b2849181ee74479f7 Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Mon, 19 Apr 2010 23:16:35 +0530 Subject: [PATCH 14/19] [FIX]: move action code from fetchmail to crm module to make fetchmail standards. bzr revid: mga@tinyerp.com-20100419174635-j8rabdai2gd02qso --- addons/crm/crm_mailgate.py | 23 ++++++++++++++--------- addons/fetchmail/fetchmail.py | 14 +------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/addons/crm/crm_mailgate.py b/addons/crm/crm_mailgate.py index 17d182728a3..ae6a1e2696c 100644 --- a/addons/crm/crm_mailgate.py +++ b/addons/crm/crm_mailgate.py @@ -90,15 +90,20 @@ class crm_cases(osv.osv): if msg.get('priority', False): vals['priority'] = msg.get('priority') -# act = 'case_'+default_act -# if 'state' in msg_actions: -# if msg_actions['state'] in ['draft','close','cancel','open','pending']: -# act = 'case_' + msg_actions['state'] - -# for k1,k2 in [('cost','planned_cost'),('revenue','planned_revenue'),('probability','probability')]: -# if k1 in msg_actions: -# data[k2] = float(msg_actions[k1]) - + maps = { + 'cost':'planned_cost', + 'revenue': 'planned_revenue', + 'probability':'probability' + } + vls = { } + for line in msg['body'].split('\n'): + line = line.strip() + res = command_re.match(line) + if res and maps.get(res.group(1).lower(), False): + key = maps.get(res.group(1).lower()) + vls[key] = res.group(2).lower() + + vals.update(vls) res = self.write(cr, uid, ids, vals) cases = self.browse(cr, uid, ids) message_id = context.get('references_id', False) diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py index ec6a08bf73c..55ce4010b03 100644 --- a/addons/fetchmail/fetchmail.py +++ b/addons/fetchmail/fetchmail.py @@ -270,19 +270,7 @@ class mail_server(osv.osv): context.update({ 'references_id':ref[0] }) - maps = { - 'cost':'planned_cost', - 'revenue': 'planned_revenue', - 'probability':'probability' - } - vals = { } - for line in msg['body'].split('\n'): - line = line.strip() - res = command_re.match(line) - if res and maps.get(res.group(1).lower(), False): - key = maps.get(res.group(1).lower()) - vals[key] = res.group(2).lower() - + model_pool.message_update(cr, uid, [history.res_id], vals, msg, context=context) res_id = id else: From f2ef7952dc72c13a20b648789ebb98a2f53de37d Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Tue, 20 Apr 2010 02:27:01 +0530 Subject: [PATCH 15/19] [FIX]: fix a problem for the email command "Set-" bzr revid: mga@tinyerp.com-20100419205701-1b0lgr70nuwmkk6w --- addons/crm/crm_mailgate.py | 4 +++- addons/crm/wizard/crm_send_email.py | 5 ----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/addons/crm/crm_mailgate.py b/addons/crm/crm_mailgate.py index ae6a1e2696c..65ca7626468 100644 --- a/addons/crm/crm_mailgate.py +++ b/addons/crm/crm_mailgate.py @@ -32,6 +32,8 @@ import tools from osv import fields,osv,orm from osv.orm import except_orm +from tools import command_re + class crm_cases(osv.osv): """ crm cases """ @@ -39,7 +41,7 @@ class crm_cases(osv.osv): _inherit = "crm.case" def message_new(self, cr, uid, msg, context): - """ + """ Automatically calls when new email message arrives @param self: The object pointer diff --git a/addons/crm/wizard/crm_send_email.py b/addons/crm/wizard/crm_send_email.py index 5fe6b18d06b..be53b457c12 100644 --- a/addons/crm/wizard/crm_send_email.py +++ b/addons/crm/wizard/crm_send_email.py @@ -132,11 +132,6 @@ class crm_send_new_email(osv.osv_memory): getattr(case_pool, act)(cr, uid, [case.id]) cr.commit() -# Commented because form does not close due to raise -# raise osv.except_osv(_('Email!'), ("Email Successfully Sent")) -# else: -# raise osv.except_osv(_('Warning!'), _("Email not sent !")) - return {} def default_get(self, cr, uid, fields, context=None): From 64782c784241a30b871a9043f6831d4554b69003 Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Tue, 20 Apr 2010 02:27:36 +0530 Subject: [PATCH 16/19] [IMP]: implement pop email receive facility for fetchmail bzr revid: mga@tinyerp.com-20100419205736-35y36rdmizt2guba --- addons/fetchmail/fetchmail.py | 43 ++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py index 55ce4010b03..041e469a99e 100644 --- a/addons/fetchmail/fetchmail.py +++ b/addons/fetchmail/fetchmail.py @@ -32,6 +32,9 @@ import mimetypes from imaplib import IMAP4 from imaplib import IMAP4_SSL +from poplib import POP3 +from poplib import POP3_SSL + from email.header import Header from email.header import decode_header @@ -40,8 +43,6 @@ from osv import osv from osv import fields from tools.translate import _ -command_re = re.compile("^Set-([a-z]+) *: *(.+)$", re.I + re.UNICODE) - logger = netsvc.Logger() def html2plaintext(html, body_id=None, encoding='utf-8'): @@ -134,7 +135,7 @@ class mail_server(osv.osv): 'type':fields.selection([ ('pop','POP Server'), ('imap','IMAP Server'), - ],'State', select=True, readonly=True), + ],'State', select=True, readonly=False), 'is_ssl':fields.boolean('SSL ?', required=False), 'date': fields.date('Date'), 'user' : fields.char('User Name', size=256, required=True, readonly=True, states={'draft':[('readonly',False)]}), @@ -145,7 +146,7 @@ class mail_server(osv.osv): 'priority': fields.integer('Server Priority', readonly=True, states={'draft':[('readonly',False)]}, help="Priority between 0 to 10, select define the order of Processing"), } _defaults = { - 'type': lambda *a: "imap", +# 'type': lambda *a: "imap", 'state': lambda *a: "draft", 'active': lambda *a: True, 'priority': lambda *a: 5, @@ -270,7 +271,9 @@ class mail_server(osv.osv): context.update({ 'references_id':ref[0] }) - + vals = { + + } model_pool.message_update(cr, uid, [history.res_id], vals, msg, context=context) res_id = id else: @@ -313,7 +316,7 @@ class mail_server(osv.osv): fp = os.popen('ping www.google.com -c 1 -w 5',"r") if not fp.read(): logger.notifyChannel('imap', netsvc.LOG_WARNING, 'No address associated with hostname !') - + for server in self.browse(cr, uid, ids, context): logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail start checking for new emails on %s' % (server.name)) @@ -328,7 +331,6 @@ class mail_server(osv.osv): imap_server.login(server.user, server.password) imap_server.select() result, data = imap_server.search(None, '(UNSEEN)') - count = 0 for num in data[0].split(): result, data = imap_server.fetch(num, '(RFC822)') self._process_email(cr, uid, server, data[0][1], context) @@ -338,11 +340,36 @@ class mail_server(osv.osv): imap_server.close() imap_server.logout() + elif server.type == 'pop': + pop_server = None + if server.is_ssl: + pop_server = POP3_SSL(server.server, int(server.port)) + else: + pop_server = POP3(server.server, int(server.port)) + + #TODO: use this to remove only unread messages + #pop_server.user("recent:"+server.user) + pop_server.user(server.user) + pop_server.pass_(server.password) + pop_server.list() + + (numMsgs, totalSize) = pop_server.stat() + count = 0 + for num in range(1, numMsgs + 1): + (header, msges, octets) = pop_server.retr(num) + msg = '\n'.join(msges) + self._process_email(cr, uid, server, msg, context) + pop_server.dele(num) + + pop_server.quit() + + logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail fetch %s email(s) from %s' % (numMsgs, server.name)) + except Exception, e: logger.notifyChannel('IMAP', netsvc.LOG_WARNING, '%s' % (e)) return True - + mail_server() class mail_server_history(osv.osv): From d5a0e085956ab93348d8d945f9324950ef131659 Mon Sep 17 00:00:00 2001 From: Mantavya Gajjar Date: Tue, 20 Apr 2010 02:28:27 +0530 Subject: [PATCH 17/19] [IMP]: remove unused field from view bzr revid: mga@tinyerp.com-20100419205827-5rxrxtx84omwz014 --- addons/smtpclient/smtpclient.py | 2 +- addons/smtpclient/smtpclient_view.xml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/smtpclient/smtpclient.py b/addons/smtpclient/smtpclient.py index 87aadcc7749..3cb6c4854c0 100644 --- a/addons/smtpclient/smtpclient.py +++ b/addons/smtpclient/smtpclient.py @@ -396,7 +396,7 @@ class smtpclient(osv.osv): if body == False: body = '' - if smtp_server.disclaimers != False: + if smtp_server.disclaimers: body = body + "\n" + smtp_server.disclaimers try: diff --git a/addons/smtpclient/smtpclient_view.xml b/addons/smtpclient/smtpclient_view.xml index 2f84cd64ac6..4a2182f2699 100644 --- a/addons/smtpclient/smtpclient_view.xml +++ b/addons/smtpclient/smtpclient_view.xml @@ -99,7 +99,6 @@ - From f2f2bde0f3c0a09c8eb0cb841d6f2171ad83c735 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Mon, 19 Apr 2010 23:01:17 +0200 Subject: [PATCH 18/19] [FIX] Custom Objects with x_name field bzr revid: fp@tinyerp.com-20100419210117-2cuj8jdgrnh11pze --- bin/addons/base/ir/ir_model.py | 8 +++++-- bin/addons/base/ir/wizard/wizard_menu.py | 16 +------------- .../base/ir/wizard/wizard_menu_view.xml | 21 +++++++------------ 3 files changed, 14 insertions(+), 31 deletions(-) diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py index a4afff1973d..670fb420bd2 100644 --- a/bin/addons/base/ir/ir_model.py +++ b/bin/addons/base/ir/ir_model.py @@ -99,8 +99,12 @@ class ir_model(osv.osv): pass x_custom_model._name = model x_custom_model._module = False - x_custom_model.createInstance(self.pool, '', cr) - x_custom_model._rec_name = 'x_name' + a = x_custom_model.createInstance(self.pool, '', cr) + if (not a._columns) or ('x_name' in a._columns.keys()): + x_name = 'x_name' + else: + x_name = a._columns.keys()[0] + x_custom_model._rec_name = x_name ir_model() diff --git a/bin/addons/base/ir/wizard/wizard_menu.py b/bin/addons/base/ir/wizard/wizard_menu.py index ab48e6071bf..7468b4da4b6 100644 --- a/bin/addons/base/ir/wizard/wizard_menu.py +++ b/bin/addons/base/ir/wizard/wizard_menu.py @@ -26,32 +26,18 @@ class wizard_model_menu(osv.osv_memory): 'model_id': fields.many2one('ir.model','Object', required=True), 'menu_id': fields.many2one('ir.ui.menu', 'Parent Menu', required=True), 'name': fields.char('Menu Name', size=64, required=True), - 'view_ids': fields.one2many('wizard.ir.model.menu.create.line', 'wizard_id', 'Views'), } _defaults = { 'model_id': lambda self,cr,uid,ctx: ctx.get('model_id', False) } def menu_create(self, cr, uid, ids, context={}): for menu in self.browse(cr, uid, ids, context): - view_mode = [] - views = [] - for view in menu.view_ids: - view_mode.append(view.view_type) - views.append( (0,0,{ - 'view_id': view.view_id and view.view_id.id or False, - 'view_mode': view.view_type, - 'sequence': view.sequence - })) val = { 'name': menu.name, 'res_model': menu.model_id.model, 'view_type': 'form', - 'view_mode': ','.join(view_mode) + 'view_mode': 'tree,form' } - if views: - val['view_ids'] = views - else: - val['view_mode'] = 'tree,form' action_id = self.pool.get('ir.actions.act_window').create(cr, uid, val) self.pool.get('ir.ui.menu').create(cr, uid, { 'name': menu.name, diff --git a/bin/addons/base/ir/wizard/wizard_menu_view.xml b/bin/addons/base/ir/wizard/wizard_menu_view.xml index 510a816099e..b1e9b6e5ccc 100644 --- a/bin/addons/base/ir/wizard/wizard_menu_view.xml +++ b/bin/addons/base/ir/wizard/wizard_menu_view.xml @@ -9,16 +9,9 @@ - + - - - - - - - - +