You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.4 KiB
51 lines
1.4 KiB
# -*- coding: utf-8 -*-
|
|
# Copyright 2018 Simone Rubino - Agile Business Group
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
from openupgradelib.openupgrade import logged_query, migrate
|
|
import json
|
|
|
|
|
|
@migrate()
|
|
def migrate(env, version):
|
|
cr = env.cr
|
|
convert_text_to_serialized(
|
|
cr, env['bve.view']._table, env['bve.view']._fields['data'].name)
|
|
pass
|
|
|
|
|
|
def convert_text_to_serialized(
|
|
cr, table, text_field_name, serialized_field_name=None):
|
|
"""
|
|
Convert Text field value to Serialized value.
|
|
"""
|
|
if not serialized_field_name:
|
|
serialized_field_name = text_field_name
|
|
select_query = """
|
|
SELECT
|
|
id,
|
|
%(text_field_name)s
|
|
FROM %(table)s
|
|
WHERE %(text_field_name)s IS NOT NULL
|
|
"""
|
|
cr.execute(
|
|
select_query % {
|
|
'text_field_name': text_field_name,
|
|
'table': table,
|
|
}
|
|
)
|
|
update_query = """
|
|
UPDATE %(table)s
|
|
SET %(serialized_field_name)s = %%(field_value)s
|
|
WHERE id = %(record_id)d
|
|
"""
|
|
for row in cr.fetchall():
|
|
# Fill in the field_value later because it needs escaping
|
|
row_update_query = update_query % {
|
|
'serialized_field_name': serialized_field_name,
|
|
'table': table,
|
|
'record_id': row[0]}
|
|
logged_query(
|
|
cr, row_update_query, {
|
|
'field_value': json.dumps(row[1])
|
|
})
|