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 |