Template fallback
diff --git a/addons/website_quote/models/order.py b/addons/website_quote/models/order.py
index bb3f89a5c8d..c9d72db04c1 100644
--- a/addons/website_quote/models/order.py
+++ b/addons/website_quote/models/order.py
@@ -64,11 +64,14 @@ class sale_quote_line(osv.osv):
def on_change_product_id(self, cr, uid, ids, product, context=None):
vals = {}
product_obj = self.pool.get('product.product').browse(cr, uid, product, context=context)
+ name = product_obj.name
+ if product_obj.description_sale:
+ name += '\n' + product_obj.description_sale
vals.update({
'price_unit': product_obj.list_price,
'product_uom_id': product_obj.uom_id.id,
'website_description': product_obj.website_description,
- 'name': product_obj.name,
+ 'name': name,
})
return {'value': vals}
diff --git a/openerp/addons/base/ir/ir_cron.py b/openerp/addons/base/ir/ir_cron.py
index 60790c8fdc6..055c0d8bf5a 100644
--- a/openerp/addons/base/ir/ir_cron.py
+++ b/openerp/addons/base/ir/ir_cron.py
@@ -24,9 +24,14 @@ import time
import psycopg2
from datetime import datetime
from dateutil.relativedelta import relativedelta
+import pytz
import openerp
+<<<<<<< HEAD
from openerp import SUPERUSER_ID, netsvc, api
+=======
+from openerp import netsvc, SUPERUSER_ID
+>>>>>>> 0739bc4edabab7e74571087c01a2da68ccadb10e
from openerp.osv import fields, osv
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
from openerp.tools.safe_eval import safe_eval as eval
@@ -159,8 +164,8 @@ class ir_cron(osv.osv):
"""
try:
with api.Environment.manage():
- now = datetime.now()
- nextcall = datetime.strptime(job['nextcall'], DEFAULT_SERVER_DATETIME_FORMAT)
+ now = fields.datetime.context_timestamp(job_cr, SUPERUSER_ID, datetime.now())
+ nextcall = fields.datetime.context_timestamp(job_cr, SUPERUSER_ID, datetime.strptime(job['nextcall'], DEFAULT_SERVER_DATETIME_FORMAT))
numbercall = job['numbercall']
ok = False
@@ -176,7 +181,7 @@ class ir_cron(osv.osv):
if not numbercall:
addsql = ', active=False'
cron_cr.execute("UPDATE ir_cron SET nextcall=%s, numbercall=%s"+addsql+" WHERE id=%s",
- (nextcall.strftime(DEFAULT_SERVER_DATETIME_FORMAT), numbercall, job['id']))
+ (nextcall.astimezone(pytz.UTC).strftime(DEFAULT_SERVER_DATETIME_FORMAT), numbercall, job['id']))
self.invalidate_cache(cr, SUPERUSER_ID)
finally:
diff --git a/openerp/report/report_sxw.py b/openerp/report/report_sxw.py
index e3917d8fa96..03446dbeabd 100644
--- a/openerp/report/report_sxw.py
+++ b/openerp/report/report_sxw.py
@@ -192,7 +192,9 @@ class rml_parse(object):
elif (hasattr(obj, '_field') and\
isinstance(obj._field, (float_field, function_field)) and\
obj._field.digits):
- d = obj._field.digits[1] or DEFAULT_DIGITS
+ d = obj._field.digits[1]
+ if not d and d is not 0:
+ d = DEFAULT_DIGITS
return d
def formatLang(self, value, digits=None, date=False, date_time=False, grouping=True, monetary=False, dp=False, currency_obj=False):
diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py
index 2a56ffeb0bc..eaca88952a3 100644
--- a/openerp/tools/yaml_import.py
+++ b/openerp/tools/yaml_import.py
@@ -461,16 +461,15 @@ class YamlInterpreter(object):
result = getattr(model, match.group(1))(self.cr, SUPERUSER_ID, [], *args)
for key, val in (result or {}).get('value', {}).items():
- assert key in fg, (
- "The field %r returned from the onchange call %r "
- "does not exist in the source view %r (of object "
- "%r). This field will be ignored (and thus not "
- "populated) when clients saves the new record" % (
- key, match.group(1), view_info.get('name', '?'), model._name
- ))
- if key not in fields:
- # do not shadow values explicitly set in yaml.
- record_dict[key] = process_val(key, val)
+ if key in fg:
+ if key not in fields:
+ # do not shadow values explicitly set in yaml.
+ record_dict[key] = process_val(key, val)
+ else:
+ _logger.debug("The returning field '%s' from your on_change call '%s'"
+ " does not exist either on the object '%s', either in"
+ " the view '%s'",
+ key, match.group(1), model._name, view_info['name'])
else:
nodes = list(el) + nodes
else: