Commit ace723c5 authored by Paul Brown's avatar Paul Brown

Add widget_format field to DateTimeField to allow modifying datetime format from form_widget_args

parent 73e294b1
...@@ -2,7 +2,6 @@ from wtforms import fields, validators ...@@ -2,7 +2,6 @@ from wtforms import fields, validators
from sqlalchemy import Boolean, Column from sqlalchemy import Boolean, Column
from flask.ext.admin import form from flask.ext.admin import form
from flask.ext.admin.form import Select2Field
from flask.ext.admin.model.form import (converts, ModelConverterBase, from flask.ext.admin.model.form import (converts, ModelConverterBase,
InlineModelConverterBase, FieldPlaceholder) InlineModelConverterBase, FieldPlaceholder)
from flask.ext.admin.model.fields import AjaxSelectField, AjaxSelectMultipleField from flask.ext.admin.model.fields import AjaxSelectField, AjaxSelectMultipleField
...@@ -238,7 +237,7 @@ class AdminModelConverter(ModelConverterBase): ...@@ -238,7 +237,7 @@ class AdminModelConverter(ModelConverterBase):
if mapper.class_ == self.view.model and form_choices: if mapper.class_ == self.view.model and form_choices:
choices = form_choices.get(column.key) choices = form_choices.get(column.key)
if choices: if choices:
return Select2Field( return form.Select2Field(
choices=choices, choices=choices,
allow_blank=column.nullable, allow_blank=column.nullable,
**kwargs **kwargs
...@@ -287,8 +286,7 @@ class AdminModelConverter(ModelConverterBase): ...@@ -287,8 +286,7 @@ class AdminModelConverter(ModelConverterBase):
@converts('DateTime') @converts('DateTime')
def convert_datetime(self, field_args, **extra): def convert_datetime(self, field_args, **extra):
field_args['widget'] = form.DateTimePickerWidget() return form.DateTimeField(**field_args)
return DateTimeField(**field_args)
@converts('Time') @converts('Time')
def convert_time(self, field_args, **extra): def convert_time(self, field_args, **extra):
......
...@@ -9,7 +9,25 @@ from . import widgets as admin_widgets ...@@ -9,7 +9,25 @@ from . import widgets as admin_widgets
__all__ = ['TimeField', 'Select2Field', 'Select2TagsField'] __all__ = ['TimeField', 'Select2Field', 'Select2TagsField']
class DateTimeField(fields.DateTimeField):
widget = admin_widgets.DateTimePickerWidget()
def __init__(self, label=None, validators=None, widget_format=None, **kwargs):
"""
Constructor
:param label:
Label
:param validators:
Field validators
:param widget_format:
Widget date format. Defaults to 'hh:ii:ss'
:param kwargs:
Any additional parameters
"""
super(DateTimeField, self).__init__(label, validators, **kwargs)
self.widget_format = widget_format or 'yyyy-mm-dd hh:ii:ss'
class TimeField(fields.Field): class TimeField(fields.Field):
""" """
A text field which stores a `datetime.time` object. A text field which stores a `datetime.time` object.
......
...@@ -57,7 +57,7 @@ class DateTimePickerWidget(widgets.TextInput): ...@@ -57,7 +57,7 @@ class DateTimePickerWidget(widgets.TextInput):
""" """
def __call__(self, field, **kwargs): def __call__(self, field, **kwargs):
kwargs['data-role'] = u'datetimepicker' kwargs['data-role'] = u'datetimepicker'
kwargs['data-date-format'] = u'yyyy-mm-dd hh:ii:ss' kwargs['data-date-format'] = field.widget_format or u'yyyy-mm-dd hh:ii:ss'
kwargs['data-date-autoclose'] = u'true' kwargs['data-date-autoclose'] = u'true'
kwargs['data-date-today-btn'] = u'linked' kwargs['data-date-today-btn'] = u'linked'
kwargs['data-date-today-highlight'] = u'true' kwargs['data-date-today-highlight'] = u'true'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment