from wtforms import DateTimeField from wtforms.widgets import html_params, HTMLString import pytz from datetime import datetime from flask_babelex import to_user_timezone def create_option_string(count, value): result = "" for i in range(count): selected = " selected" if i == value else "" result = result + '' % (i, selected, i) return result berlin_tz = pytz.timezone('Europe/Berlin') class CustomDateTimeWidget: def __call__(self, field, **kwargs): id = kwargs.pop('id', field.id) date = '' hour = minute = 0 if field.data: date_value = to_user_timezone(field.data) date = date_value.strftime("%Y-%m-%d") hour = date_value.hour minute = date_value.minute date_params = html_params(name=field.name, id=id, value=date, **kwargs) time_hour_params = html_params(name=field.name, id=id + '-hour', **kwargs) time_minute_params = html_params(name=field.name, id=id + '-minute', **kwargs) clear_button_id = id + '-clear-button' return HTMLString('