Browse Source

[FIX][bi_view_editor] apostrophe in model name raised ValueError

pull/232/head
Simone Rubino 6 years ago
parent
commit
15cfe17854
  1. 18
      bi_view_editor/models/bve_view.py
  2. 25
      bi_view_editor/tests/test_bi_view.py

18
bi_view_editor/models/bve_view.py

@ -39,7 +39,7 @@ class BveView(models.Model):
('created', 'Created')],
default='draft',
copy=False)
data = fields.Text(
data = fields.Serialized(
help="Use the special query builder to define the query "
"to generate your report dataset. "
"NOTE: To be edited, the query should be in 'Draft' status.")
@ -63,12 +63,6 @@ class BveView(models.Model):
_('Custom BI View names must be unique!')),
]
@classmethod
def _get_format_data(cls, data):
data = data.replace('\'', '"')
data = data.replace(': u"', ':"')
return data
@api.multi
def _create_view_arch(self):
self.ensure_one()
@ -96,7 +90,7 @@ class BveView(models.Model):
view_fields.append(field_def)
return view_fields
fields_info = json.loads(self._get_format_data(self.data))
fields_info = json.loads(self.data)
view_fields = _get_field_list(fields_info)
return view_fields
@ -118,7 +112,7 @@ class BveView(models.Model):
view_fields.append(field_def)
return view_fields
fields_info = json.loads(self._get_format_data(self.data))
fields_info = json.loads(self.data)
view_fields = _get_field_list(fields_info)
return view_fields
@ -218,7 +212,7 @@ class BveView(models.Model):
a.perm_''' + access_mode, (model_name,))
return [x[0] for x in self.env.cr.fetchall()]
info = json.loads(self._get_format_data(self.data))
info = json.loads(self.data)
model_names = list(set([f['model'] for f in info]))
read_groups = set.intersection(*[set(
group_ids_with_access(model_name, 'read')
@ -285,7 +279,7 @@ class BveView(models.Model):
check_empty_data(self.data)
formatted_data = json.loads(self._get_format_data(self.data))
formatted_data = json.loads(self.data)
info = get_fields_info(formatted_data)
select_fields = get_fields(info)
tables = get_tables(info)
@ -352,7 +346,7 @@ class BveView(models.Model):
self._create_sql_view()
# create model and fields
data = json.loads(self._get_format_data(self.data))
data = json.loads(self.data)
model_vals = {
'name': self.name,
'model': self.model_name,

25
bi_view_editor/tests/test_bi_view.py

@ -2,6 +2,8 @@
# Copyright 2017 Onestein (<http://www.onestein.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import json
from odoo.tests.common import TransactionCase, at_install, post_install
from odoo.exceptions import UserError
@ -100,7 +102,7 @@ class TestBiViewEditor(TransactionCase):
'measure': 0
}
]
format_data = self.env['bve.view']._get_format_data(str(data))
format_data = json.dumps(data)
self.bi_view1_vals = {
'state': 'draft',
@ -228,3 +230,24 @@ class TestBiViewEditor(TransactionCase):
# try to remove view
with self.assertRaises(UserError):
bi_view.unlink()
@at_install(False)
@post_install(True)
def test_10_create_open_bve_object_apostrophe(self):
vals = self.bi_view1_vals
employees_group = self.env.ref('base.group_user')
vals.update({
'name': "Test View5",
'group_ids': [(6, 0, [employees_group.id])],
})
l = list()
for r in json.loads(vals['data']):
r['model_name'] = "model'name"
l.append(r)
new_format_data = json.dumps(l)
vals.update({'data': new_format_data})
bi_view = self.env['bve.view'].create(vals)
self.assertEqual(len(bi_view), 1)
# create bve object
bi_view.action_create()
Loading…
Cancel
Save