Given a DB table (called db.t_schedule, with the field names/types and
corresponding values show below), is there a way to generate an
SQLFORM.grid based on the db.t_schedule table such that:
- There is no grid row which has the same 'f_uuid' as any other grid row
- For each grid row, the earliest ‘start_time’ for a particular 'f_uuid'
is displayed
- The ‘user_id’ and ‘user_id_2’ values corresponding to the
db.t_schedule row with the earliest ‘start_time’ for a given 'f_uuid' are
displayed
- The grid is sorted by the ‘f_start’ field
The db.t_schedule DB data:
id
f_uuid
(string)
f_start
(date)
user_id
(reference db.auth_user.id)
user_id_2
(reference db.auth_user.id)
1
123
2/24/16
1
4
2
123
1/24/16
2
5
3
123
1/15/16
3
6
4
234
2/23/16
4
4
5
234
2/27/16
5
2
6
234
1/2/16
6
8
7
345
2/25/16
7
6
8
345
2/26/16
8
5
The desired SQLFORM.grid resembles the following:
f_uui
(string)
f_start
(date)
user_id
(reference db.auth_user.id)
user_id_2
(reference db.auth_user.id)
123
1/15/16
3
6
234
1/2/16
6
8
345
2/25/16
7
6
I guess one way to do it would be something like the following, but this
doesn’t seem to be the most efficient or practical way of going about it,
especially if dealing with a large number of rows:
dict__ids = {} # key: uuid, val = schedule ID
fields__select = [db.t_schedule.f_uuid,db.t_schedule.id,db.t_schedule.
f_start]
for row__appointment in db(query__select).select(*fields__select, orderby =~
db.t_schedule.f_start):
if not row__appointment['id'] in dict__ids.keys():
dict__ids[row__appointment['f_uuid']] = row__appointment['id']
query = db.t_schedule.id.belongs(dict__ids.values())
grid = SQLFORM.grid(query, ...)
I’ve been tinkering with a variety of query variants, and combinations of
groupby/orderby, but I’m not sure about the most efficient way to generate
a grid which meets the above conditions. Any help would be much
appreciated.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.