hooks/syncschema.py
changeset 6173 eb386e473044
parent 6142 8bc6eac1fac1
parent 6163 407f54345687
child 6225 a176e68b7d0d
equal deleted inserted replaced
6162:76bd320c5ace 6173:eb386e473044
   517                 add_inline_relation_column(session, rdefdef.subject, rtype)
   517                 add_inline_relation_column(session, rdefdef.subject, rtype)
   518             eschema = schema[rdefdef.subject]
   518             eschema = schema[rdefdef.subject]
   519             insert_rdef_on_subclasses(session, eschema, rschema, rdefdef,
   519             insert_rdef_on_subclasses(session, eschema, rschema, rdefdef,
   520                                       {'composite': entity.composite})
   520                                       {'composite': entity.composite})
   521         else:
   521         else:
       
   522             if rschema.symmetric:
       
   523                 # for symmetric relations, rdefs will store relation definitions
       
   524                 # in both ways (i.e. (subj -> obj) and (obj -> subj))
       
   525                 relation_already_defined = len(rschema.rdefs) > 2
       
   526             else:
       
   527                 relation_already_defined = len(rschema.rdefs) > 1
   522             # need to create the relation if no relation definition in the
   528             # need to create the relation if no relation definition in the
   523             # schema and if it has not been added during other event of the same
   529             # schema and if it has not been added during other event of the same
   524             # transaction
   530             # transaction
   525             if not (len(rschema.rdefs) > 1 or
   531             if not (relation_already_defined or
   526                     rtype in session.transaction_data.get('createdtables', ())):
   532                     rtype in session.transaction_data.get('createdtables', ())):
   527                 rschema = schema.rschema(rtype)
   533                 rschema = schema.rschema(rtype)
   528                 # create the necessary table
   534                 # create the necessary table
   529                 for sql in y2sql.rschema2sql(rschema).split(';'):
   535                 for sql in y2sql.rschema2sql(rschema).split(';'):
   530                     if sql.strip():
   536                     if sql.strip():