Thank you for the help, guys. In addition to what you recommended, I
found I had to call the new function I added to lib.helpers in
lib.base.BaseController.__call__, which is called on every request.
Tim
On 10/06/2010 02:54 AM, Diez B. Roggisch wrote:
>
> On Oct 6, 2010, at 7:06 AM, Tim Black wrote:
>
>> What is the best way to populate a tgext.menu with new data on every
>> page refresh so it contains only those records returned by a
>> particular database query? Here's how I'm trying to do it:
>>
>> class RootController(BaseController):
>> def __init__(self):
>> for p in DBSession.query(model.Project):
>> navbar_append("Projects || " + p.name <http://p.name>,
>> url='/project/' + str(p.id))
>>
>> This DOES add a new project to the menu when I add a project to the
>> database, which is great. But it does NOT do another thing I need it
>> to do: remove a project from the menu when I delete a project from
>> the database. That makes me think I need to iterate through existing
>> menu items and selectively delete those that should no longer exist.
>> If this is the solution, where can I find that list of menu items?
>> I've read the tgext.menu code and tried to introspect the navbar
>> object, but can't figure out the answer to that question.
>
> I don't know anything about tgext.menu, but two remarks:
>
> - the above obviously can't work, as it's run only once per
> controller instance. *If* tgext.menu is dynamic enough by itself, you
> need to stuff this code into a place that's run every time in a
> request - e.g. the variable providers.
>
> - I would use a widget for this. Probably also stuffed into the
> variable providers, and rendered by the master.html.
>
> Diez
> --
> You received this message because you are subscribed to the Google
> Groups "TurboGears" 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/turbogears?hl=en.
--
You received this message because you are subscribed to the Google Groups
"TurboGears" 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/turbogears?hl=en.