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=[]):
|
def remove_data(self, o, s=[]):
|
||||||
for line in o:
|
for line in o:
|
||||||
try:
|
try:
|
||||||
model = self.env['ir.model']._get(line)
|
with self.env.cr.savepoint():
|
||||||
if not model:
|
model_obj = self.env['ir.model']._get(line)
|
||||||
_logger.warning('Model %s not found, skipping.', line)
|
if not model_obj:
|
||||||
continue
|
_logger.warning('Model %s not found, skipping.', line)
|
||||||
|
continue
|
||||||
|
|
||||||
t_name = self.env[line]._table
|
if self.env[line]._abstract:
|
||||||
sql = "delete from %s" % t_name
|
_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)
|
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:
|
except Exception as e:
|
||||||
_logger.warning('General error processing model %s: %s', line, e)
|
_logger.error('--> FAILED to clean data for model [%s]. Error: %s', line, e, exc_info=True)
|
||||||
self._cr.rollback()
|
|
||||||
|
|
||||||
for line in s:
|
for seq_code in s:
|
||||||
domain = ['|', ('code', '=ilike', line + '%'), ('prefix', '=ilike', line + '%')]
|
|
||||||
try:
|
try:
|
||||||
seqs = self.env['ir.sequence'].sudo().search(domain)
|
with self.env.cr.savepoint():
|
||||||
if seqs.exists():
|
domain = ['|', ('code', '=ilike', seq_code + '%'), ('prefix', '=ilike', seq_code + '%')]
|
||||||
seqs.write({
|
seqs = self.env['ir.sequence'].sudo().search(domain)
|
||||||
'number_next': 1,
|
if seqs:
|
||||||
})
|
seqs.write({'number_next': 1})
|
||||||
_logger.info('Reset sequence for %s', line)
|
_logger.info('Reset sequence for %s', seq_code)
|
||||||
except Exception as e:
|
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
|
return True
|
||||||
|
|
||||||
def remove_sales(self):
|
def remove_sales(self):
|
||||||
to_removes = [
|
to_removes = [
|
||||||
'sale.order.line',
|
'sale.order.line',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue