equal
deleted
inserted
replaced
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' |