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 [email protected] 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 -~----------~----~----~----~------~----~------~--~---
