15 |
15 |
16 from indexer import get_indexer |
16 from indexer import get_indexer |
17 |
17 |
18 from cubicweb import UnknownEid, AuthenticationError, Binary, server |
18 from cubicweb import UnknownEid, AuthenticationError, Binary, server |
19 from cubicweb.server.utils import crypt_password |
19 from cubicweb.server.utils import crypt_password |
20 from cubicweb.server.sqlutils import SQLAdapterMixIn |
20 from cubicweb.server.sqlutils import SQL_PREFIX, SQLAdapterMixIn |
21 from cubicweb.server.rqlannotation import set_qdata |
21 from cubicweb.server.rqlannotation import set_qdata |
22 from cubicweb.server.sources import AbstractSource |
22 from cubicweb.server.sources import AbstractSource |
23 from cubicweb.server.sources.rql2sql import SQLGenerator |
23 from cubicweb.server.sources.rql2sql import SQLGenerator |
24 |
24 |
25 |
25 |
364 continue |
364 continue |
365 |
365 |
366 def add_entity(self, session, entity): |
366 def add_entity(self, session, entity): |
367 """add a new entity to the source""" |
367 """add a new entity to the source""" |
368 attrs = self.preprocess_entity(entity) |
368 attrs = self.preprocess_entity(entity) |
369 sql = self.sqlgen.insert(str(entity.e_schema), attrs) |
369 sql = self.sqlgen.insert(SQL_PREFIX + str(entity.e_schema), attrs) |
370 self.doexec(session.pool[self.uri], sql, attrs) |
370 self.doexec(session.pool[self.uri], sql, attrs) |
371 |
371 |
372 def update_entity(self, session, entity): |
372 def update_entity(self, session, entity): |
373 """replace an entity in the source""" |
373 """replace an entity in the source""" |
374 attrs = self.preprocess_entity(entity) |
374 attrs = self.preprocess_entity(entity) |
375 sql = self.sqlgen.update(str(entity.e_schema), attrs, ['eid']) |
375 sql = self.sqlgen.update(SQL_PREFIX + str(entity.e_schema), attrs, [SQL_PREFIX + 'eid']) |
376 self.doexec(session.pool[self.uri], sql, attrs) |
376 self.doexec(session.pool[self.uri], sql, attrs) |
377 |
377 |
378 def delete_entity(self, session, etype, eid): |
378 def delete_entity(self, session, etype, eid): |
379 """delete an entity from the source""" |
379 """delete an entity from the source""" |
380 attrs = {'eid': eid} |
380 attrs = {SQL_PREFIX + 'eid': eid} |
381 sql = self.sqlgen.delete(etype, attrs) |
381 sql = self.sqlgen.delete(SQL_PREFIX + etype, attrs) |
382 self.doexec(session.pool[self.uri], sql, attrs) |
382 self.doexec(session.pool[self.uri], sql, attrs) |
383 |
383 |
384 def add_relation(self, session, subject, rtype, object): |
384 def add_relation(self, session, subject, rtype, object): |
385 """add a relation to the source""" |
385 """add a relation to the source""" |
386 attrs = {'eid_from': subject, 'eid_to': object} |
386 attrs = {'eid_from': subject, 'eid_to': object} |
389 |
389 |
390 def delete_relation(self, session, subject, rtype, object): |
390 def delete_relation(self, session, subject, rtype, object): |
391 """delete a relation from the source""" |
391 """delete a relation from the source""" |
392 rschema = self.schema.rschema(rtype) |
392 rschema = self.schema.rschema(rtype) |
393 if rschema.inlined: |
393 if rschema.inlined: |
394 etype = session.describe(subject)[0] |
394 table = SQL_PREFIX + session.describe(subject)[0] |
395 sql = 'UPDATE %s SET %s=NULL WHERE eid=%%(eid)s' % (etype, rtype) |
395 column = SQL_PREFIX + rtype |
|
396 sql = 'UPDATE %s SET %s=NULL WHERE %seid=%%(eid)s' % (table, column, |
|
397 SQL_PREFIX) |
396 attrs = {'eid' : subject} |
398 attrs = {'eid' : subject} |
397 else: |
399 else: |
398 attrs = {'eid_from': subject, 'eid_to': object} |
400 attrs = {'eid_from': subject, 'eid_to': object} |
399 sql = self.sqlgen.delete('%s_relation' % rtype, attrs) |
401 sql = self.sqlgen.delete('%s_relation' % rtype, attrs) |
400 self.doexec(session.pool[self.uri], sql, attrs) |
402 self.doexec(session.pool[self.uri], sql, attrs) |