Traceback (most recent call last):
File "C:\Users\David\Documents\GitHub\web2py\gluon\restricted.py", line 227, in restricted
exec ccode in environment
File "C:/Users/David/Documents/GitHub/web2py/applications/prearrival/controllers/default.py", line 160, in <module>
File "C:\Users\David\Documents\GitHub\web2py\gluon\globals.py", line 393, in <lambda>
self._caller = lambda f: f()
File "C:\Users\David\Documents\GitHub\web2py\gluon\tools.py", line 3440, in f
return action(*a, **b)
File "C:/Users/David/Documents/GitHub/web2py/applications/prearrival/controllers/default.py", line 150, in passports
details = False,
File "C:\Users\David\Documents\GitHub\web2py\gluon\sqlhtml.py", line 2232, in grid
create_form = SQLFORM(table, **sqlformargs)
File "C:\Users\David\Documents\GitHub\web2py\gluon\sqlhtml.py", line 1229, in __init__
inp = field.widget(field, default)
TypeError: bsdatepicker_widget() takes at most 1 argument (2 given)
# -*- coding: utf-8 -*-
"""
Integrates bootstrap-datepicker nicely into web2py.
Download the plugin at: https://github.com/eternicode/bootstrap-datepicker
"""
__author__ = 'Leonel Câmara'
__email__ = ''
__copyright__ = 'Copyright(c) 2014 Leonel Câmara'
__license__ = 'BEER-WARE'
__version__ = '0.12'
__status__ = 'Development' # possible options: Prototype, Development, Production
from gluon import *
from gluon.sqlhtml import FormWidget
def bsdatepicker_widget(**settings):
"""
Usage:
from plugin_bs_datepicker import bsdatepicker_widget
db.table.field.widget = bsdatepicker_widget()
Examples:
## notice double quotes wrapping string parameters.
db.table.field.widget = bsdatepicker_widget(
startView=2, startDate="'-200y'", endDate="'0y'")
## pass a language code this way:
langcode = 'it'
db.table.field.widget = bsdatepicker_widget(
language="'{0}'".format(langcode))
look at:
http://bootstrap-datepicker.readthedocs.org/en/stable/options.html
for settings full list.
"""
def widget(field, value, **attributes):
default = {'value': value}
attributes = FormWidget._attributes(field, default, **attributes)
attributes['_class'] = 'form-control datepicker'
dateinput = INPUT(**attributes)
## if language 'en' (default) remove setting, don't append locale script.
locale = ''
lang = settings.get('language', None)
if lang == "'en'":
del(settings['language'])
elif lang:
url = URL('static', 'plugin_bs_datepicker/locales/' \
'bootstrap-datepicker.{lang}.min.js'.format(lang=lang[1:-1]))
locale = "$('body').append($('<script src=\"{url}\"></script>'));".format(url=url)
settings_str = ',\n'.join(item[0] + ':' + str(item[1]) for item in
settings.iteritems()) if settings else ''
javascript = SCRIPT(
"""
$('head').append($('<link href="%(css_url)s" type="text/css" rel="stylesheet" />'));
$.getScript('%(js_url)s').done(function(){
%(locale_script)s
$('#%(_id)s').datepicker({
format: w2p_ajax_date_format.replace('%%Y', 'yyyy').
replace('%%m', 'mm').replace('%%d', 'dd'),
%(settings)s
})
});
"""
% {
'css_url': URL('static', 'plugin_bs_datepicker/css/bootstrap-datepicker.css'),
'js_url': URL('static', 'plugin_bs_datepicker/js/bootstrap-datepicker.js'),
'locale_script': locale,
'_id': dateinput.attributes['_id'],
'settings': settings_str
})
return CAT(dateinput, javascript)
return widget
/* To revernt font 2em in web2py calendar component */
.hour, .minute {font-size: 14px;}
Field('origination_date', 'date',
widget=datepicker_widget(format='mm/yyyy', min_view_mode='months'), requires=IS_DATE('%m/%Y')), # example using just mm/yyyy
def datepicker_widget(**settings):
def widget(field, value, **attributes):
default = {'value': value}
attributes = FormWidget._attributes(field, default, **attributes)
attributes['_class'] = 'form-control date'
# default format “mm/dd/yyyy”
data_attributes = {}
data_attributes['date-format'] = 'yyyy-mm-dd'
for item in settings.iteritems():
data_attributes['date-'+item[0].replace('_', '-')] = item[1]
return INPUT(
data=data_attributes,
**attributes
)
return widget
$('input.date').datepicker({
todayBtn: "linked",
autoclose: true,
todayHighlight: true
});
# response.files.insert(1,URL('static','css/calendar.css'))
# response.files.insert(2,URL('static','js/calendar.js'))