Here is how I make it work. I am not sure what is missing in your
case....

In model
db.define_table('person',SQField('name'),SQLField
('birthday','date',requires=IS_DATE(str(T('%Y-%m-%d')))))

create a language file for example it.py and translate:

'%Y-%m-%d': '%d/%m/%Y',
'%Y-%m-%d %H:%M:%S': '%d/%m/%Y %H:%M:%S',

everything works for me. No need to change anything in
web2py_ajax.html.

Massimo




On 19 Apr, 10:12, mdipierro <mdipie...@cs.depaul.edu> wrote:
> I promise I will look into this today.
>
> Massimo
>
> On Apr 19, 7:05 am, jmverm...@xs4all.nl wrote:
>
> > I am still struggling with the formatting of date, I first tried to
> > solve the problem the best way, when I didn't get that to work I
> > thought I'd try the quick fix, unfortunately, resulting in the same
> > errors.
>
> > This works, however, the date is displayed in the format: YYYY-mm-dd,
> > whereas I need dd-mm-YYYY.
>
> > Validator in model:
>
> > db.event.van_datum.requires=IS_DATE('%Y-%m-%d')
> > db.event.tot_datum.requires=IS_NULL_OR(IS_DATE('%Y-%m-%d'))
>
> > web2py_ajax.html:
>
> > try {$("input.date").focus( function() {Calendar.setup({
> >      inputField:this.id, ifFormat:"{{=T('%Y-%m-%d')}}",
> > showsTime:false}); }); } catch(e) {};
>
> > try { $("input.datetime").focus( function() {Calendar.setup({
> >      inputField:this.id, ifFormat:"{{=T('%Y-%m-%d %H:%M:%S')}}",
> > showsTime: true,timeFormat: "24"}); }); } catch(e) {};
>
> > try { $("input.time").clockpick({
> >      starthour:0, endhour:23, showminutes:true, military:true
>
> > }); } catch(e) {};
>
> > Function in controller:
>
> > def byplace():
> >     response.functionname=T('Event list by place')
> >     response.image=URL(r=request,c='static',f='media/core/banner.png')
> >     form=form_factory(SQLField('plaats',requires=IS_NOT_EMPTY(),\
> >     widget=lambda self, value:INPUT
> > (_id='eventbyplace',_name='plaats',_class='ac_input',_type='text',requires=self.requires)),
> >     SQLField('datum',type='date',requires=IS_DATE('%Y-%m-%d')),\
> >     SQLField('dagen',requires=IS_IN_SET([7,14,28,56],labels=['1
> > week','2 weken','4 weken','8 weken'])))
> >     events=[]
> >     if form.accepts(request.vars,session):
> >         response.flash=T('no results')
> >         fromdate=request.vars.datum
> >         todate=IS_DATE()(fromdate)[0]+datetime.timedelta(days=int
> > (request.vars.dagen))
> >         events=db((db.event.plaats==request.vars.plaats)&
> > (db.event.van_datum>=fromdate)&\
> >         (db.event.van_datum<=todate)&(db.event.doelgroep=='Consumer')&
> > (db.event.scope=='Extern'))\
> >         .select
> > (db.event.id,db.event.event,db.event.van_datum,db.event.locatie,\
> >         db.event.eventtype,orderby=db.event.van_datum)
> >     elif form.errors:
> >         response.flash=T('form has errors')
> >     else:
> >         response.flash=T('please fill the form')
> >     return dict(form=form,events=events)
>
> > In the view:
>
> > <td>
> >     {{=event.van_datum}}
> > </td>
>
> > This doesn't work:
>
> > Validator in model:
>
> > db.event.van_datum.requires=IS_DATE('%d-%m-%Y')
> > db.event.tot_datum.requires=IS_NULL_OR(IS_DATE('%d-%m-%Y'))
>
> > web2py_ajax.html:
>
> > try {$("input.date").focus( function() {Calendar.setup({
> >      inputField:this.id, ifFormat:"{{=T('%d-%m-%Y')}}",
> > showsTime:false}); }); } catch(e) {};
>
> > try { $("input.datetime").focus( function() {Calendar.setup({
> >      inputField:this.id, ifFormat:"{{=T('%d-%m-%Y %H:%M:%S')}}",
> > showsTime: true,timeFormat: "24"}); }); } catch(e) {};
>
> > try { $("input.time").clockpick({
> >      starthour:0, endhour:23, showminutes:true, military:true}); } catch(e) 
> > {};
>
> > On Apr 17, 8:09 am, jmverm...@xs4all.nl wrote:
>
> > Function in the controller:
> > def byplace():
> >     response.functionname=T('Event list by place')
> >     response.image=URL(r=request,c='static',f='media/core/banner.png')
> >     form=form_factory(SQLField('plaats',requires=IS_NOT_EMPTY(),\
> >     widget=lambda self, value:INPUT
> > (_id='eventbyplace',_name='plaats',_class='ac_input',_type='text',requires=self.requires)),
> >     SQLField('datum',type='date',requires=IS_DATE('%d-%m-%Y')),\
> >     SQLField('dagen',requires=IS_IN_SET([7,14,28,56],labels=['1
> > week','2 weken','4 weken','8 weken'])))
> >     events=[]
> >     if form.accepts(request.vars,session):
> >         response.flash=T('no results')
> >         fromdate=request.vars.datum
> >         todate=IS_DATE()(fromdate)[0]+datetime.timedelta(days=int
> > (request.vars.dagen))
> >         events=db((db.event.plaats==request.vars.plaats)&
> > (db.event.van_datum>=fromdate)&\
> >         (db.event.van_datum<=todate)&(db.event.doelgroep=='Consumer')&
> > (db.event.scope=='Extern'))\
> >         .select
> > (db.event.id,db.event.event,db.event.van_datum,db.event.locatie,\
> >         db.event.eventtype,orderby=db.event.van_datum)
> >     elif form.errors:
> >         response.flash=T('form has errors')
> >     else:
> >         response.flash=T('please fill the form')
> >     return dict(form=form,events=events)
>
> > Exposing the function results in the following error:
>
> > File "/Library/Python/2.5/site-packages/web2pyfitwise/applications/
> > core/controllers/eventlist.py", line 25, in byplace
> >     todate=IS_DATE()(fromdate)[0]+datetime.timedelta(days=int
> > (request.vars.dagen))
> > TypeError: cannot concatenate 'str' and 'datetime.timedelta' objects
>
> > When I replace todate=... with:
>
> > todate=form.vars.datum+datetime.timedelta(days=int(form.vars.dagen))
>
> > and expose the function I get this error:
>
> > File "/Library/Python/2.5/site-packages/web2pyfitwise/applications/
> > core/controllers/eventlist.py", line 29, in byplace
> >     db.event.eventtype,orderby=db.event.van_datum)
> >   File "/Library/Python/2.5/site-packages/web2pyfitwise/gluon/sql.py",
> > line 1902, in select
> >     r = response(query)
> >   File "/Library/Python/2.5/site-packages/web2pyfitwise/gluon/sql.py",
> > line 1897, in response
> >     self._db._execute(query)
> >   File "/Library/Python/2.5/site-packages/web2pyfitwise/gluon/sql.py",
> > line 664, in <lambda>
> >     **b)
> > DataError: date/time field value out of range: "21-04-2009"
> > HINT:  Perhaps you need a different "datestyle" setting.
>
> > which, I guess, refers to the orderby clause in the query:
>
> >  events=db((db.event.plaats==request.vars.plaats)&
> > (db.event.van_datum>=fromdate)&\
> >         (db.event.van_datum<=todate)&(db.event.doelgroep=='Consumer')&
> > (db.event.scope=='Extern'))\
> >         .select
> > (db.event.id,db.event.event,db.event.van_datum,db.event.locatie,\
> >         db.event.eventtype,orderby=db.event.van_datum)
>
> > Furthermore, inserting an event through appadmin results in a: must be
> > YYYY-MM-DD! validation error.
>
> > I hope one of you can help me solve this problem, it's getting on my
> > nerves....
>
> > Kind regards,
>
> > Annet.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to