[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
This commit is contained in:
Denis Ledoux
2016-04-20 16:19:25 +02:00
parent 17b6191a02
commit d57623023b
+16 -1
View File
@@ -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,