cwvreg.py
branch3.5
changeset 3184 613064b49331
parent 3071 6ad4e6d4df86
parent 3172 9341ab8f1d1a
child 3185 bd0126d17e83
child 3205 dc67e9431f34
equal deleted inserted replaced
3177:e7ae807554d9 3184:613064b49331
   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]