So here is my solution, https://gist.github.com/4164619
Hope it helps others to get an insight on generic relation in SQLAlchemy. On Tue, Nov 27, 2012 at 7:41 AM, Brice Leroy <bbrriic...@gmail.com> wrote: > Thank you for the advice Robert. As I'm using flask I'm not sure how > adaptable the ZCA would be. I'll try to understand the logic behind it and > see if I can replicate it within my models. > > > On Tue, Nov 27, 2012 at 7:12 AM, Robert Forkel <xrotw...@googlemail.com>wrote: > >> hi, >> i used to do something like this, i.e. adding information about urls, >> views, etc. to sqlalchemy models, but found this to be inflexibel. Now >> I keep URL-related information in the web app's routing component, and >> to solve problems like the one you pose, I use zca adapters [1] (which >> is easier when using pyramid, because you already have a component >> registry available). So with this technology you'd register the same >> FeedItem class as adapter for the various sqlalchemy models, which >> means that at adaption time, the object to adapt will be passed to >> you. >> regards >> robert >> >> [1] http://www.muthukadan.net/docs/zca.html >> >> >> On Tue, Nov 27, 2012 at 3:58 PM, Brice Leroy <bbrriic...@gmail.com> >> wrote: >> > Hello everybody, >> > >> > It's about brainstorming on an elegant solution. I previously posted >> this >> > question on the Flask mailing list, and I got advised to post it on >> > SQLAlchemy list... which make more sense I admit. So here is my issue: >> > >> > I have N different classes: >> > >> > class Comment(Models): >> > author_id = Integer >> > comment = String >> > creation_date = Date >> > >> > class Picture(Models): >> > author_id = Integer >> > image = File >> > creation_date = Date >> > ... >> > >> > now let say, I have a "follow" feature, allowing a user X to get updates >> > when Y (the user followed by X) does something (creepy...). >> > >> > So far I came up with something like that: >> > >> > class FeedItem(Model) >> > table = String >> > key = Integer >> > creation_date = Date >> > >> > def url(self): >> > #get object by querying self.table with self.key >> > object = self.get_an_object(table=self.table, key=self.key) >> > return object.view_url >> > >> > and then add this property to Comment and Picture classes: >> > >> > @property >> > def view_url(self): >> > return url_for('view_function_name', self.id) >> > >> > - What would be your way of dealing with this kind of "open/generic" >> > relationship items? >> > >> > - How would you manage automatic deletion of a FeedItem when the object >> it >> > points to get destroyed? (I'm thinking attaching function on delete >> event to >> > classes) >> > >> > - Would you create as many FeedItem per follower, or use a Table to link >> > them to followers, therefore deleting a FeedItem would automatically >> delete >> > the relation record from the Table.? >> > >> > Thank you, >> > >> > -- >> > Brice >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups >> > "sqlalchemy" group. >> > To post to this group, send email to sqlalchemy@googlegroups.com. >> > To unsubscribe from this group, send email to >> > sqlalchemy+unsubscr...@googlegroups.com. >> > For more options, visit this group at >> > http://groups.google.com/group/sqlalchemy?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To post to this group, send email to sqlalchemy@googlegroups.com. >> To unsubscribe from this group, send email to >> sqlalchemy+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/sqlalchemy?hl=en. >> >> > > > -- > -- > Brice > > -- Brice -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.