From d57623023bce13aa97fc465415d8deacdd68e9ec Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Wed, 20 Apr 2016 16:18:14 +0200 Subject: [PATCH] [FIX] website_form: handle date & datetime Adding date & datetime inputs in the website form builder couldn't work, because the posted values for these input types were not treated at all, and they were not in the format the date/datetime were stored in database. opw-672674 --- addons/website_form/controllers/main.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/addons/website_form/controllers/main.py b/addons/website_form/controllers/main.py index e5cb84823d0..e6ebeaef4b2 100644 --- a/addons/website_form/controllers/main.py +++ b/addons/website_form/controllers/main.py @@ -2,9 +2,12 @@ import base64 import json +import pytz +from datetime import datetime from psycopg2 import IntegrityError from openerp import http, SUPERUSER_ID from openerp.http import request +from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT from openerp.tools.translate import _ from openerp.exceptions import ValidationError from openerp.addons.base.ir.ir_qweb import nl2br @@ -60,6 +63,17 @@ class WebsiteForm(http.Controller): def boolean(self, field_label, field_input): return bool(field_input) + def date(self, field_label, field_input): + lang = request.env['ir.qweb.field'].user_lang() + return datetime.strptime(field_input, lang.date_format).strftime(DEFAULT_SERVER_DATE_FORMAT) + + def datetime(self, field_label, field_input): + lang = request.env['ir.qweb.field'].user_lang() + strftime_format = (u"%s %s" % (lang.date_format, lang.time_format)) + user_tz = pytz.timezone(request.context.get('tz') or request.env.user.tz or 'UTC') + dt = user_tz.localize(datetime.strptime(field_input, strftime_format)).astimezone(pytz.utc) + return dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT) + def binary(self, field_label, field_input): return base64.b64encode(field_input.read()) @@ -73,7 +87,8 @@ class WebsiteForm(http.Controller): 'char': identity, 'text': identity, 'html': identity, - 'datetime': identity, + 'date': date, + 'datetime': datetime, 'many2one': integer, 'one2many': one2many, 'many2many':many2many,