On Mon, Jul 23, 2012 at 12:17 PM, howesc <[email protected]> wrote:
> Alec,
>
> the Mysterious part of this mystery is the "controller" called with a
> parameter....in web2py land that is not really a controller, but just a
> helper method. in your case event_page() returns it's value to the d()
> method (which web2py does think is a controller), and then web2py execution
> continues....so it's in the d() method before return from it that you must
> customize the view.
>
> anthony's answer is spot on....i was just hoping to unravel the mystery
> slightly. :)
>
> cfh
Ahh, I see now :)
> On Sunday, July 22, 2012 11:48:13 AM UTC-7, Anthony wrote:
>>
>> Where did you set response.view -- should be something like:
>>
>> def d():
>> group = db(db.group_of_events.group_name == request.args(0)).select()
>> or redirect(URL('', 'groups'))
>> events = db(db.event.group_id == group[0].id).select()
>> if request.args(1):
>> response.view = 'group/event_page.html'
>> return event_page({'foo':'bar'})
>> return dict(group=group, events=events, eventpage=eventpage)
>>
>> You could also set it in the event_page function.
>>
>> Anthony
Thanks, I was able to decouple the view thanks to that :)
>> On Sunday, July 22, 2012 2:39:07 PM UTC-4, Alec Taylor wrote:
>>>
>>> Thanks for the advise, unfortunately that didn't work either.
>>>
>>> I have been able to get it working though, within the "d.html" template:
>>>
>>> # /social/views/group/d.html
>>>
>>> {{if 'eventpage' in globals() and 'group_name' in globals():}}
>>> {{if len(eventpage):}}
>>> <h4>{{=group_name}}</h4>
>>> {{=eventpage}}
>>> {{else:}}
>>> Error: group ID not found
>>> {{pass}}
>>>
>>> {{elif 'group' in globals():}}
>>> ...
>>>
>>>
>>> # /social/controllers/group.py
>>> def d():
>>> group = db(db.group_of_events.group_name == request.args(0)).select()
>>> or redirect(URL('', 'groups'))
>>> events = db(db.event.group_id == group[0].id).select()
>>> if request.args(1):
>>> requested_event = None
>>> for event in events:
>>> if event.id==int(request.args(1)):
>>> requested_event = event
>>> break
>>> return event_page(requested_event, group[0].group_name)
>>> return dict(group=group, events=events)
>>>
>>> def event_page(requested_event, group):
>>> eventpage = requested_event or redirect(URL('',
>>> 'group/d/'+str(group)))
>>> return dict(group_name=group, eventpage=eventpage)
>>>
>>>
>>>
>>> :D
>
> --
>
>
>
--