server/migractions.py
changeset 10640 17bdc485c5b2
parent 10632 d89e9176d263
parent 10584 743ed2b13a6f
child 10646 45671fb330f5
equal deleted inserted replaced
10639:1ed205146ee2 10640:17bdc485c5b2
   456         physical schema changes should be handled by repository's schema hooks
   456         physical schema changes should be handled by repository's schema hooks
   457         """
   457         """
   458         rtype = str(rtype)
   458         rtype = str(rtype)
   459         if rtype in self._synchronized:
   459         if rtype in self._synchronized:
   460             return
   460             return
   461         self._synchronized.add(rtype)
   461         if syncrdefs and syncperms and syncprops:
       
   462             self._synchronized.add(rtype)
   462         rschema = self.fs_schema.rschema(rtype)
   463         rschema = self.fs_schema.rschema(rtype)
   463         reporschema = self.repo.schema.rschema(rtype)
   464         reporschema = self.repo.schema.rschema(rtype)
   464         if syncprops:
   465         if syncprops:
   465             assert reporschema.eid, reporschema
   466             assert reporschema.eid, reporschema
   466             self.rqlexecall(ss.updaterschema2rql(rschema, reporschema.eid),
   467             self.rqlexecall(ss.updaterschema2rql(rschema, reporschema.eid),
   487         * permissions if `syncperms`
   488         * permissions if `syncperms`
   488         """
   489         """
   489         etype = str(etype)
   490         etype = str(etype)
   490         if etype in self._synchronized:
   491         if etype in self._synchronized:
   491             return
   492             return
   492         self._synchronized.add(etype)
   493         if syncrdefs and syncperms and syncprops:
       
   494             self._synchronized.add(etype)
   493         repoeschema = self.repo.schema.eschema(etype)
   495         repoeschema = self.repo.schema.eschema(etype)
   494         try:
   496         try:
   495             eschema = self.fs_schema.eschema(etype)
   497             eschema = self.fs_schema.eschema(etype)
   496         except KeyError:
   498         except KeyError:
   497             return # XXX somewhat unexpected, no?...
   499             return # XXX somewhat unexpected, no?...
   585             raise ExecutionError('Cannot synchronize a relation definition for a '
   587             raise ExecutionError('Cannot synchronize a relation definition for a '
   586                                  'computed relation (%s)' % rschema)
   588                                  'computed relation (%s)' % rschema)
   587         reporschema = self.repo.schema.rschema(rschema)
   589         reporschema = self.repo.schema.rschema(rschema)
   588         if (subjtype, rschema, objtype) in self._synchronized:
   590         if (subjtype, rschema, objtype) in self._synchronized:
   589             return
   591             return
   590         self._synchronized.add((subjtype, rschema, objtype))
   592         if syncperms and syncprops:
   591         if rschema.symmetric:
   593             self._synchronized.add((subjtype, rschema, objtype))
   592             self._synchronized.add((objtype, rschema, subjtype))
   594             if rschema.symmetric:
       
   595                 self._synchronized.add((objtype, rschema, subjtype))
   593         rdef = rschema.rdef(subjtype, objtype)
   596         rdef = rschema.rdef(subjtype, objtype)
   594         if rdef.infered:
   597         if rdef.infered:
   595             return # don't try to synchronize infered relation defs
   598             return # don't try to synchronize infered relation defs
   596         repordef = reporschema.rdef(subjtype, objtype)
   599         repordef = reporschema.rdef(subjtype, objtype)
   597         confirm = self.verbosity >= 2
   600         confirm = self.verbosity >= 2