OCA reporting engine fork for dev and update.
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

  1. # -*- coding: utf-8 -*-
  2. # Copyright 2018 Simone Rubino - Agile Business Group
  3. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  4. from openupgradelib.openupgrade import logged_query, migrate
  5. import json
  6. @migrate()
  7. def migrate(env, version):
  8. cr = env.cr
  9. convert_text_to_serialized(
  10. cr, env['bve.view']._table, env['bve.view']._fields['data'].name)
  11. pass
  12. def convert_text_to_serialized(
  13. cr, table, text_field_name, serialized_field_name=None):
  14. """
  15. Convert Text field value to Serialized value.
  16. """
  17. if not serialized_field_name:
  18. serialized_field_name = text_field_name
  19. select_query = """
  20. SELECT
  21. id,
  22. %(text_field_name)s
  23. FROM %(table)s
  24. WHERE %(text_field_name)s IS NOT NULL
  25. """
  26. cr.execute(
  27. select_query % {
  28. 'text_field_name': text_field_name,
  29. 'table': table,
  30. }
  31. )
  32. update_query = """
  33. UPDATE %(table)s
  34. SET %(serialized_field_name)s = %%(field_value)s
  35. WHERE id = %(record_id)d
  36. """
  37. for row in cr.fetchall():
  38. # Fill in the field_value later because it needs escaping
  39. row_update_query = update_query % {
  40. 'serialized_field_name': serialized_field_name,
  41. 'table': table,
  42. 'record_id': row[0]}
  43. logged_query(
  44. cr, row_update_query, {
  45. 'field_value': json.dumps(row[1])
  46. })