cwvreg.py
branchstable
changeset 3172 9341ab8f1d1a
parent 3057 f4ba5a251ab7
child 3184 613064b49331
equal deleted inserted replaced
3171:b10f0c1f3fe4 3172:9341ab8f1d1a
   128             return self.select('Any', 'Any')
   128             return self.select('Any', 'Any')
   129         eschema = self.schema.eschema(etype)
   129         eschema = self.schema.eschema(etype)
   130         baseschemas = [eschema] + eschema.ancestors()
   130         baseschemas = [eschema] + eschema.ancestors()
   131         # browse ancestors from most specific to most generic and try to find an
   131         # browse ancestors from most specific to most generic and try to find an
   132         # associated custom entity class
   132         # associated custom entity class
       
   133         cls = None
   133         for baseschema in baseschemas:
   134         for baseschema in baseschemas:
   134             try:
   135             try:
   135                 btype = ETYPE_NAME_MAP[baseschema]
   136                 btype = ETYPE_NAME_MAP[baseschema]
   136             except KeyError:
   137             except KeyError:
   137                 btype = str(baseschema)
   138                 btype = str(baseschema)
   138             try:
   139             if cls is None:
   139                 objects = self[btype]
   140                 try:
   140                 assert len(objects) == 1, objects
   141                     objects = self[btype]
   141                 cls = objects[0]
   142                     assert len(objects) == 1, objects
   142                 break
   143                     cls = objects[0]
   143             except ObjectNotFound:
   144                 except ObjectNotFound:
   144                 pass
   145                     pass
   145         else:
   146             else:
       
   147                 # ensure parent classes are built first
       
   148                 self.etype_class(btype)
       
   149         if cls is None:
   146             # no entity class for any of the ancestors, fallback to the default
   150             # no entity class for any of the ancestors, fallback to the default
   147             # one
   151             # one
   148             objects = self['Any']
   152             objects = self['Any']
   149             assert len(objects) == 1, objects
   153             assert len(objects) == 1, objects
   150             cls = objects[0]
   154             cls = objects[0]