> another, more basic question - my app has both an admin area and a
> public area. rather than stuff all the logic into one controllers.py
> module, it seems like the thing to do is tell turbogears to use one
> controllers module for /admin and another for everything else. is there
> a recommended pattern for this?

Controllers are just python classes, so if you want to write a
controller for another portion of your site just import a new class.
As an example, you want to write an admin class that would control the
/admin branch of your site. So open up a new module, admin.py, and
import the appropriate turbogears stuff from the top of controller.py,
then create a class just like Root.

Example:
class Admin:
    @expose(html="whatever")
    def index(self):
        hello = "hello, world!"
        return dict(hello=hello)

In the original controller.py you then need to import this using the
import command, so you would need to add something like:  "from admin
import Admin" which will expose that class to the controller.

Finally, to link that class to your main controller so that it will
handle "/admin" you need to add a reference in the Root class, like
this:
    admin = Admin()

What that does is simple, when TG comes across "/admin" it will look
into Root and see what handles it, instead of finding "def
somename(self):" it instead finds "admin=Admin()" and knows to then
check the Admin class for a "def index(self):" to serve the request.
All the same TG rules apply when constructing your Admin class.

Hope that helps. I'm sure that's explained somewhere more concisely,
but I'm too tired to look for it :)


Nathan


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to