server/migractions.py
changeset 9961 cef58bd36f7b
parent 9773 71a45642b3d2
child 9962 64b573d54133
equal deleted inserted replaced
9960:6359f3121f3f 9961:cef58bd36f7b
  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'