Ahh Right I see, I could trade off the mixablility of Commentable with Taggable. hmm, how about a factory?
regards, Moritz On Wed, Nov 19, 2008 at 10:48 PM, Moritz Angermann <[EMAIL PROTECTED]> wrote: > Sorry for adding confustion to this buy why does Chained inheritance not work? > > class Commentable(db.Model): > def put(...): ... # if some create/modify logic is needed > def delete(...): ... # if some delete magic is needed (trash comments?) > comments_counter = db.IntegerProperty(required=True, defualt=0) > > class Post(Commentable): > title = db.StringProperty(required=True) > body = db.TextProperty(required=True) > added = db.DateProperty(auto_add_now=True) > > this is perfectly readable and sould do pretty much what was asked for. > > Am I missing something? > > > BTW: Adam, how do I search with the tag mixins for the objects that > are tagged with "A", "B", "C" and "D"? // just curious because I > implemented some tagging to my app the other day and didn't use the > solution you used. > > regards, > Moritz > > On Wed, Nov 19, 2008 at 10:07 PM, Adam <[EMAIL PROTECTED]> wrote: >> >> Not that anyone cares, but the metaclass approach did not work, as >> Python doesn't want to have two non-identical metaclasses in an >> inheritance chain. Or something. >> >> On Nov 18, 10:42 am, Adam <[EMAIL PROTECTED]> wrote: >>> It just occurred to me that this solution could be made much easier by >>> using a simple, small metaclass (which, it is worth noting, I totally >>> copped from GAE's PropertiedClass metaclass): >>> >>> class ModelMixin(type): >>> def __init__(cls, name, bases, dct): >>> super(PropertiedClass, cls).__init__(name, bases, dct) >>> >>> for attr_name in dct.keys(): >>> attr = dct[attr_name] >>> if isinstance(attr, Property): >>> cls._properties[attr_name] = attr >>> >>> class Commentable(): >>> __metaclass__ = ModelMixin >>> >>> comments_counter = db.IntegerProperty(required=True, default=0) >>> >>> Bada-bing. Now, the ugly nonsense of creating the _properties dict >>> and assigning to it is gone. >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---