server/session.py
branchstable
changeset 2188 3a57c8173290
parent 2100 89b825cdec74
child 2190 d9f5fd1879fc
equal deleted inserted replaced
2164:e3aeb6e6c3bb 2188:3a57c8173290
    81         return self
    81         return self
    82 
    82 
    83     def etype_class(self, etype):
    83     def etype_class(self, etype):
    84         """return an entity class for the given entity type"""
    84         """return an entity class for the given entity type"""
    85         return self.vreg.etype_class(etype)
    85         return self.vreg.etype_class(etype)
    86 
       
    87     def entity(self, eid):
       
    88         """return a result set for the given eid"""
       
    89         return self.eid_rset(eid).get_entity(0, 0)
       
    90 
    86 
    91     def system_sql(self, sql, args=None):
    87     def system_sql(self, sql, args=None):
    92         """return a sql cursor on the system database"""
    88         """return a sql cursor on the system database"""
    93         if not sql.split(None, 1)[0].upper() == 'SELECT':
    89         if not sql.split(None, 1)[0].upper() == 'SELECT':
    94             self.mode = 'write'
    90             self.mode = 'write'
   319                     operation.handle_event('rollback_event')
   315                     operation.handle_event('rollback_event')
   320                 except:
   316                 except:
   321                     self.critical('rollback error', exc_info=sys.exc_info())
   317                     self.critical('rollback error', exc_info=sys.exc_info())
   322                     continue
   318                     continue
   323             self.pool.rollback()
   319             self.pool.rollback()
       
   320             self.debug('rollback for session %s done', self.id)
   324         finally:
   321         finally:
   325             self._touch()
   322             self._touch()
   326             self.pending_operations[:] = []
   323             self.pending_operations[:] = []
   327             self.transaction_data.clear()
   324             self.transaction_data.clear()
   328             if reset_pool:
   325             if reset_pool:
   356         try:
   353         try:
   357             return self._threaddata.transaction_data
   354             return self._threaddata.transaction_data
   358         except AttributeError:
   355         except AttributeError:
   359             self._threaddata.transaction_data = {}
   356             self._threaddata.transaction_data = {}
   360             return self._threaddata.transaction_data
   357             return self._threaddata.transaction_data
   361 
       
   362     @obsolete('use direct access to session.transaction_data')
       
   363     def query_data(self, key, default=None, setdefault=False, pop=False):
       
   364         if setdefault:
       
   365             assert not pop
       
   366             return self.transaction_data.setdefault(key, default)
       
   367         if pop:
       
   368             return self.transaction_data.pop(key, default)
       
   369         else:
       
   370             return self.transaction_data.get(key, default)
       
   371 
   358 
   372     @property
   359     @property
   373     def pending_operations(self):
   360     def pending_operations(self):
   374         try:
   361         try:
   375             return self._threaddata.pending_operations
   362             return self._threaddata.pending_operations
   455                         self.critical('wrong eid %s in repository, should check database' % value)
   442                         self.critical('wrong eid %s in repository, should check database' % value)
   456                         row_descr[index] = row[index] = None
   443                         row_descr[index] = row[index] = None
   457             description.append(tuple(row_descr))
   444             description.append(tuple(row_descr))
   458         return description
   445         return description
   459 
   446 
       
   447     @obsolete('use direct access to session.transaction_data')
       
   448     def query_data(self, key, default=None, setdefault=False, pop=False):
       
   449         if setdefault:
       
   450             assert not pop
       
   451             return self.transaction_data.setdefault(key, default)
       
   452         if pop:
       
   453             return self.transaction_data.pop(key, default)
       
   454         else:
       
   455             return self.transaction_data.get(key, default)
       
   456 
       
   457     @obsolete('use entity_from_eid(eid, etype=None)')
       
   458     def entity(self, eid):
       
   459         """return a result set for the given eid"""
       
   460         return self.eid_rset(eid).get_entity(0, 0)
       
   461 
   460 
   462 
   461 class ChildSession(Session):
   463 class ChildSession(Session):
   462     """child (or internal) session are used to hijack the security system
   464     """child (or internal) session are used to hijack the security system
   463     """
   465     """
   464     cnxtype = 'inmemory'
   466     cnxtype = 'inmemory'