server/schemaserial.py
changeset 4010 b2d0b14a365d
parent 4003 b9436fe77c9e
child 4011 394f853bb653
equal deleted inserted replaced
4009:fa4189f2cf98 4010:b2d0b14a365d
   200                                   constraints=constraints,
   200                                   constraints=constraints,
   201                                   indexed=idx, fulltextindexed=ftidx,
   201                                   indexed=idx, fulltextindexed=ftidx,
   202                                   internationalizable=i18n,
   202                                   internationalizable=i18n,
   203                                   default=default, eid=rdefeid)
   203                                   default=default, eid=rdefeid)
   204         rdefs = schema.add_relation_def(rdef)
   204         rdefs = schema.add_relation_def(rdef)
   205         set_perms(rdefs, permsdict.get(rdefeid, {}))
   205         # rdefs can be None on duplicated relation definitions (e.g. symetrics)
       
   206         if rdefs:
       
   207             set_perms(rdefs, permsdict.get(rdefeid, {}))
   206     for values in session.execute(
   208     for values in session.execute(
   207         'Any X,SE,RT,OE,CARD,ORD,DESC,C WHERE X is CWRelation, X relation_type RT,'
   209         'Any X,SE,RT,OE,CARD,ORD,DESC,C WHERE X is CWRelation, X relation_type RT,'
   208         'X cardinality CARD, X ordernum ORD, X description DESC, '
   210         'X cardinality CARD, X ordernum ORD, X description DESC, '
   209         'X from_entity SE, X to_entity OE, X composite C', build_descr=False):
   211         'X from_entity SE, X to_entity OE, X composite C', build_descr=False):
   210         rdefeid, seid, reid, teid, card, ord, desc, c = values
   212         rdefeid, seid, reid, teid, card, ord, desc, c = values
   215         rdef = ybo.RelationDefinition(frometype, rtype, toetype, cardinality=card,
   217         rdef = ybo.RelationDefinition(frometype, rtype, toetype, cardinality=card,
   216                                   order=ord, description=desc,
   218                                   order=ord, description=desc,
   217                                   composite=c, constraints=constraints,
   219                                   composite=c, constraints=constraints,
   218                                   eid=rdefeid)
   220                                   eid=rdefeid)
   219         rdefs = schema.add_relation_def(rdef)
   221         rdefs = schema.add_relation_def(rdef)
   220         set_perms(rdefs, permsdict.get(rdefeid, {}))
   222         # rdefs can be None on duplicated relation definitions (e.g. symetrics)
       
   223         if rdefs:
       
   224             set_perms(rdefs, permsdict.get(rdefeid, {}))
   221     schema.infer_specialization_rules()
   225     schema.infer_specialization_rules()
   222     if _3_2_migration:
   226     if _3_2_migration:
   223         _update_database(schema, sqlcu)
   227         _update_database(schema, sqlcu)
   224         _set_sql_prefix('cw_')
   228         _set_sql_prefix('cw_')
   225     session.commit()
   229     session.commit()