Ticket #307: facorreia-ticket-307.patch

File facorreia-ticket-307.patch, 1.8 KB (added by facorreia, 6 months ago)

alternative patch proposed

  • pyamf/adapters/_google_appengine_ext_db.py

     
    2626        remove = True 
    2727        self.context.class_aliases[obj.__class__] = pyamf.ClassAlias(obj.__class__, None) 
    2828 
    29     self.writeObject(obj, *args, **kwargs) 
     29    writeObjectAMF(self, obj, args, kwargs, remove) 
    3030 
    31     if remove: 
    32         self.context.class_aliases[obj.__class__] = None 
    33  
    3431def writeObjectAMF3(self, obj, *args, **kwargs): 
    3532    try: 
    3633        self.context.getClassDefinitionReference(obj) 
     
    4441            alias = pyamf.ClassAlias(obj.__class__, None) 
    4542            self.context.class_aliases[obj.__class__] = alias 
    4643 
     44    writeObjectAMF(self, obj, args, kwargs, remove) 
     45 
     46def writeObjectAMF(self, obj, args, kwargs, remove): 
     47    """ 
     48    Writes an object that has already been prepared by writeObjectAMF0 or writeObjectAMF3. 
     49    """ 
     50    try: 
     51        obj._key = str(obj.key()) 
     52    except: 
     53        obj._key = None 
    4754    self.writeObject(obj, *args, **kwargs) 
    48  
     55    del obj._key 
    4956    if remove: 
    5057        self.context.class_aliases[obj.__class__] = None 
    5158 
     
    5360    """ 
    5461    Returns a list of properties on an C{db.Model} instance. 
    5562    """ 
    56     return list(obj.__class__._properties) 
     63    return list(obj.__class__._properties) + ['_key'] 
    5764 
    5865def get_attrs_for_expando(obj): 
    5966    """ 
    6067    Returns a list of dynamic properties on a C{db.Expando} instance. 
    6168    """ 
    62     return obj.dynamic_properties() 
     69    return obj.dynamic_properties() + ['_key'] 
    6370 
    6471pyamf.register_class(db.Model, attr_func=get_attrs_for_model, metadata=['dynamic']) 
    6572pyamf.register_class(db.Expando, attr_func=get_attrs_for_expando, metadata=['dynamic'])