本文整理汇总了Python中trytond.transaction.Transaction.commit方法的典型用法代码示例。如果您正苦于以下问题:Python Transaction.commit方法的具体用法?Python Transaction.commit怎么用?Python Transaction.commit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trytond.transaction.Transaction
的用法示例。
在下文中一共展示了Transaction.commit方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_read_same_timestamp
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def test_read_same_timestamp(self):
'Test read history with same timestamp'
pool = Pool()
History = pool.get('test.history')
transaction = Transaction()
history = History(value=1)
history.save()
history_id = history.id
first = history.create_date
history.value = 2
history.save()
second = history.write_date
self.assertEqual(first, second)
transaction.commit()
history = History(history_id)
history.value = 3
history.save()
third = history.write_date
transaction.commit()
for timestamp, value in [
(first, 2),
(third, 3),
]:
with Transaction().set_context(_datetime=timestamp):
history = History(history_id)
self.assertEqual(history.value, value)
示例2: test_restore_history_same_timestamp
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def test_restore_history_same_timestamp(self):
'Test restore history with same timestamp'
pool = Pool()
History = pool.get('test.history')
transaction = Transaction()
history = History(value=1)
history.save()
history_id = history.id
first = history.create_date
history.value = 2
history.save()
second = history.create_date
self.assertEqual(first, second)
transaction.commit()
history = History(history_id)
history.value = 3
history.save()
transaction.commit()
History.restore_history([history_id], first)
history = History(history_id)
self.assertEqual(history.value, 2)
示例3: test_SMTPDataManager
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [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)
示例4: create
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def create(self, vals):
cursor = Transaction().cursor
if vals.get('from_party', False):
cursor.execute('INSERT INTO ' +self._table +\
' (id, create_uid, party, company, peripatetic)'\
'VALUES (%s, %s, %s, %s, %s)',\
(vals.get('id'), vals.get('create_uid'), vals.get('party'), Transaction().context.get('company'), False))
cursor.commit()
res = self.browse(vals.get('id'))
return res.id
else:
later = {}
vals = vals.copy()
for field in vals:
if field in self._columns\
and hasattr(self._columns[field], 'set'):
later[field] = vals[field]
for field in later:
del vals[field]
if cursor.nextid(self._table):
cursor.setnextid(self._table, cursor.currid(self._table))
new_id = super(Employee, self).create(vals)
employee = self.browse(new_id)
new_id = employee.party.id
cursor.execute('UPDATE "' + self._table + '" SET id = %s '\
'WHERE id = %s', (employee.party.id, employee.id))
ModelStorage.delete(self, employee.id)
self.write(new_id, later)
res = self.browse(new_id)
return res.id
示例5: button_process_continue
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def button_process_continue(self, ids, start=False):
cr = Transaction().cursor
categs = self.read(ids,['category','exclusif','party', 'sales_purchase_active', 'profiling_active'])
for categ in categs:
if start:
if categ['exclusif']:
cr.execute('delete from party_category_rel where category=%s', (categ['categ'][0],))
id = categ['id']
cr.execute('select id from res_party order by id ')
partys = [x[0] for x in cr.fetchall()]
if categ['sales_purchase_active']:
to_remove_list=[]
cr.execute('select id from ekd_crm_segmentation_line where segmentation=%s', (id,))
line_ids = [x[0] for x in cr.fetchall()]
for pid in partys:
if (not self.pool.get('ekd.crm.segmentation.line').test(cr, uid, line_ids, pid)):
to_remove_list.append(pid)
for pid in to_remove_list:
partys.remove(pid)
for party in partys:
cr.execute('insert into party_category_rel (category,party) values (%s,%s)', (categ['categ'][0],party))
cr.commit()
self.write([id], {'state':'not running', 'party':0})
cr.commit()
return True
示例6: test_ordered_search_same_timestamp
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [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()
示例7: tearDown
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def tearDown(self):
pool = Pool()
History = pool.get('test.history')
cursor = Transaction().cursor
table = History.__table__()
history_table = History.__table_history__()
cursor.execute(*table.delete())
cursor.execute(*history_table.delete())
cursor.commit()
示例8: create
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def create(self, vals):
new_id = super(Department, self).create(vals)
if vals.get("as_stock"):
cursor = Transaction().cursor
cursor.execute(
"INSERT INTO ekd_company_department_stock" " (id, create_uid, department)" "VALUES (%s, %s, %s)",
(new_id, Transaction().user, new_id),
)
cursor.commit()
return new_id
示例9: post_import
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [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
示例10: write
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def write(self, ids, vals):
cursor = Transaction().cursor
if vals.get("as_stock"):
for id_ in ids:
cursor.execute(
"INSERT INTO ekd_company_department_stock" " (id, create_uid, department)" "VALUES (%s, %s, %s)",
(id_, Transaction().user, id_),
)
cursor.commit()
else:
cursor.execute("DELETE FROM ekd_company_department_stock" " WHERE id = %s" % (ids))
cursor.commit()
return super(Department, self).write(ids, vals)
示例11: test_check_timestamp
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def test_check_timestamp(self):
'Test check timestamp'
pool = Pool()
ModelsqlTimestamp = pool.get('test.modelsql.timestamp')
transaction = Transaction()
# transaction must be committed between each changes otherwise NOW()
# returns always the same timestamp.
record, = ModelsqlTimestamp.create([{}])
transaction.commit()
timestamp = ModelsqlTimestamp.read([record.id],
['_timestamp'])[0]['_timestamp']
if backend.name() in ('sqlite', 'mysql'):
# timestamp precision of sqlite is the second
time.sleep(1)
ModelsqlTimestamp.write([record], {})
transaction.commit()
transaction.timestamp[str(record)] = timestamp
self.assertRaises(ConcurrencyException,
ModelsqlTimestamp.write, [record], {})
transaction.timestamp[str(record)] = timestamp
self.assertRaises(ConcurrencyException,
ModelsqlTimestamp.delete, [record])
transaction.timestamp.pop(str(record), None)
ModelsqlTimestamp.write([record], {})
transaction.commit()
ModelsqlTimestamp.delete([record])
transaction.commit()
示例12: wrapper
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [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
示例13: test_history_revisions
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def test_history_revisions(self):
'Test history revisions'
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()
second = history.write_date
transaction.commit()
history = History(history_id)
history.value = 3
history.save()
third = history.write_date
transaction.commit()
revisions = History.history_revisions([history_id])
self.assertEqual(revisions, [
(third, history_id, u'Administrator'),
(second, history_id, u'Administrator'),
(first, history_id, u'Administrator'),
])
示例14: test_restore_history_before
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [as 别名]
def test_restore_history_before(self):
'Test restore history before'
pool = Pool()
History = pool.get('test.history')
transaction = Transaction()
history = History(value=1)
history.save()
history_id = history.id
transaction.commit()
history = History(history_id)
history.value = 2
history.save()
second = history.write_date
transaction.commit()
history = History(history_id)
history.value = 3
history.save()
transaction.commit()
History.restore_history_before([history_id], second)
history = History(history_id)
self.assertEqual(history.value, 1)
示例15: _load_modules
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import commit [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)