本文整理汇总了Python中trytond.transaction.Transaction.rollback方法的典型用法代码示例。如果您正苦于以下问题:Python Transaction.rollback方法的具体用法?Python Transaction.rollback怎么用?Python Transaction.rollback使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trytond.transaction.Transaction
的用法示例。
在下文中一共展示了Transaction.rollback方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_numeric_required
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_numeric_required(self):
'Test required numeric'
pool = Pool()
NumericRequired = pool.get('test.import_data.numeric_required')
transaction = Transaction()
self.assertEqual(NumericRequired.import_data(['numeric'],
[['1.1']]), 1)
self.assertEqual(NumericRequired.import_data(['numeric'],
[['-1.1']]), 1)
self.assertEqual(NumericRequired.import_data(['numeric'],
[['1']]), 1)
self.assertRaises(UserError, NumericRequired.import_data,
['numeric'], [['']])
transaction.rollback()
self.assertEqual(NumericRequired.import_data(['numeric'],
[['1.1'], ['2.2']]), 2)
self.assertRaises(InvalidOperation,
NumericRequired.import_data, ['numeric'], [['foo']])
self.assertEqual(NumericRequired.import_data(['numeric'],
[['0']]), 1)
self.assertEqual(NumericRequired.import_data(['numeric'],
[['0.0']]), 1)
示例2: test_SMTPDataManager
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_SMTPDataManager(self, get_smtp_server):
"Test SMTPDataManager"
transaction = Transaction()
get_smtp_server.return_value = server = Mock()
datamanager = transaction.join(SMTPDataManager())
# multiple join must return the same
self.assertEqual(transaction.join(SMTPDataManager()), datamanager)
msg1 = Mock(Message)
msg2 = Mock(Message)
datamanager.put("[email protected]", "[email protected]", msg1)
datamanager.put("[email protected]", "[email protected]", msg2)
transaction.commit()
server.sendmail.assert_has_calls(
[
call("[email protected]", "[email protected]", msg1.as_string()),
call("[email protected]", "[email protected]", msg2.as_string()),
]
)
server.quit.assert_called_once_with()
self.assertFalse(datamanager.queue)
server.reset_mock()
datamanager.put("[email protected]", "[email protected]", Mock(Message))
transaction.rollback()
server.sendmail.assert_not_called()
self.assertFalse(datamanager.queue)
示例3: test_ordered_search_same_timestamp
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_ordered_search_same_timestamp(self):
'Test ordered search with same timestamp'
pool = Pool()
History = pool.get('test.history')
transaction = Transaction()
order = [('value', 'ASC')]
history = History(value=1)
history.save()
first_stamp = history.create_date
history.value = 4
history.save()
second_stamp = history.write_date
self.assertEqual(first_stamp, second_stamp)
transaction.commit()
results = [
(second_stamp, [history], [4]),
(datetime.datetime.now(), [history], [4]),
(datetime.datetime.max, [history], [4]),
]
for timestamp, instances, values in results:
with Transaction().set_context(_datetime=timestamp,
last_test=True):
records = History.search([], order=order)
self.assertEqual(records, instances)
self.assertEqual([x.value for x in records], values)
transaction.rollback()
示例4: test_integer_required
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_integer_required(self):
'Test required integer'
pool = Pool()
IntegerRequired = pool.get('test.import_data.integer_required')
transaction = Transaction()
self.assertEqual(IntegerRequired.import_data(['integer'],
[['1']]), 1)
self.assertEqual(IntegerRequired.import_data(['integer'],
[['-1']]), 1)
self.assertRaises(UserError, IntegerRequired.import_data,
['integer'], [['']])
transaction.rollback()
self.assertEqual(IntegerRequired.import_data(['integer'],
[['1'], ['2']]), 2)
self.assertRaises(ValueError, IntegerRequired.import_data,
['integer'], [['1.1']])
self.assertRaises(ValueError, IntegerRequired.import_data,
['integer'], [['-1.1']])
self.assertRaises(ValueError, IntegerRequired.import_data,
['integer'], [['foo']])
self.assertEqual(IntegerRequired.import_data(['integer'],
[['0']]), 1)
示例5: test_float_required
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_float_required(self):
'Test required float'
pool = Pool()
FloatRequired = pool.get('test.import_data.float_required')
transaction = Transaction()
self.assertEqual(FloatRequired.import_data(['float'],
[['1.1']]), 1)
self.assertEqual(FloatRequired.import_data(['float'],
[['-1.1']]), 1)
self.assertEqual(FloatRequired.import_data(['float'],
[['1']]), 1)
self.assertRaises(UserError, FloatRequired.import_data,
['float'], [['']])
transaction.rollback()
self.assertEqual(FloatRequired.import_data(['float'],
[['1.1'], ['2.2']]), 2)
self.assertRaises(ValueError, FloatRequired.import_data,
['float'], [['foo']])
self.assertEqual(FloatRequired.import_data(['float'],
[['0']]), 1)
self.assertEqual(FloatRequired.import_data(['float'],
[['0.0']]), 1)
示例6: wrapper
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def wrapper(*args, **kwargs):
transaction = Transaction()
with transaction.start(DB_NAME, user, context=context):
result = func(*args, **kwargs)
transaction.rollback()
# Drop the cache as the transaction is rollbacked
Cache.drop(DB_NAME)
return result
示例7: _load_modules
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def _load_modules():
global res
TableHandler = backend.get('TableHandler')
cursor = Transaction().cursor
# Migration from 3.6: remove double module
old_table = 'ir_module_module'
new_table = 'ir_module'
if TableHandler.table_exist(cursor, old_table):
TableHandler.table_rename(cursor, old_table, new_table)
if update:
cursor.execute(*ir_module.select(ir_module.name,
where=ir_module.state.in_(('installed', 'to install',
'to upgrade', 'to remove'))))
else:
cursor.execute(*ir_module.select(ir_module.name,
where=ir_module.state.in_(('installed', 'to upgrade',
'to remove'))))
module_list = [name for (name,) in cursor.fetchall()]
if update:
module_list += update
graph = create_graph(module_list)[0]
try:
load_module_graph(graph, pool, update, lang)
except Exception:
cursor.rollback()
raise
if update:
cursor.execute(*ir_module.select(ir_module.name,
where=(ir_module.state == 'to remove')))
fetchall = cursor.fetchall()
if fetchall:
for (mod_name,) in fetchall:
# TODO check if ressource not updated by the user
cursor.execute(*ir_model_data.select(ir_model_data.model,
ir_model_data.db_id,
where=(ir_model_data.module == mod_name),
order_by=ir_model_data.id.desc))
for rmod, rid in cursor.fetchall():
Model = pool.get(rmod)
Model.delete([Model(rid)])
cursor.commit()
cursor.execute(*ir_module.update([ir_module.state],
['uninstalled'],
where=(ir_module.state == 'to remove')))
cursor.commit()
res = False
Module = pool.get('ir.module')
Module.update_list()
cursor.commit()
Cache.resets(database_name)
示例8: post_import
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def post_import(pool, module, to_delete):
"""
Remove the records that are given in to_delete.
"""
cursor = Transaction().cursor
mdata_delete = []
ModelData = pool.get("ir.model.data")
with Transaction().set_context(active_test=False):
mdata = ModelData.search([
('fs_id', 'in', to_delete),
('module', '=', module),
], order=[('id', 'DESC')])
object_name_list = set(pool.object_name_list())
for mrec in mdata:
model, db_id = mrec.model, mrec.db_id
logging.getLogger("convert").info(
'Deleting %[email protected]%s' % (db_id, model))
try:
# Deletion of the record
if model in object_name_list:
Model = pool.get(model)
Model.delete([Model(db_id)])
mdata_delete.append(mrec)
else:
logging.getLogger("convert").warning(
'Could not delete id %d of model %s because model no '
'longer exists.' % (db_id, model))
cursor.commit()
except Exception:
cursor.rollback()
tb_s = ''.join(traceback.format_exception(*sys.exc_info()))
logging.getLogger("convert").error(
'Could not delete id: %d of model %s\n'
'There should be some relation '
'that points to this resource\n'
'You should manually fix this '
'and restart --update=module\n'
'Exception: %s' %
(db_id, model, tb_s))
if 'active' in Model._fields:
Model.write([Model(db_id)], {
'active': False,
})
# Clean model_data:
if mdata_delete:
ModelData.delete(mdata_delete)
cursor.commit()
return True
示例9: test_many2one
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_many2one(self):
'Test many2one'
pool = Pool()
Many2one = pool.get('test.import_data.many2one')
transaction = Transaction()
self.assertEqual(Many2one.import_data(['many2one'],
[['Test']]), 1)
self.assertEqual(Many2one.import_data(['many2one:id'],
[['tests.import_data_many2one_target_test']]), 1)
self.assertEqual(Many2one.import_data(['many2one'],
[['']]), 1)
self.assertEqual(Many2one.import_data(['many2one'],
[['Test'], ['Test']]), 2)
self.assertRaises(UserError, Many2one.import_data,
['many2one'], [['foo']])
transaction.rollback()
self.assertRaises(UserError, Many2one.import_data,
['many2one'], [['Duplicate']])
transaction.rollback()
self.assertRaises(UserError, Many2one.import_data,
['many2one:id'], [['foo']])
transaction.rollback()
self.assertRaises(Exception, Many2one.import_data,
['many2one:id'], [['tests.foo']])
transaction.rollback()
示例10: test_phone_number_format
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_phone_number_format(self):
'Test phone number format'
pool = Pool()
Party = pool.get('party.party')
ContactMechanism = pool.get('party.contact_mechanism')
transaction = Transaction()
def create(mtype, mvalue):
party1, = Party.create([{
'name': 'Party 1',
}])
return ContactMechanism.create([{
'party': party1.id,
'type': mtype,
'value': mvalue,
}])[0]
# Test format on create
mechanism = create('phone', '+442083661177')
self.assertEqual(mechanism.value, '+44 20 8366 1177')
self.assertEqual(mechanism.value_compact, '+442083661177')
# Test format on write
mechanism.value = '+442083661178'
mechanism.save()
self.assertEqual(mechanism.value, '+44 20 8366 1178')
self.assertEqual(mechanism.value_compact, '+442083661178')
ContactMechanism.write([mechanism], {
'value': '+442083661179',
})
self.assertEqual(mechanism.value, '+44 20 8366 1179')
self.assertEqual(mechanism.value_compact, '+442083661179')
# Test rejection of a phone type mechanism to non-phone value
with self.assertRaises(UserError):
mechanism.value = '[email protected]'
mechanism.save()
transaction.rollback()
# Test rejection of invalid phone number creation
with self.assertRaises(UserError):
mechanism = create('phone', '[email protected]')
transaction.rollback()
# Test acceptance of a non-phone value when type is non-phone
mechanism = create('email', '[email protected]')
示例11: wrapper
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def wrapper(*args, **kwargs):
_db = Tdb._db
_readonly = True
if readonly is not None:
_readonly = readonly
elif 'request' in kwargs:
_readonly = not (kwargs['request'].method
in ('PUT', 'POST', 'DELETE', 'PATCH'))
_user = user or 0
_context = {}
_retry = Tdb._retry or 0
_is_open = (Transaction().cursor)
if not _is_open:
with Transaction().start(_db, 0):
Cache.clean(_db)
_context.update(default_context())
else:
# Transaction().new_cursor(readonly=_readonly)
pass
_context.update(context or {})
# _context.update({'company': Tdb._company})
for count in range(_retry, -1, -1):
with NoTransaction() if _is_open else Transaction().start(
_db, _user, readonly=_readonly, context=_context):
cursor = Transaction().cursor
if withhold:
cursor.cursor.withhold = True
try:
result = func(*args, **kwargs)
if not _readonly:
cursor.commit()
except DatabaseOperationalError:
cursor.rollback()
if count and not _readonly:
continue
raise
except Exception:
cursor.rollback()
raise
Cache.resets(_db)
return result
示例12: test_required_field_missing
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_required_field_missing(self):
'Test error message when a required field is missing'
pool = Pool()
Modelsql = pool.get('test.modelsql')
transaction = Transaction()
fields = {
'desc': '',
'integer': 0,
}
for key, value in fields.iteritems():
try:
Modelsql.create([{key: value}])
except UserError, err:
# message must not quote key
msg = "'%s' not missing but quoted in error: '%s'" % (key,
err.message)
self.assertTrue(key not in err.message, msg)
else:
self.fail('UserError should be caught')
transaction.rollback()
示例13: transaction
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def transaction(request):
"""Yields transaction with installed module.
"""
# Importing transaction directly causes cyclic dependency in 3.6
from trytond.tests.test_tryton import USER, CONTEXT, DB_NAME, POOL
from trytond.tools.singleton import Singleton # noqa
from trytond.transaction import Transaction
from trytond.cache import Cache
# Inject helper functions in instance on which test function was collected.
request.instance.POOL = POOL
request.instance.USER = USER
request.instance.CONTEXT = CONTEXT
request.instance.DB_NAME = DB_NAME
transaction = Transaction()
with transaction.start(DB_NAME, USER, context=CONTEXT) as txn:
yield txn
transaction.rollback()
Cache.drop(DB_NAME)
示例14: test_many2many
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_many2many(self):
'Test many2many'
pool = Pool()
Many2many = pool.get('test.import_data.many2many')
transaction = Transaction()
self.assertEqual(Many2many.import_data(['many2many'],
[['Test 1']]), 1)
self.assertEqual(Many2many.import_data(['many2many:id'],
[['tests.import_data_many2many_target_test1']]), 1)
self.assertEqual(Many2many.import_data(['many2many'],
[['Test 1,Test 2']]), 1)
self.assertEqual(Many2many.import_data(['many2many:id'],
[['tests.import_data_many2many_target_test1,'
'tests.import_data_many2many_target_test2']]), 1)
self.assertEqual(Many2many.import_data(['many2many'],
[['Test\, comma']]), 1)
self.assertEqual(Many2many.import_data(['many2many'],
[['Test\, comma,Test 1']]), 1)
self.assertEqual(Many2many.import_data(['many2many'],
[['']]), 1)
self.assertEqual(Many2many.import_data(['many2many'],
[['Test 1'], ['Test 2']]), 2)
self.assertRaises(UserError, Many2many.import_data,
['many2many'], [['foo']])
transaction.rollback()
self.assertRaises(UserError, Many2many.import_data,
['many2many'], [['Test 1,foo']])
transaction.rollback()
self.assertRaises(UserError, Many2many.import_data,
['many2many'], [['Duplicate']])
transaction.rollback()
self.assertRaises(UserError, Many2many.import_data,
['many2many'], [['Test 1,Duplicate']])
transaction.rollback()
示例15: test_restore_history
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import rollback [as 别名]
def test_restore_history(self):
'Test restore history'
pool = Pool()
History = pool.get('test.history')
transaction = Transaction()
history = History(value=1)
history.save()
history_id = history.id
first = history.create_date
transaction.commit()
history = History(history_id)
history.value = 2
history.save()
transaction.commit()
History.restore_history([history_id], first)
history = History(history_id)
self.assertEqual(history.value, 1)
transaction.rollback()
History.restore_history([history_id], datetime.datetime.min)
self.assertRaises(UserError, History.read, [history_id])
transaction.rollback()
History.delete([History(history_id)])
transaction.commit()
History.restore_history([history_id], datetime.datetime.max)
self.assertRaises(UserError, History.read, [history_id])