Commit e97707e4 authored by Serge S. Koval's avatar Serge S. Koval

Merge pull request #549 from pawl/master

Allow Changing DateTimeField's date-format using form_args
parents a3ea8547 ed7a1351
......@@ -2,7 +2,6 @@ from wtforms import fields, validators
from sqlalchemy import Boolean, Column
from flask.ext.admin import form
from flask.ext.admin.form import Select2Field
from flask.ext.admin.model.form import (converts, ModelConverterBase,
InlineModelConverterBase, FieldPlaceholder)
from flask.ext.admin.model.fields import AjaxSelectField, AjaxSelectMultipleField
......@@ -238,7 +237,7 @@ class AdminModelConverter(ModelConverterBase):
if mapper.class_ == self.view.model and form_choices:
choices = form_choices.get(column.key)
if choices:
return Select2Field(
return form.Select2Field(
choices=choices,
allow_blank=column.nullable,
**kwargs
......@@ -292,8 +291,7 @@ class AdminModelConverter(ModelConverterBase):
@converts('DateTime')
def convert_datetime(self, field_args, **extra):
field_args['widget'] = form.DateTimePickerWidget()
return DateTimeField(**field_args)
return form.DateTimeField(**field_args)
@converts('Time')
def convert_time(self, field_args, **extra):
......
......@@ -7,8 +7,33 @@ from flask.ext.admin._compat import text_type, as_unicode
from . import widgets as admin_widgets
__all__ = ['TimeField', 'Select2Field', 'Select2TagsField']
__all__ = ['DateTimeField', 'TimeField', 'Select2Field', 'Select2TagsField']
class DateTimeField(fields.DateTimeField):
"""
Allows modifying the datetime format of a DateTimeField using form_args.
"""
widget = admin_widgets.DateTimePickerWidget()
def __init__(self, label=None, validators=None, format=None, widget_format=None, **kwargs):
"""
Constructor
:param label:
Label
:param validators:
Field validators
:param format:
Format for text to date conversion. Defaults to '%Y-%m-%d %H:%M:%S'
:param widget_format:
Widget date format. Defaults to 'yyyy-mm-dd hh:ii:ss'
:param kwargs:
Any additional parameters
"""
super(DateTimeField, self).__init__(label, validators, **kwargs)
self.format = format or '%Y-%m-%d %H:%M:%S'
self.widget_format = widget_format or 'yyyy-mm-dd hh:ii:ss'
class TimeField(fields.Field):
"""
......
......@@ -57,7 +57,7 @@ class DateTimePickerWidget(widgets.TextInput):
"""
def __call__(self, field, **kwargs):
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-today-btn'] = u'linked'
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