diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml index af61555a17af29539e8786564f17c3b94eb70746..e93af90e380a0d206dd113925d141253676f0906 100644 --- a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml +++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml @@ -61,12 +61,9 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>from Products.CMFActivity.ActiveResult import ActiveResult\n -import json\n + <value> <string>import json\n \n -selection_id = \'python_shell_selection\'\n portal = context.getPortalObject()\n -portal_selections = portal.portal_selections\n \n # The boolean values via requests are received as \n request_reference = {\'True\': True, \'False\': False}.get(request_reference, False)\n @@ -129,9 +126,20 @@ result = {\n u\'status\': status\n }\n \n -data_notebook_message.edit(notebook_code_result=code_result)\n -\n -return json.dumps(result)\n +try:\n + serialized_result = json.dumps(result)\n + data_notebook_message.edit(notebook_code_result=code_result)\n +except UnicodeDecodeError:\n + result = {\n + u\'code_result\': None,\n + u\'ename\': u\'UnicodeDecodeError\',\n + u\'evalue\': None,\n + u\'traceback\': None,\n + u\'status\': u\'error\'\n + }\n + serialized_result = json.dumps(result)\n + \n +return serialized_result\n </string> </value> </item> <item> diff --git a/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py b/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py index 715a494f4813e40ad4277e73cbc6c4dfce7654c0..c12e7022ffd55a84d1cb033ee2c6ffb788e17bdf 100644 --- a/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py +++ b/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py @@ -39,7 +39,7 @@ class TestExecuteJupyter(SecurityTestCase): """ self.notebook_module = self.portal.getDefaultModule(portal_type='Data Notebook') self.assertTrue(self.notebook_module is not None) - + # Create user to be used in tests user_folder = self.getPortal().acl_users user_folder._doAddUser('dev_user', '', ['Manager',], []) @@ -96,7 +96,7 @@ class TestExecuteJupyter(SecurityTestCase): result_title = [obj.getTitle() for obj in notebook_search_result] if result_title: self.assertEquals(notebook.getTitle(), result_title[0]) - + def testUserCanCreateNotebookWithCode(self): """ Test if user can create Data Notebook Message object or not @@ -105,8 +105,8 @@ class TestExecuteJupyter(SecurityTestCase): notebook = self._newNotebook(reference='new_notebook_with_code') self.tic() - - notebook_code='some_random_invalid_notebook_code %s' % time.time() + + notebook_code='some_random_invalid_notebook_code %s' % time.time() self._newNotebookMessage( notebook_module=notebook, notebook_code=notebook_code @@ -155,7 +155,7 @@ class TestExecuteJupyter(SecurityTestCase): python_expression = "print 52" reference = 'Test.Notebook.AddNewNotebookMessage %s' % time.time() title = 'Test NB Title %s' % time.time() - + # Calling the function twice, first to create a new notebook and then # sending python_expression to check if it adds to the same notebook portal.Base_executeJupyter(title=title, reference=reference)