Files
suite/l10n_us_hr_payroll/migrations/helper.py

64 lines
2.2 KiB
Python

# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
TMP_PREFIX = 'tmp_'
"""
Fields
"""
def field_exists(cr, table_name, field_name):
cr.execute('SELECT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name=%s and column_name=%s);', (table_name, field_name))
return cr.fetchone()[0]
def temp_field_exists(cr, table_name, field_name):
tmp_field_name = TMP_PREFIX + field_name
cr.execute('SELECT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name=%s and column_name=%s);', (table_name, tmp_field_name))
return cr.fetchone()[0]
def make_temp_field(cr, table_name, field_name):
tmp_field_name = TMP_PREFIX + field_name
cr.execute('SELECT data_type FROM information_schema.columns WHERE table_name=%s and column_name=%s;', (table_name, field_name))
tmp_field_type = cr.fetchone()[0]
cr.execute('ALTER TABLE ' + table_name + ' ADD ' + tmp_field_name + ' ' + tmp_field_type)
cr.execute('UPDATE ' + table_name + ' SET ' + tmp_field_name + '=' + field_name)
def remove_temp_field(cr, table_name, field_name):
tmp_field_name = TMP_PREFIX + field_name
cr.execute('ALTER TABLE ' + table_name + ' DROP COLUMN ' + tmp_field_name)
def temp_field_values(cr, table_name, id, field_names):
tmp_field_names = [TMP_PREFIX + f for f in field_names]
if not tmp_field_names:
return {}
cr.execute('SELECT ' + ', '.join(tmp_field_names) + ' FROM ' + table_name + ' WHERE id=' + str(id))
values = cr.dictfetchone()
if not values:
return {}
def _remove_tmp_prefix(key):
if key.startswith(TMP_PREFIX):
return key[len(TMP_PREFIX):]
return key
return {_remove_tmp_prefix(k): v for k, v in values.items()}
"""
XMLIDs
"""
def remove_xmlid(cr, xmlid):
module, name = xmlid.split('.')
cr.execute('DELETE FROM ir_model_data WHERE module=%s and name=%s;', (module, name))
def rename_xmlid(cr, from_xmlid, to_xmlid):
from_module, from_name = from_xmlid.split('.')
to_module, to_name = to_xmlid.split('.')
cr.execute('UPDATE ir_model_data SET module=%s, name=%s WHERE module=%s and name=%s;', (to_module, to_name, from_module, from_name))