Thanks for your additional comments, Mark - you've given me more stuff to
think about! :) I appreciate you taking the time to explain more about this
subject.

On Thu, Nov 6, 2008 at 2:57 PM, Mark Ramm <[EMAIL PROTECTED]>wrote:

>
> > I'll tell you the truth, the app-based design is a big deal to me, so
> > much so that I'm strongly leaning towards moving to Django even though
> > in most other ways I prefer TG. I really think that TG very strongly
> > needs a clear, easy and well-documented way to plug in functionality
> > in packages to existing projects. I feel that it's a sin for something
> > that works so smoothly in using a PHP framework to be so hard to do in
> > a Python framework unless you have an excellent reason not to build in
> > the functionality.
>
> This is very easy to do now in TG2 and TG -- except for the datamodel.
>  And the django people haven't solved that problem particularly well
> either.   The thing is that you need to create join tables for things
> like comments on posts and comments on pages and coments on messages,
> etc.   This "connective tissue" is the stuff that hooks these apps
> together at the data layer, and it's the part that can't be in the
> individual apps.
>
> While you can design apps the reduce the amount of "connective tissue"
> that they have, and the Django people have pushed that model quite a
> bit, it has some significant performance and flexibility drawbacks.
> The other alternative is to put the connective tissue in by copying
> the app in, and hacking up it's model a bit to fit it into your
> system.   This is also a method commonly used in the Django community.
>  But it makes it hard to maintain apps, across versions, since new
> versions will have to be merged into your now modified code.
>
> Another solution is the one we started in TG2 which is to make as few
> assumptions about the model as we can in the rest of the application
> code, and then allow the user to configure their own model classes
> which meet those assumptions and place them into a known location on
> the config object.   This takes extra work because we have to think
> through what the minimum interface requiremnt for that app's model is,
> and document it, but it's not hard to do.
>
> If you want to take a look at how this works in practice there's the
> silverplate app which provides user management for TG2 applications
> that use the standard  tgext.authorization stuff.
>
> Another approach is to create a model factory that you can use to
> create the model classes you need dynamically based on some
> configuration information.   This adds a little bit of complexity to
> creating the reusable app, but makes things much more flexible.
>
> And to the extent that you're apps have separate data that does not
> interact significantly, none of this is a problem at all, and all you
> need to do is make a module and put a app_root controller in there
> that you can import and instantiate in your root controller.  ;)
>
> --Mark Ramm
>
> >
>

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

Reply via email to