goa/db.py
branchstable
changeset 3689 deb13e88e037
parent 2650 18aec79ec3a3
child 3720 5376aaadd16b
child 4212 ab6573088b4a
equal deleted inserted replaced
3688:421fb447ecb2 3689:deb13e88e037
   145 
   145 
   146     @classmethod
   146     @classmethod
   147     def __initialize__(cls):
   147     def __initialize__(cls):
   148         super(Model, cls).__initialize__()
   148         super(Model, cls).__initialize__()
   149         cls._attributes = frozenset(rschema for rschema in cls.e_schema.subject_relations()
   149         cls._attributes = frozenset(rschema for rschema in cls.e_schema.subject_relations()
   150                                     if rschema.is_final())
   150                                     if rschema.final)
   151 
   151 
   152     def __init__(self, *args, **kwargs):
   152     def __init__(self, *args, **kwargs):
   153         # db.Model prototype:
   153         # db.Model prototype:
   154         #   __init__(self, parent=None, key_name=None, **kw)
   154         #   __init__(self, parent=None, key_name=None, **kw)
   155         #
   155         #
   160             self._gaeinitargs = None
   160             self._gaeinitargs = None
   161         else:
   161         else:
   162             super(Model, self).__init__(None, None)
   162             super(Model, self).__init__(None, None)
   163             # if Model instances are given in kwargs, turn them into db model
   163             # if Model instances are given in kwargs, turn them into db model
   164             for key, val in kwargs.iteritems():
   164             for key, val in kwargs.iteritems():
   165                 if key in self.e_schema.subject_relations() and not self.e_schema.schema[key].is_final():
   165                 if key in self.e_schema.subject_relations() and not self.e_schema.schema[key].final:
   166                     if isinstance(kwargs, (list, tuple)):
   166                     if isinstance(kwargs, (list, tuple)):
   167                         val = [isinstance(x, Model) and x._dbmodel or x for x in val]
   167                         val = [isinstance(x, Model) and x._dbmodel or x for x in val]
   168                     elif isinstance(val, Model):
   168                     elif isinstance(val, Model):
   169                         val = val._dbmodel
   169                         val = val._dbmodel
   170                     kwargs[key] = val.key()
   170                     kwargs[key] = val.key()