cubicweb/server/ssplanner.py
changeset 12242 68ca7fe0ca29
parent 12227 dc333e9104c9
child 12248 6350e0a482d5
equal deleted inserted replaced
12241:06deb43c23c3 12242:68ca7fe0ca29
   202         for etype, var in rqlst.main_variables:
   202         for etype, var in rqlst.main_variables:
   203             step = DeleteEntitiesStep(plan)
   203             step = DeleteEntitiesStep(plan)
   204             step.children += self._sel_variable_step(plan, rqlst, etype, var)
   204             step.children += self._sel_variable_step(plan, rqlst, etype, var)
   205             steps.append(step)
   205             steps.append(step)
   206         for relation in rqlst.main_relations:
   206         for relation in rqlst.main_relations:
   207             step = DeleteRelationsStep(plan, relation.r_type)
   207             rtype = relation.r_type
       
   208             if self.schema[rtype].rule:
       
   209                 raise QueryError("'%s' is a computed relation" % rtype)
       
   210             step = DeleteRelationsStep(plan, rtype)
   208             step.children += self._sel_relation_steps(plan, rqlst, relation)
   211             step.children += self._sel_relation_steps(plan, rqlst, relation)
   209             steps.append(step)
   212             steps.append(step)
   210         return steps
   213         return steps
   211 
   214 
   212     def _sel_variable_step(self, plan, rqlst, etype, varref):
   215     def _sel_variable_step(self, plan, rqlst, etype, varref):
   491         else:
   494         else:
   492             result = [[]]
   495             result = [[]]
   493         for i, row in enumerate(result):
   496         for i, row in enumerate(result):
   494             newrow = []
   497             newrow = []
   495             for (lhsinfo, rhsinfo, rschema) in self.updatedefs:
   498             for (lhsinfo, rhsinfo, rschema) in self.updatedefs:
       
   499                 if rschema.rule:
       
   500                     raise QueryError("'%s' is a computed relation"
       
   501                                      % rschema.type)
   496                 lhsval = _handle_relterm(lhsinfo, row, newrow)
   502                 lhsval = _handle_relterm(lhsinfo, row, newrow)
   497                 rhsval = _handle_relterm(rhsinfo, row, newrow)
   503                 rhsval = _handle_relterm(rhsinfo, row, newrow)
   498                 if rschema.final or rschema.inlined:
   504                 if rschema.final or rschema.inlined:
   499                     eid = int(lhsval)
   505                     eid = int(lhsval)
   500                     try:
   506                     try: