682 |
682 |
683 def execute(self, sessionid, rqlstring, args=None, build_descr=True, |
683 def execute(self, sessionid, rqlstring, args=None, build_descr=True, |
684 txid=None): |
684 txid=None): |
685 """execute a RQL query |
685 """execute a RQL query |
686 |
686 |
687 * rqlstring should be an unicode string or a plain ascii string |
687 * rqlstring should be a unicode string or a plain ascii string |
688 * args the optional parameters used in the query |
688 * args the optional parameters used in the query |
689 * build_descr is a flag indicating if the description should be |
689 * build_descr is a flag indicating if the description should be |
690 built on select queries |
690 built on select queries |
691 """ |
691 """ |
692 session = self._get_session(sessionid, setcnxset=True, txid=txid) |
692 session = self._get_session(sessionid, setcnxset=True, txid=txid) |
1260 hm.call_hooks('after_delete_relation', cnx, |
1260 hm.call_hooks('after_delete_relation', cnx, |
1261 eidfrom=entity.eid, rtype=attr, eidto=prevvalue) |
1261 eidfrom=entity.eid, rtype=attr, eidto=prevvalue) |
1262 if relcache is not None: |
1262 if relcache is not None: |
1263 cnx.update_rel_cache_del(entity.eid, attr, prevvalue) |
1263 cnx.update_rel_cache_del(entity.eid, attr, prevvalue) |
1264 del_existing_rel_if_needed(cnx, entity.eid, attr, value) |
1264 del_existing_rel_if_needed(cnx, entity.eid, attr, value) |
1265 if relcache is not None: |
1265 cnx.update_rel_cache_add(entity.eid, attr, value) |
1266 cnx.update_rel_cache_add(entity.eid, attr, value) |
|
1267 else: |
|
1268 entity.cw_set_relation_cache(attr, 'subject', |
|
1269 cnx.eid_rset(value)) |
|
1270 hm.call_hooks('after_add_relation', cnx, |
1266 hm.call_hooks('after_add_relation', cnx, |
1271 eidfrom=entity.eid, rtype=attr, eidto=value) |
1267 eidfrom=entity.eid, rtype=attr, eidto=value) |
1272 finally: |
1268 finally: |
1273 if orig_edited is not None: |
1269 if orig_edited is not None: |
1274 entity.cw_edited = orig_edited |
1270 entity.cw_edited = orig_edited |