fix_ctp1112
This commit is contained in:
parent
00f45f46f7
commit
e581c1066c
|
|
@ -12,40 +12,39 @@ class CtpDatabaseCleanUp(models.TransientModel):
|
|||
def remove_data(self, o, s=[]):
|
||||
for line in o:
|
||||
try:
|
||||
model = self.env['ir.model']._get(line)
|
||||
if not model:
|
||||
_logger.warning('Model %s not found, skipping.', line)
|
||||
continue
|
||||
with self.env.cr.savepoint():
|
||||
model_obj = self.env['ir.model']._get(line)
|
||||
if not model_obj:
|
||||
_logger.warning('Model %s not found, skipping.', line)
|
||||
continue
|
||||
|
||||
t_name = self.env[line]._table
|
||||
sql = "delete from %s" % t_name
|
||||
if self.env[line]._abstract:
|
||||
_logger.warning('Model %s is abstract, skipping as it has no table.', line)
|
||||
continue
|
||||
|
||||
try:
|
||||
table_name = self.env[line]._table
|
||||
_logger.info('Attempting to TRUNCATE table for model: %s (table: %s)', line, table_name)
|
||||
|
||||
safe_table_name = table_name.replace('"', '""')
|
||||
sql = 'TRUNCATE TABLE "%s" RESTART IDENTITY CASCADE' % safe_table_name
|
||||
self._cr.execute(sql)
|
||||
_logger.info('Successfully deleted data from %s', t_name)
|
||||
self._cr.commit()
|
||||
except Exception as e:
|
||||
_logger.warning('Database Clean up error on table %s: %s', t_name, e)
|
||||
self._cr.rollback()
|
||||
|
||||
except Exception as e:
|
||||
_logger.warning('General error processing model %s: %s', line, e)
|
||||
self._cr.rollback()
|
||||
_logger.error('--> FAILED to clean data for model [%s]. Error: %s', line, e, exc_info=True)
|
||||
|
||||
for line in s:
|
||||
domain = ['|', ('code', '=ilike', line + '%'), ('prefix', '=ilike', line + '%')]
|
||||
for seq_code in s:
|
||||
try:
|
||||
seqs = self.env['ir.sequence'].sudo().search(domain)
|
||||
if seqs.exists():
|
||||
seqs.write({
|
||||
'number_next': 1,
|
||||
})
|
||||
_logger.info('Reset sequence for %s', line)
|
||||
with self.env.cr.savepoint():
|
||||
domain = ['|', ('code', '=ilike', seq_code + '%'), ('prefix', '=ilike', seq_code + '%')]
|
||||
seqs = self.env['ir.sequence'].sudo().search(domain)
|
||||
if seqs:
|
||||
seqs.write({'number_next': 1})
|
||||
_logger.info('Reset sequence for %s', seq_code)
|
||||
except Exception as e:
|
||||
_logger.warning('Reset Sequence Data error: %s, %s', line, e)
|
||||
_logger.warning('Failed to reset sequence for %s: %s', seq_code, e)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def remove_sales(self):
|
||||
to_removes = [
|
||||
'sale.order.line',
|
||||
|
|
|
|||
Loading…
Reference in New Issue