> i am confused about the terminology between plugins vs wsgi middleware > vs components vs extensions. the discussions and documentation varies > between tg1 and tg2, so please advise on which term i should google to > achieve what i am trying to do. > > i want to extend my models to be "taggable", or "commentable", or > "rateable". i am ok with either installing/or building a tagging > "plugin". it basically enables my projects to tag my objects and > extends my objects so that i could call obj.tags() to get a list of > tags. ideally, this could be an egg which i install. then in my > project created the necessary tables, import the modules/libraries, > and i am ready to go. > > between reading (and still digesting) pep333, the tg2 trac ticker > #1655 on "components", and the tgext extensions, i am confused between > the approaches and what the distinctions are... my guess would be the > wsgi middleware, b/c the #1655 ticket seems to talk about apps more > like catwalk and tg-admin, whereas i m just trying to extend my > models. but i am really not sure. if someone could point me in the > right direction, it would be much much appreciated.
Hi, I needed a similar thing too, I wanted my objects to be commentable. First, I thought about an overarching solution, similarly to what you describe, namely that I write the apps without comments and then do some black magic and all apps turn into "commentable apps" i.e. the objects will have the right attributes, the right tables and relationships are created automagically and queries like obj.comments( ) suddenly work because they issue the right joins. After some thought I abandoned this great scheme though. Since ultimately you want to do something with the comments and inevitable it will depend on the app what you want to do with them. The business logic will inevitably enter the comment system too, it's just not possible, I think, to abstract the whole thing away. Probably it's actually possible, but I don't think it's very useful. So after all I ended up coding the comment system right into the apps. There are lots of stuff one can factor out thought, for example all my model objects that need comments inherit from a class called commentMixin and this class is the same for all apps that need this feature. This mixin provides the common attributes like 'get all comments', 'get last comment', 'count all comments', etc, etc. So it's still DRY but it doesn't work in a way that I write the app without comments, install its egg, install also the comment system egg and then automagically everything works. HTH, Daniel -- Psss, psss, put it down! - http://www.cafepress.com/putitdown -- 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.

