It is better to store times as 'times' in the database rather than
muck about with times in string format. A lot better.

I think this controller model / code will do what you want (note that
I didn't make a 'weekday' table and I force the current seconds to
zero to you get results that start during the current minute i.e.
15:00 results show up at 15:00 but not at 15:01).

CONTROLLER:
def index():
    weekday=request.now.weekday() + 1
    nowtime = request.now.time().replace(second=0,microsecond=0)
    timetable=db((db.timetable.day==weekday)&
(db.timetable.time>=nowtime)).select
(db.timetable.ALL,orderby=db.timetable.time,limitby=(0,6))
    return dict(message=SQLTABLE(timetable))

MODEL:
(simplified from what you want)
db.define_table('timetable',
   db.Field('day', 'integer'),
   db.Field('time', 'time'))

One way of disabling the time picker is to remove the line
try { $("input.time").clockpick({     starthour:0, endhour:23,
showminutes:true, military:true}); } catch(e) {};
from web2py_ajax.html in 'views'. Another way would be do use jquery
to remove the clockpick class from the input field on document load.
But there is probably an even better way that someone else might tell
us...

Chris
On Jun 22, 9:10 am, annet <[email protected]> wrote:
> In my model I defined:
>
> db.define_table('timetable',
>     db.Field(...),
>     db.Field('day',db.day,default='',notnull=True),
>     db.Field('time',length=5,default='',notnull=True),
>     db.Field(...),
>     migrate='timetable.table')
>
> In a view I would like to display today's upcoming programs, the
> function reads like:
>
> weekday=request.now.weekday() + 1
>     hourminute=str(request.now.hour) + ':' + str(request.now.minute)
>     timetable=db((db.timetable.day==weekday)&
> (db.timetable.time>=hourminute))\
>     .select(db.timetable.ALL,orderby=db.timetable.time,limitby=(0,6))
>
> The problem is that in the database the time reads like 09:45 whereas
> hourminute reads like 9:30, consequently the query doesn't return any
> results before 10:00, after 10:00 it works alright.
>
> I tried making time a field of type datetime, format it like '%H:%S'
> and then do: db.timetable.time>=request.now But a field of type
> datetime makes the calendar pop up and that doesn't allow me to enter
> times like 09:45.
>
> I wonder whether request.now.hour is able to return the hours in a
> different format. Else, I guess I have to write a custom function to
> get the hours formatted correctly.
>
> 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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to