diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.js index b8cf6ee6100ac8206072a1e85c120656ee9558af..653aaa59c2d2d4776acecb4658cf57412021bed6 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.js +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.js @@ -41,7 +41,6 @@ .declareMethod("render", function (options) { var gadget = this, child_gadget_url; - return gadget.jio_get(options.jio_key) .push(function (result) { diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.xml index 894deee9c59431242fb009d8ebf13afe5ab25470..ae2d97b604c0fd3f3a6c92af062c4136a89a2005 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.xml @@ -227,7 +227,7 @@ serial - 967.6016.61211.59613 + 968.63092.54317.19490 state @@ -245,7 +245,7 @@ - 1524754712.51 + 1531928427.76 UTC diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_document_list_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_document_list_js.js index 5e8f568a3383e0aa303eb372e9343f222b43d4ff..901fc2ee39bf52d3226cf2693ea014e9a7708d7d 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_document_list_js.js +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_document_list_js.js @@ -12,6 +12,8 @@ .declareAcquiredMethod("getUrlFor", "getUrlFor") .declareAcquiredMethod("jio_allDocs", "jio_allDocs") .declareAcquiredMethod("getSetting", "getSetting") + .declareAcquiredMethod("jio_toggleRevisionOption", + "jio_toggleRevisionOption") ///////////////////////////////////////////////////////////////// // declared methods @@ -19,7 +21,10 @@ .allowPublicAcquisition("jio_allDocs", function (param_list) { var gadget = this; - return gadget.jio_allDocs(param_list[0]) + return gadget.jio_toggleRevisionOption(false) + .push(function () { + return gadget.jio_allDocs(param_list[0]); + }) .push(function (result) { var i, date, len = result.data.total_rows; for (i = 0; i < len; i += 1) { @@ -67,7 +72,6 @@ .declareMethod("render", function () { var gadget = this; - return new RSVP.Queue() .push(function () { return RSVP.all([ diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_document_list_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_document_list_js.xml index 3e341259301629d94e10a26491f07d1af93c9156..1ad129bc8a735eab0c408e5725d44feadcc759d4 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_document_list_js.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_document_list_js.xml @@ -256,7 +256,7 @@ actor - vincent + zope comment @@ -270,7 +270,7 @@ serial - 966.41210.1237.18158 + 969.18805.18330.41284 state @@ -288,7 +288,7 @@ - 1523022228.16 + 1533116145.35 UTC diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_ojs_add_document_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_ojs_add_document_js.xml index 69452606e246704a3299fa482282f81ae3269b84..0feba4ad8d052c429c4c8e397e971c33422bbc1f 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_ojs_add_document_js.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_ojs_add_document_js.xml @@ -270,7 +270,7 @@ serial - 963.44293.58168.6690 + 969.18811.39108.45789 state @@ -288,7 +288,7 @@ - 1511565609.05 + 1533116016.94 UTC diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_html.html b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_html.html new file mode 100644 index 0000000000000000000000000000000000000000..097b7affd824ee27644e3ace043b197d8a3b801a --- /dev/null +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_html.html @@ -0,0 +1,19 @@ + + + + + + + + OfficeJS See History Page + + + + + + + + +
+ + \ No newline at end of file diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_html.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_html.xml new file mode 100644 index 0000000000000000000000000000000000000000..f68b577c2c7c8597fa8b13e5b6bd7312b6852be3 --- /dev/null +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_html.xml @@ -0,0 +1,362 @@ + + + + + + + + + + _Access_contents_information_Permission + + + Anonymous + Assignee + Assignor + Associate + Auditor + Manager + + + + + _Add_portal_content_Permission + + + Assignor + Manager + + + + + _Change_local_roles_Permission + + + Assignor + Manager + + + + + _Modify_portal_content_Permission + + + Manager + + + + + _View_Permission + + + Anonymous + Assignee + Assignor + Associate + Auditor + Manager + + + + + categories + + + contributor/person_module/1 + + + + + content_md5 + + + + + + content_type + text/html + + + creators + + + cedric.le.ninivin + + + + + default_reference + gadget_erp5_page_ojs_see_history.html + + + description + + + + + + id + gadget_officejs_erp5_page_see_history_html + + + language + + + + + + modification_date + + + + + + + + + + + 1455284351.46 + UTC + + + + + + + portal_type + Web Page + + + short_title + + + + + + title + OfficeJS See History + + + url_string + + + + + + version + 001 + + + workflow_history + + AAAAAAAAAAI= + + + + + + + + + + + + + data + + + + document_publication_workflow + + AAAAAAAAAAM= + + + + edit_workflow + + AAAAAAAAAAQ= + + + + processing_status_workflow + + AAAAAAAAAAU= + + + + + + + + + + + + + + + + + + + action + publish + + + actor + zope + + + comment + + + + error_message + + + + time + + + + + + + + + + + 1531744100.58 + UTC + + + + + + + validation_state + published + + + + + + + + + + + + + + + + + action + edit + + + actor + zope + + + comment + + + + + + error_message + + + + serial + 969.19202.56498.49408 + + + state + current + + + time + + + + + + + + + + + 1533136512.61 + UTC + + + + + + + + + + + + + + + + + + + + + action + detect_converted_file + + + actor + zope + + + comment + + + + error_message + + + + external_processing_state + converted + + + serial + 0.0.0.0 + + + time + + + + + + + + + + + 1531478687.63 + UTC + + + + + + + + + + + diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_js.js new file mode 100644 index 0000000000000000000000000000000000000000..bbb962288c21992e4a32ed3b25caf22b61a0796a --- /dev/null +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_js.js @@ -0,0 +1,162 @@ +/*global window, rJS, RSVP */ +/*jslint nomen: true, indent: 2, maxerr: 3 */ +(function (window, rJS, RSVP) { + "use strict"; + + rJS(window) + ///////////////////////////////////////////////////////////////// + // Acquired methods + ///////////////////////////////////////////////////////////////// + .declareAcquiredMethod("updateHeader", "updateHeader") + .declareAcquiredMethod("getUrlParameter", "getUrlParameter") + .declareAcquiredMethod("getUrlFor", "getUrlFor") + .declareAcquiredMethod("jio_allDocs", "jio_allDocs") + .declareAcquiredMethod("getSetting", "getSetting") + .declareAcquiredMethod("jio_toggleRevisionOption", + "jio_toggleRevisionOption") + //.declareAcquiredMethod("getId") + + .setState({jio_key: undefined}) + + ///////////////////////////////////////////////////////////////// + // declared methods + ///////////////////////////////////////////////////////////////// + .allowPublicAcquisition("jio_allDocs", function (param_list) { + var gadget = this, + jio_key, + result; + return gadget.jio_toggleRevisionOption(true) + .push(function () { + console.log(param_list[0]); + console.log(gadget.state.jio_key); + return gadget.jio_allDocs({query: "doc_id: " + gadget.state.jio_key); + }) + .push(function (timestamps) { + console.log("timestamps: ", timestamps); + param_list[0].select_list.push(gadget.state.jio_key); + }) + .push(function (res) { + result = res; + return gadget.jio_toggleRevisionOption(false); + }) + .push(function () { + console.log(result); + var i, date, len = result.data.total_rows; + for (i = 0; i < len; i += 1) { + if (result.data.rows[i].value.hasOwnProperty("modification_date")) { + date = new Date(result.data.rows[i].value.modification_date); + result.data.rows[i].value.modification_date = { + field_gadget_param: { + allow_empty_time: 0, + ampm_time_style: 0, + css_class: "date_field", + date_only: 0, + description: "The Date", + editable: 0, + hidden: 0, + hidden_day_is_last_day: 0, + "default": date.toUTCString(), + key: "modification_date", + required: 0, + timezone_style: 0, + title: "Modification Date", + type: "DateTimeField" + } + }; + result.data.rows[i].value["listbox_uid:list"] = { + key: "listbox_uid:list", + value: 2713 + }; + } + } + return result; + }); + }) + .allowPublicAcquisition('notifySubmit', function () { + return this.triggerSubmit(); + }) + + .declareMethod("triggerSubmit", function () { + var argument_list = arguments; + return this.getDeclaredGadget('form_list') + .push(function (gadget) { + return gadget.triggerSubmit.apply(gadget, argument_list); + }); + }) + + .declareMethod("render", function (options) { + var gadget = this; + + return new RSVP.Queue() + .push(function () { + return RSVP.all([ + gadget.getDeclaredGadget('form_list'), + gadget.getSetting("portal_type"), + gadget.changeState({jio_key: options.jio_key}) + ]); + }) + .push(function (result) { + console.log("result 1: ", result[1]); + var column_list = [ + ['title', 'Title'], + ['reference', 'Reference'], + ['language', 'Language'], + ['description', 'Description'], + ['version', 'Version'], + ['modification_date', 'Modification Date'] + ]; + return result[0].render({ + erp5_document: { + "_embedded": {"_view": { + "listbox": { + "column_list": column_list, + "show_anchor": 0, + "default_params": {}, + "editable": 1, + "editable_column_list": [], + "key": "field_listbox", + "lines": 30, + "list_method": "portal_catalog", + "query": "urn:jio:allDocs?query=portal_type%3A%22" + + result[1] + "%22", + "portal_type": [], + "search_column_list": column_list, + "sort_column_list": column_list, + "sort": [['modification_date', 'descending']], + "title": "Documents", + "type": "ListBox" + } + }}, + "_links": { + "type": { + // form_list display portal_type in header + name: "" + } + } + }, + form_definition: { + group_list: [[ + "bottom", + [["listbox"]] + ]] + }, + jio_key: options.jio_key + }); + }) + .push(function () { + return RSVP.all([ + gadget.getUrlFor({command: "change", options: {"page": "ojs_add_document"}}), + gadget.getSetting('document_title_plural'), + gadget.getUrlFor({command: "change", options: {"page": "ojs_document_list"}}) + ]); + }) + .push(function (result) { + return gadget.updateHeader({ + page_title: result[1], + filter_action: true, + add_url: result[0], + doc_list: result[2] + }); + }); + }); +}(window, rJS, RSVP)); \ No newline at end of file diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_js.xml new file mode 100644 index 0000000000000000000000000000000000000000..359ea267f51db2e8eb3daa6afc65d10e1df1b48d --- /dev/null +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_see_history_js.xml @@ -0,0 +1,358 @@ + + + + + + + + + + _Access_contents_information_Permission + + + Anonymous + Assignee + Assignor + Associate + Auditor + Manager + + + + + _Add_portal_content_Permission + + + Assignor + Manager + + + + + _Change_local_roles_Permission + + + Assignor + Manager + + + + + _Modify_portal_content_Permission + + + Manager + + + + + _View_Permission + + + Anonymous + Assignee + Assignor + Associate + Auditor + Manager + + + + + categories + + + contributor/person_module/1 + + + + + content_md5 + + + + + + creators + + + cedric.le.ninivin + + + + + default_reference + gadget_erp5_page_ojs_see_history.js + + + description + + + + + + id + gadget_officejs_erp5_page_see_history_js + + + language + + + + + + modification_date + + + + + + + + + + + 1455284351.49 + UTC + + + + + + + portal_type + Web Script + + + short_title + + + + + + title + OfficeJS See History JS + + + url_string + + + + + + version + 001 + + + workflow_history + + AAAAAAAAAAI= + + + + + + + + + + + + + data + + + + document_publication_workflow + + AAAAAAAAAAM= + + + + edit_workflow + + AAAAAAAAAAQ= + + + + processing_status_workflow + + AAAAAAAAAAU= + + + + + + + + + + + + + + + + + + + action + publish + + + actor + zope + + + comment + + + + error_message + + + + time + + + + + + + + + + + 1531744666.92 + UTC + + + + + + + validation_state + published + + + + + + + + + + + + + + + + + action + edit + + + actor + zope + + + comment + + + + + + error_message + + + + serial + 969.21731.6944.62361 + + + state + current + + + time + + + + + + + + + + + 1533285349.95 + UTC + + + + + + + + + + + + + + + + + + + + + action + detect_converted_file + + + actor + zope + + + comment + + + + error_message + + + + external_processing_state + converted + + + serial + 0.0.0.0 + + + time + + + + + + + + + + + 1531478632.37 + UTC + + + + + + + + + + + diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_html.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_html.xml index 5dc908a56f6f2ba1c2400899b213a6acabe19ffd..eea64e07df362f739d1ac78196fcff8047ac570f 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_html.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_html.xml @@ -236,7 +236,7 @@
serial - 960.57151.51816.16622 + 968.44071.55411.42615 state @@ -254,7 +254,7 @@ - 1501251929.75 + 1533135741.41 UTC diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_js.js index ff4406faa453b1d62f6ca74b07f562ae6a586cf0..b95cb9589f1d4ff101378516bb372ef4aa4f38c6 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_js.js +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_js.js @@ -17,7 +17,6 @@ ///////////////////////////////////////////////////////////////// // declared methods ///////////////////////////////////////////////////////////////// - .declareMethod("render", function (options) { return this.changeState({ jio_key: options.jio_key, @@ -150,7 +149,8 @@ return RSVP.all([ gadget.getUrlFor({command: 'history_previous'}), gadget.getUrlFor({command: 'selection_previous'}), - gadget.getUrlFor({command: 'selection_next'}) + gadget.getUrlFor({command: 'selection_next'}), + gadget.getUrlFor({command: "change", options: {"page": "ojs_see_history"}}) ]); }) .push(function (url_list) { @@ -159,7 +159,8 @@ save_action: true, selection_url: url_list[0], previous_url: url_list[1], - next_url: url_list[2] + next_url: url_list[2], + see_history: url_list[3] }); }); }); diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_js.xml index 0e76ea42e23793c7e7ba8805cb1ad8c7cc4b9d5e..534cf497be762b29fbe736fce88d7efbacf87167 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_js.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_jio_web_page_view_js.xml @@ -218,7 +218,7 @@ actor - vincent + zope comment @@ -232,7 +232,7 @@ serial - 964.48513.5538.10342 + 969.19249.10625.64000 state @@ -250,7 +250,7 @@ - 1515766909.33 + 1533136525.71 UTC diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_document_list_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_document_list_js.js index ec991d79add7fecb4dd88ed5504d79b8970537b2..15f5b339183dba189eb629676f12a430bf90c308 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_document_list_js.js +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_document_list_js.js @@ -36,8 +36,11 @@ .declareAcquiredMethod('getSetting', 'getSetting') .declareAcquiredMethod("jio_allDocs", "jio_allDocs") .declareAcquiredMethod("redirect", "redirect") + .declareAcquiredMethod("jio_toggleRevisionOption", + "jio_toggleRevisionOption") .allowPublicAcquisition("jio_allDocs", function (param_list) { var gadget = this; + gadget.jio_toggleRevisionOption(false); return this.jio_allDocs.apply(this, param_list) .push(function (result) { var i, diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_document_list_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_document_list_js.xml index 01be8061d7fe026b8ab5bc44035084a781cd362e..8782bbecd92667d63ea0da339942ac8e79845515 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_document_list_js.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_document_list_js.xml @@ -267,7 +267,7 @@ serial - 959.44888.46554.50039 + 968.63157.27775.20480 state @@ -285,7 +285,7 @@ - 1498035961.94 + 1531928420.68 UTC diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_configurator_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_configurator_js.js index 6eac842dbd0daba0ae6ed92dbfd59141d8dbf943..ead9c6d54af3bc86c259c572abb32bd026657493 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_configurator_js.js +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_configurator_js.js @@ -23,12 +23,18 @@ "local": { "setConfiguration": function (gadget) { var configuration = { - type: "query", + type: "uuid", sub_storage: { - type: "uuid", + type: "query", sub_storage: { - type: "indexeddb", - database: "local_default" + type: "history", + sub_storage: { + type: "query", + sub_storage: { + type: "indexeddb", + database: "local_default" + } + } } } }; diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_configurator_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_configurator_js.xml index e78be35cd92b076d69f2589d587c393e8ed3e728..c9934b647806cc063a4b555c5268ae8fec7b336d 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_configurator_js.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_configurator_js.xml @@ -236,7 +236,7 @@ serial - 961.10686.10882.5973 + 968.61786.19635.10274 state @@ -254,7 +254,7 @@ - 1501771018.12 + 1531816452.69 UTC diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_text_editor_appcache.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_text_editor_appcache.xml index d8e84e384012e2fda3572292b9cda79019e4f0fa..ca33fbd47fbd7302124c23070ce66abed1fa5698 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_text_editor_appcache.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_text_editor_appcache.xml @@ -153,6 +153,8 @@ gadget_erp5_page_ojs_controller.html\n gadget_erp5_page_ojs_controller.js\n gadget_erp5_page_ojs_add_document.html\n gadget_erp5_page_ojs_add_document.js\n +gadget_erp5_page_ojs_see_history.html\n +gadget_erp5_page_ojs_see_history.js\n gadget_erp5_page_ojs_configurator.html\n gadget_erp5_page_ojs_configurator.js\n gadget_erp5_page_ojs_dav_configurator.html\n @@ -685,7 +687,7 @@ NETWORK:\n actor - vincent + zope comment @@ -699,7 +701,7 @@ NETWORK:\n serial - 964.48519.41997.58350 + 969.16222.16646.56320 state @@ -717,7 +719,7 @@ NETWORK:\n - 1515675473.77 + 1532954835.43 UTC diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/ojs_page_drive_app_configurator_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/ojs_page_drive_app_configurator_js.xml index ec824ee8ee27754fb0e41d7c6c55cf883ea74f95..486a1e7f878eda381265e27f5846a96ee655691a 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/ojs_page_drive_app_configurator_js.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/ojs_page_drive_app_configurator_js.xml @@ -236,7 +236,7 @@ serial - 962.48398.15828.27938 + 968.44071.55411.42615 state @@ -254,8 +254,8 @@ - 1507880576.48 - GMT+9 + 1530708459.0 + UTC diff --git a/erp5/util/testbrowser/browser.py b/erp5/util/testbrowser/browser.py index 96760699b452f4de1fd317ac6e8e5fdc38149f8b..fbf3a704384b53050c0feb16fd70c9f6a2405dd4 100644 --- a/erp5/util/testbrowser/browser.py +++ b/erp5/util/testbrowser/browser.py @@ -36,10 +36,9 @@ import urllib import Cookie import re -from zope.testbrowser._compat import urlparse +from urlparse import urljoin from z3c.etestbrowser.browser import ExtendedTestBrowser from zope.testbrowser.browser import onlyOne -from contextlib import contextmanager def measurementMetaClass(prefix): """ @@ -202,7 +201,7 @@ class Browser(ExtendedTestBrowser): # In case url_or_path is an absolute URL, urljoin() will return # it, otherwise it is a relative path and will be concatenated to # ERP5 base URL - url_or_path = urlparse.urljoin(self._erp5_base_url, url_or_path) + url_or_path = urljoin(self._erp5_base_url, url_or_path) if isinstance(data, dict): data = urllib.urlencode(data) @@ -210,100 +209,6 @@ class Browser(ExtendedTestBrowser): self._logger.debug("Opening: " + url_or_path) super(Browser, self).open(url_or_path, data) - @contextmanager - def _preparedRequest(self, url, no_visit=False): - """ - Monkey patched for openNoVisit() - """ - from zope.testbrowser._compat import urlparse - - self.timer.start() - - headers = {} - if self.url: - headers['Referer'] = self.url - - if self._req_content_type: - headers['Content-Type'] = self._req_content_type - - headers['Connection'] = 'close' - headers['Host'] = urlparse.urlparse(url).netloc - headers['User-Agent'] = 'Python-urllib/2.4' - - headers.update(self._req_headers) - - extra_environ = {} - if self.handleErrors: - extra_environ['paste.throw_errors'] = None - headers['X-zope-handle-errors'] = 'True' - else: - extra_environ['wsgi.handleErrors'] = False - extra_environ['paste.throw_errors'] = True - extra_environ['x-wsgiorg.throw_errors'] = True - headers.pop('X-zope-handle-errors', None) - - kwargs = {'headers': sorted(headers.items()), - 'extra_environ': extra_environ, - 'expect_errors': True} - - yield kwargs - - if not no_visit: - self._changed() - - self.timer.stop() - - def _processRequest(self, url, make_request, no_visit=False): - """ - Monkey patched for openNoVisit() - """ - from zope.testbrowser.browser import REDIRECTS - from zope.testbrowser._compat import urlparse - - with self._preparedRequest(url, no_visit=no_visit) as reqargs: - if not no_visit: - self._history.add(self._response) - - resp = make_request(reqargs) - remaining_redirects = 100 # infinite loops protection - while resp.status_int in REDIRECTS and remaining_redirects: - remaining_redirects -= 1 - # BEGIN: Bugfix - location = resp.headers['location'] - if '?' in location: - location_without_query_string, query_string = location.split('?') - location = ( - location_without_query_string + - '?' + urllib.urlencode(urlparse.parse_qs(query_string, - strict_parsing=True), - doseq=True)) - # END: Bugfix - url = urlparse.urljoin(url, location) - - with self._preparedRequest(url, no_visit=no_visit) as reqargs: - resp = self.testapp.get(url, **reqargs) - assert remaining_redirects > 0, "redirects chain looks infinite" - - if not no_visit: - self._setResponse(resp) - self._checkStatus() - - return resp - - def _absoluteUrl(self, url): - absolute = url.startswith('http://') or url.startswith('https://') - if absolute: - return str(url) - - if self._response is None: - raise BrowserStateError( - "can't fetch relative reference: not viewing any document") - - if not isinstance(url, unicode): - url = url.decode('utf-8') - - return str(urlparse.urljoin(self._getBaseUrl(), url).encode('utf-8')) - def openNoVisit(self, url_or_path, data=None, site_relative=True): """ Copy/paste from zope.testbrowser.Browser.open() to allow opening an URL @@ -315,22 +220,40 @@ class Browser(ExtendedTestBrowser): # In case url_or_path is an absolute URL, urljoin() will return # it, otherwise it is a relative path and will be concatenated to # ERP5 base URL - url_or_path = urlparse.urljoin(self._erp5_base_url, url_or_path) + url_or_path = urljoin(self._erp5_base_url, url_or_path) + + import mechanize if isinstance(data, dict): data = urllib.urlencode(data) - url = self._absoluteUrl(url_or_path) - self._logger.debug("Opening: " + url) - - if data is not None: - def make_request(args): - return self.testapp.post(url, data, **args) - else: - def make_request(args): - return self.testapp.get(url, **args) - - return self._processRequest(url, make_request, no_visit=True) + response = None + url_or_path = str(url_or_path) + self._logger.debug("Opening: " + url_or_path) + self._start_timer() + try: + try: + try: + response = self.mech_browser.open_novisit(url_or_path, data) + except Exception, e: + raise + except mechanize.HTTPError, e: + if e.code >= 200 and e.code <= 299: + # 200s aren't really errors + pass + elif self.raiseHttpErrors: + raise + finally: + self._stop_timer() + + # if the headers don't have a status, I suppose there can't be an error + if 'Status' in self.headers: + code, msg = self.headers['Status'].split(' ', 1) + code = int(code) + if self.raiseHttpErrors and code >= 400: + raise mechanize.HTTPError(url_or_path, code, msg, self.headers, fp=None) + + return response def randomSleep(self, minimum, maximum): """ @@ -434,28 +357,31 @@ class Browser(ExtendedTestBrowser): elif url and '?' not in url: url += '?' - from zope.testbrowser.browser import isMatching, LinkNotFoundError - qa = 'a' if id is None else 'a#%s' % id - qarea = 'area' if id is None else 'area#%s' % id - html = self._html - links = html.select(qa) - links.extend(html.select(qarea)) - - matching = [] - for elem in links: - matches = (isMatching(elem.text.encode('utf-8'), text) and - isMatching(elem.get('href', ''), url)) - - if matches: - matching.append(elem) + if id is not None: + def predicate(link): + return dict(link.attrs).get('id') == id + args = {'predicate': predicate} + else: + import re + from zope.testbrowser.browser import RegexType - if index >= len(matching): - raise LinkNotFoundError() - elem = matching[index] + if isinstance(text, RegexType): + text_regex = text + elif text is not None: + text_regex = re.compile(re.escape(text), re.DOTALL) + else: + text_regex = None - baseurl = self._getBaseUrl() + if isinstance(url, RegexType): + url_regex = url + elif url is not None: + url_regex = re.compile(re.escape(url), re.DOTALL) + else: + url_regex = None + args = {'text_regex': text_regex, 'url_regex': url_regex} - return LinkWithTime(elem, self, baseurl) + args['nr'] = index + return LinkWithTime(self.mech_browser.find_link(**args), self) def getImportExportLink(self): """ @@ -681,8 +607,8 @@ class Browser(ExtendedTestBrowser): @rtype: int """ self._logger.debug("Checking the number of remaining activities") - response = self.openNoVisit('portal_activities/countMessage')[1] - activity_counter = response.body + activity_counter = self.mech_browser.open_novisit( + self._erp5_base_url + 'portal_activities/countMessage').read() activity_counter = activity_counter and int(activity_counter) or 0 self._logger.debug("Remaining activities: %d" % activity_counter) @@ -1289,23 +1215,26 @@ class ImageControlWithTime(ImageControl): import zope.testbrowser.browser -browser_simpleControlFactory = zope.testbrowser.browser.simpleControlFactory -def simpleControlFactory(wtcontrol, form, elemindex, browser): +browser_controlFactory = zope.testbrowser.browser.controlFactory +def controlFactory(control, *args, **kwargs): """ - Monkey patched to get elapsed time on ImageControl and SubmitControl + Monkey patch controlFactory in zope.testbrowser to get elapsed time on + ImageControl and SubmitControl """ - import webtest - - elem = elemindex[wtcontrol.pos] - if isinstance(wtcontrol, webtest.forms.Submit): - if wtcontrol.attrs.get('type', 'submit') == 'image': - return ImageControlWithTime(wtcontrol, form, elem, browser) - else: - return SubmitControlWithTime(wtcontrol, form, elem, browser) - - return browser_simpleControlFactory(wtcontrol, form, elemindex, browser) - -zope.testbrowser.browser.simpleControlFactory = simpleControlFactory + try: + t = control.type + except AttributeError: + # This is a subcontrol + pass + else: + if t in ('submit', 'submitbutton'): + return SubmitControlWithTime(control, *args, **kwargs) + elif t == 'image': + return ImageControlWithTime(control, *args, **kwargs) + + return browser_controlFactory(control, *args, **kwargs) + +zope.testbrowser.browser.controlFactory = controlFactory from zope.testbrowser.browser import Link diff --git a/tests/__init__.py b/tests/__init__.py index b2b4b116e4cf45ef207f2f85c0644b10ac22f622..a57469a9e35893bb016179ef8781f58e8dc8992d 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -35,9 +35,8 @@ class _ERP5(ERP5TypeTestSuite): component_re = re.compile(".*/([^/]+)/TestTemplateItem/portal_components" "/test\.[^.]+\.([^.]+).py$") for test_path in ( - glob('%s/product/*/tests/test*.py' % path) + - glob('%s/bt5/*/TestTemplateItem/test*.py' % path) + - glob('%s/bt5/*/TestTemplateItem/portal_components/test.*.test*.py' % path)): + glob('%s/bt5/erp5_ui_test/TestTemplateItem/portal_components/test.*.test*.py' % path) + + glob('%s/bt5/erp5_officejs_ui_test/TestTemplateItem/portal_components/test.*.test*.py' % path)): component_re_match = component_re.match(test_path) if component_re_match is not None: test_case = "%s:%s" % (component_re_match.group(1),