server/sources/native.py
branchtls-sprint
changeset 1263 01152fffd593
parent 1016 26387b836099
parent 1251 af40e615dc89
child 1398 5fe84a5f7035
equal deleted inserted replaced
1246:76b3cd5d4f31 1263:01152fffd593
    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)