[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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user