1084 def cmd_add_relation_definition(self, subjtype, rtype, objtype, commit=True): |
1084 def cmd_add_relation_definition(self, subjtype, rtype, objtype, commit=True): |
1085 """register a new relation definition, from its definition found in the |
1085 """register a new relation definition, from its definition found in the |
1086 schema definition file |
1086 schema definition file |
1087 """ |
1087 """ |
1088 rschema = self.fs_schema.rschema(rtype) |
1088 rschema = self.fs_schema.rschema(rtype) |
|
1089 if rschema.rule: |
|
1090 raise ExecutionError('Cannot add a relation definition for a ' |
|
1091 'computed relation (%s)' % rschema) |
1089 if not rtype in self.repo.schema: |
1092 if not rtype in self.repo.schema: |
1090 self.cmd_add_relation_type(rtype, addrdef=False, commit=True) |
1093 self.cmd_add_relation_type(rtype, addrdef=False, commit=True) |
1091 if (subjtype, objtype) in self.repo.schema.rschema(rtype).rdefs: |
1094 if (subjtype, objtype) in self.repo.schema.rschema(rtype).rdefs: |
1092 print 'warning: relation %s %s %s is already known, skip addition' % ( |
1095 print 'warning: relation %s %s %s is already known, skip addition' % ( |
1093 subjtype, rtype, objtype) |
1096 subjtype, rtype, objtype) |
1111 return rdef |
1114 return rdef |
1112 |
1115 |
1113 def cmd_drop_relation_definition(self, subjtype, rtype, objtype, commit=True): |
1116 def cmd_drop_relation_definition(self, subjtype, rtype, objtype, commit=True): |
1114 """unregister an existing relation definition""" |
1117 """unregister an existing relation definition""" |
1115 rschema = self.repo.schema.rschema(rtype) |
1118 rschema = self.repo.schema.rschema(rtype) |
|
1119 if rschema.rule: |
|
1120 raise ExecutionError('Cannot drop a relation definition for a ' |
|
1121 'computed relation (%s)' % rschema) |
1116 # unregister the definition from CWAttribute or CWRelation |
1122 # unregister the definition from CWAttribute or CWRelation |
1117 if rschema.final: |
1123 if rschema.final: |
1118 etype = 'CWAttribute' |
1124 etype = 'CWAttribute' |
1119 else: |
1125 else: |
1120 etype = 'CWRelation' |
1126 etype = 'CWRelation' |