On Friday 26 June 2009 21:19:30 Rajesh D wrote: > > I have a conference management application. It has a list of menu items > > on the lefthand side. These menus are created by a templatetag from a > > list of menus in views.py. At various stages of the conference, menu > > items have to be enabled or disabled. For example, 'submit talk' has to > > be hidden after the last date for talk submission is over. At present I > > am doing this by commenting out the menu item in views.py and commenting > > out the corresponding url in urls.py. But this involves the admins > > delving into code, which is not a good thing as there is no guarantee > > that the admins will be programmers. The menu items can be put in a > > model, and have a boolean field 'activate'. That is not a problem. But if > > the url is not commented out in urls.py, there is nothing to prevent the > > user from directly typing in the url. So is there some way where these > > urls can also be stored in a model so that the admin just has to set > > 'activate' to false and the menu will not appear and the url will not be > > available for the user to directly type it in? > > You could use custom middleware code to set request.urlconf[1] from a > function that dynamically puts together the menu URLs based on your > model's activate flag. > > For an example of dynamically constructing URL patterns at run time, > see Django Admin's sites.AdminSite.get_urls method[2]. Note that this > admin method isn't called per request but the examply is still useful > to understand how simple it is to return a custom URL pattern list. > The key is to wire that function into the custom middleware mentioned > above.
thanks for the detailed reply, but I am terrified of going any where near middleware. I compromised by making a decorator that checks whether the menu item is enabled when ever a view function is called from that menu. Works for me (am fighting a deadline). -- regards kg http://lawgon.livejournal.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---