On 20 Jul 2012, at 12:11 PM, Alec Taylor wrote:
>
> Thanks, but I'm a little uncertain how to get the list of groups, I
> tried `if request.controller in
> db(db.group_of_events).select(orderby=db.group_of_events.group_name)`,
> but that didn't work.
You need to specify a field in the select, before the orderby.
But that's a lot of overhead to incur on every request. Better to check for
known controllers instead.
>
> Here's an extremely simplified version of my tables (if that's of help):
>
> db.define_table(
> 'group_of_events',
> Field('group_name', notnull=True, requires=[IS_NOT_IN_DB(db,
> 'group_of_events.group_name'), IS_SLUG()]),
> format='%(group_name)s'
> )
>
> db.define_table(
> 'event',
> Field('event_name', notnull=True),
> Field('group_id', 'reference db.group_of_events', notnull=True,
> requires=IS_IN_DB(db, db.group_of_events, '%(group_name)s')),
> format='%(event_name)s'
> )
>
>
> On Sat, Jul 21, 2012 at 5:03 AM, Bruno Rocha <[email protected]> wrote:
>> I dont know if it is a bug or feature (but I like it), you can do it in
>> models!
>>
>> models/0_routing.py
>>
>> if request.controller in MYLISTOFGROUPS:
>> groupslug = str(request.controller) # here you can use deep copy or just
>> str()
>> request.controller = 'group'
>> request.function = 'show'
>> request.args[0] = groupslug
>>
>>
>> controllers/group.py
>>
>> def show()
>> group = db(db.groups.slug==request.args(0)).select()
>> return dict(group=group)
>>
>
--