mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
64 lines
2.2 KiB
Python
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))
|