Is it possible you have a custom validator?

is should have a IS_DATE validator (default). It is the validator that maps 
request.vars.date into form.vars.date and performs the conversion.

On Thursday, 11 October 2012 06:30:46 UTC-5, David Sorrentino wrote:
>
> Changed the name of the field from "date" to "created_on" to avoid 
> confusion.
> Tried with a fresh table.
> Result:
> *form.vars.created_on* seems to be still an object of type str.
>
> Am I missing something? :-/
>
> Cheers,
> David
>
>
> On 11 October 2012 11:45, Niphlod <nip...@gmail.com <javascript:>> wrote:
>
>> uhm. I can't reproduce the issue. For me form.vars.whatever if is a field 
>> of type datetime is a datetime tuple. Request.vars.whatever on the other 
>> hand is always a string, as it should be.
>>
>> Try with a fresh table
>>
>> PS: having a db with a column named "date" is a call for problems ... 
>>
>> On Thursday, October 11, 2012 11:27:52 AM UTC+2, David Sorrentino wrote:
>>
>>> Thanks for your explanation Niphlod. ;)
>>>
>>> I'm trying to normalize the time, as you suggested.
>>> However I'm facing some difficulties.
>>>
>>> In particular I created an additional field in my table to store the 
>>> normalized time (UTC) too. So now my table looks like that:
>>>
>>>> db.define_table('news',
>>>>     Field('title', 'string'),
>>>>     Field('body', 'text'),
>>>>     Field('date', 'datetime'),
>>>>     Field('dateUTC', 'datetime', readable=False, writable=False)
>>>> )
>>>>
>>>
>>> I decided to compute the field "dateUTC" onvalidation. My controller 
>>> looks like that:
>>>
>>>> def insertnews():
>>>>     form = crud.create(db.news, next=URL('index'), 
>>>> onvalidation=localtime_to_utc)
>>>>     return dict(form=form)
>>>>
>>>
>>> Eventually, assuming that I want to normalize the local time of Rome (+2 
>>> hours) the function I use to do that looks so:
>>>
>>>> def localtime_to_utc(form):
>>>>         form.vars.dateUTC = form.vars.date - timedelta(hours=2)
>>>>
>>>  
>>> The problem is that *form.vars.date* seems to be a string. O_O
>>> Indeed I get this error:
>>>
>>>> TypeError: unsupported operand type(s) for -: 'str' and 
>>>> 'datetime.timedelta'
>>>>
>>>
>>>  Now I wonder, is it normal that a form.vars is considered a string? Is 
>>> there any way to retrieve the original type (datetime), in order to compute 
>>> the normalization?
>>>
>>> @Alec: if I manage I'll send them a mail with the solution! ;)
>>>
>>> Cheers,
>>> David
>>>
>>>
>>> On 10 October 2012 14:35, Alec Taylor <alec.t...@gmail.com> wrote:
>>>
>>>> Also if it makes you feel better LinkedIn hasn't implemented this
>>>> properly either :P
>>>>
>>>> On Wed, Oct 10, 2012 at 10:57 PM, Niphlod <nip...@gmail.com> wrote:
>>>> > welcome to datetime madness :D It's exactly what you need to take into
>>>> > consideration if you're working with user-inputted datetimes. You'd 
>>>> need to
>>>> > retrieve it's local date (javascript comes to the rescue, or based on
>>>> > nation, or whatever) and calculate the difference between that and 
>>>> your
>>>> > current date, then subtract/add the difference to the actually 
>>>> submitted
>>>> > datetime to "normalize" it in a UTC form.
>>>> >
>>>> >
>>>> > On Wednesday, October 10, 2012 1:01:35 PM UTC+2, David Sorrentino 
>>>> wrote:
>>>> >>
>>>> >> I see your point, but what if the user inserts into the datetime 
>>>> input
>>>> >> field his/her current time? It will be different from the server's 
>>>> one
>>>> >> (which I set to GMT), and prettydate will not work properly.
>>>> >>
>>>> >> I confess that I am a bit confused about that.
>>>> >>
>>>> >> Best,
>>>> >> David
>>>> >>
>>>> >>
>>>> >> On 10 October 2012 11:16, Niphlod <nip...@gmail.com> wrote:
>>>> >>>
>>>> >>> not necessarily wrong, just a different timezone. If you're going to
>>>> >>> display "prettydates" just in the browser for a "nicer 
>>>> visualization" you
>>>> >>> should take into consideration that your server's locatime can be 
>>>> different
>>>> >>> from the users's browser one.
>>>> >>>
>>>> >>> In a "perfect" setup, your server is on GMT (that is, utc), your 
>>>> app uses
>>>> >>> request.utcnow in all the places instead of request.now (and
>>>> >>> datetime.datetime.utcnow() instead of datetime.datetime.utcnow()). 
>>>> You'll
>>>> >>> have prettydate working right.
>>>> >>>
>>>> >>>
>>>> >>> On Wednesday, October 10, 2012 10:38:32 AM UTC+2, David Sorrentino 
>>>> wrote:
>>>> >>>>
>>>> >>>> Hey Niphlod,
>>>> >>>>
>>>> >>>> Thank you for your help.
>>>> >>>>
>>>> >>>> The version is 2.0.9 (2012-10-05 09:01:45) dev
>>>> >>>>
>>>> >>>> I tried datetime.datetime.now() in my application and I just 
>>>> discovered
>>>> >>>> that it is 2 hours late. This explains why prettydate is then 2 
>>>> hours in
>>>> >>>> hurry!
>>>> >>>> The odd thing is that if I open a python console and try
>>>> >>>> datetime.datetime.now(), I get the right time. O_O
>>>> >>>>
>>>> >>>> Something wrong with my server?
>>>> >>>>
>>>> >>>> Cheers,
>>>> >>>> David
>>>> >>>>
>>>> >>>>
>>>> >>>> On 10 October 2012 10:28, Niphlod <nip...@gmail.com> wrote:
>>>> >>>>>
>>>> >>>>> should calculate the difference between datetime.datetime.now() 
>>>> and
>>>> >>>>> your date. what web2py version are you using ?
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> On Wednesday, October 10, 2012 10:16:24 AM UTC+2, David Sorrentino
>>>> >>>>> wrote:
>>>> >>>>>>
>>>> >>>>>> Hello everybody,
>>>> >>>>>>
>>>> >>>>>> I am using the module prettydate, but it seems that it matches 
>>>> the
>>>> >>>>>> datetime I give as input with a wrong timezone.
>>>> >>>>>>
>>>> >>>>>> For example now it's 10:12 am at my place.
>>>> >>>>>>
>>>> >>>>>> This is the datetime I give as input: 2012-10-10 10:12:00.
>>>> >>>>>>
>>>> >>>>>> This is the code:
>>>> >>>>>>
>>>> >>>>>>> from gluon.tools import prettydate
>>>> >>>>>>> pretty_d = prettydate(input_datetime, T)
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>>> And this is the result: "2 hours from now".
>>>> >>>>>> It's 2 hours in hurry!! :)
>>>> >>>>>>
>>>> >>>>>> Am I wrong in something?
>>>> >>>>>>
>>>> >>>>>> I wish you a wonderful Wednesday,
>>>> >>>>>> David
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>> --
>>>> >>>>>
>>>> >>>>>
>>>> >>>>>
>>>> >>>>
>>>> >>>>
>>>> >>> --
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>
>>>> >>
>>>> > --
>>>> >
>>>> >
>>>> >
>>>>
>>>> --
>>>>
>>>>
>>>>
>>>>
>>>  -- 
>>  
>>  
>>  
>>
>
>

-- 



Reply via email to