From b07d59e3ed102987cadd25706106507bd2f4267e Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Fri, 19 Sep 2014 08:38:06 +0200 Subject: [PATCH 01/45] [ADD] Module help_online This module allows the creation of an online help available from the lists and forms in Odoo. When loading a view, the module generates a button allowing access to an help page for the related model if the page exists and the user is member of the group 'Help reader'. If the page doesn't exist and the user is member of the group 'Help writer', the module generate a button allowing the creation an help page. The help pages are created and managed via the website Module. --- help_online/__init__.py | 30 +++++ help_online/__openerp__.py | 65 ++++++++++ help_online/controllers/__init__.py | 29 +++++ .../controllers/help_online_controllers.py | 40 ++++++ help_online/models/__init__.py | 29 +++++ help_online/models/help_online.py | 68 +++++++++++ help_online/security/help_online_groups.xml | 16 +++ .../description/help_online_create_page.png | Bin 0 -> 54133 bytes .../description/help_online_view_page.png | Bin 0 -> 88343 bytes help_online/static/description/index.html | 16 +++ help_online/static/src/css/help_online.css | 12 ++ help_online/static/src/js/help_online.js | 115 ++++++++++++++++++ .../src/js/website_help_online.editor.js | 21 ++++ help_online/static/src/xml/help_online.xml | 13 ++ help_online/views/help_online_view.xml | 13 ++ help_online/views/website_help_online.xml | 12 ++ 16 files changed, 479 insertions(+) create mode 100644 help_online/__init__.py create mode 100644 help_online/__openerp__.py create mode 100644 help_online/controllers/__init__.py create mode 100644 help_online/controllers/help_online_controllers.py create mode 100644 help_online/models/__init__.py create mode 100644 help_online/models/help_online.py create mode 100644 help_online/security/help_online_groups.xml create mode 100644 help_online/static/description/help_online_create_page.png create mode 100644 help_online/static/description/help_online_view_page.png create mode 100644 help_online/static/description/index.html create mode 100644 help_online/static/src/css/help_online.css create mode 100644 help_online/static/src/js/help_online.js create mode 100644 help_online/static/src/js/website_help_online.editor.js create mode 100644 help_online/static/src/xml/help_online.xml create mode 100644 help_online/views/help_online_view.xml create mode 100644 help_online/views/website_help_online.xml diff --git a/help_online/__init__.py b/help_online/__init__.py new file mode 100644 index 00000000..1a365a2d --- /dev/null +++ b/help_online/__init__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Nemry Jonathan +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import controllers +from . import models diff --git a/help_online/__openerp__.py b/help_online/__openerp__.py new file mode 100644 index 00000000..178078b3 --- /dev/null +++ b/help_online/__openerp__.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Nemry Jonathan +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{ + 'name': 'Help Online', + 'version': '1.0', + 'author': 'ACSONE SA/NV', + 'maintainer': 'ACSONE SA/NV', + 'website': 'http://www.acsone.eu', + 'category': 'Documentation', + 'depends': [ + 'base', + 'website', + ], + 'description': """ +Help Online +=========== + +This module allows the creation of an online help available from the lists +and forms in Odoo. + +When loading a view, the module generates a button allowing access to an help +page for the related model if the page exists and the user is member of the +group 'Help reader'. If the page doesn't exist and the user is member of +the group 'Help writer', the module generate a button allowing the creation an +help page. + +The help pages are created and managed via the website Module. + """, + 'data': [ + 'security/help_online_groups.xml', + 'views/help_online_view.xml', + 'views/website_help_online.xml', + ], + 'qweb': [ + 'static/src/xml/help_online.xml', + ], + 'installable': True, + 'auto_install': False, +} diff --git a/help_online/controllers/__init__.py b/help_online/controllers/__init__.py new file mode 100644 index 00000000..8422fc0d --- /dev/null +++ b/help_online/controllers/__init__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Laurent Mignon +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from .import help_online_controllers diff --git a/help_online/controllers/help_online_controllers.py b/help_online/controllers/help_online_controllers.py new file mode 100644 index 00000000..70545d17 --- /dev/null +++ b/help_online/controllers/help_online_controllers.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Mignon Laurent +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import openerp.http as http +from openerp.http import request + + +class HelpOnlineController(http.Controller): + + @http.route('/help_online/build_url', type='json', auth='user') + def build_url(self, model, view_type, domain=None, context=None): + help_online_model = request.env['help.online'] + return help_online_model.get_page_url( + model, view_type, domain=None, context=None) diff --git a/help_online/models/__init__.py b/help_online/models/__init__.py new file mode 100644 index 00000000..454eb497 --- /dev/null +++ b/help_online/models/__init__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Nemry Jonathan +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import help_online diff --git a/help_online/models/help_online.py b/help_online/models/help_online.py new file mode 100644 index 00000000..7400e38c --- /dev/null +++ b/help_online/models/help_online.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Laurent Mignon +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp.osv import orm +from openerp.tools.translate import _ + + +class HelpOnline(orm.TransientModel): + _name = 'help.online' + + def _get_view_name(self, model, view_type, domain=None, context=None): + name = 'help-%s' % model.replace('.', '-') + return name + + def page_exists(self, name): + website_model = self.env['website'] + return website_model.page_exists(name) + + def get_page_url(self, model, view_type, domain=None, context=None): + user_model = self.env['res.users'] + if not user_model.has_group('help_online.help_online_group_reader'): + return {} + ir_model = self.env['ir.model'] + description = self.env[model]._description + res = ir_model.name_search(model, operator='=') + if(res): + description = res[0][1] + name = self._get_view_name(model, view_type, domain, context) + if self.page_exists(name): + url = '/page/%s' % name + if view_type: + url = url + '#' + view_type + title = _('Help on %s') % description + return {'url': url, + 'title': title, + 'exists': True} + elif user_model.has_group('help_online.help_online_group_writer'): + title = _('Create Help page for %s') % description + return {'url': 'website/add/%s' % name, + 'title': title, + 'exists': False} + else: + return {} diff --git a/help_online/security/help_online_groups.xml b/help_online/security/help_online_groups.xml new file mode 100644 index 00000000..fd981bf1 --- /dev/null +++ b/help_online/security/help_online_groups.xml @@ -0,0 +1,16 @@ + + + + Help reader + + + + Help writer + + + + + \ No newline at end of file diff --git a/help_online/static/description/help_online_create_page.png b/help_online/static/description/help_online_create_page.png new file mode 100644 index 0000000000000000000000000000000000000000..eb97a45af069ab7a6888811354c0bef124f076ac GIT binary patch literal 54133 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 literal 0 HcmV?d00001 diff --git a/help_online/static/description/help_online_view_page.png b/help_online/static/description/help_online_view_page.png new file mode 100644 index 0000000000000000000000000000000000000000..07def9f9297ac753539d0c1a76b23a81f5835fbc GIT binary patch literal 88343 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 literal 0 HcmV?d00001 diff --git a/help_online/static/description/index.html b/help_online/static/description/index.html new file mode 100644 index 00000000..e2edb627 --- /dev/null +++ b/help_online/static/description/index.html @@ -0,0 +1,16 @@ +

+
+

Help Online

+

This module allows the creation of an online help available from the lists and forms in Odoo.

+

When loading a view, the module generates a button allowing access to an help + page for the related model if the page exists and the user is member of the + group 'Help reader'.

+ help_online_view_page.png +

If the page doesn't exist and the user is member of + the group 'Help writer', the module generate a button allowing the creation an + help page.

+ help_online_create_page.png +

The help pages are created and managed via the website Module.

+
+
+
diff --git a/help_online/static/src/css/help_online.css b/help_online/static/src/css/help_online.css new file mode 100644 index 00000000..90134d99 --- /dev/null +++ b/help_online/static/src/css/help_online.css @@ -0,0 +1,12 @@ +li.oe_help_online_not_found { + background-color: red; +} + +.openerp .oe_view_manager .oe_view_manager_switch .oe_list_button_help_online:after { + font-size: 28px; + content: "?"; + text-align: center; + margin: 3px auto 4px; + position: relative; + display: block; +} diff --git a/help_online/static/src/js/help_online.js b/help_online/static/src/js/help_online.js new file mode 100644 index 00000000..c660a110 --- /dev/null +++ b/help_online/static/src/js/help_online.js @@ -0,0 +1,115 @@ +openerp.help_online = function (instance) { + var QWeb = instance.web.qweb; + var _t = instance.web._t; + var _lt = instance.web._lt; + + instance.web.ListView.include({ + load_list: function () { + var self = this; + var add_button = false; + if (!this.$buttons) { + add_button = true; + } + this._super.apply(this, arguments); + this.$buttons.on('click', '.oe_list_button_help_online', function() { + self.do_action({ + type: 'ir.actions.act_url', + url: '/partner_mobile', + target: 'self', + }); + }); + }, + }); + + openerp.web.TreeView.include({ + view_loading: function(r) { + var ret = this._super(r); + if(! _.isUndefined(this.ViewManager.load_help_buttons)){ + this.ViewManager.load_help_buttons(); + } + return ret + }, + }); + + openerp.web.ListView.include({ + view_loading: function(r) { + var ret = this._super(r); + if(! _.isUndefined(this.ViewManager.load_help_buttons)){ + this.ViewManager.load_help_buttons(); + } + return ret + }, + }); + + openerp.web.FormView.include({ + view_loading: function(r) { + var ret = this._super(r); + if(!_.isUndefined(this.ViewManager.clean_help_buttons)){ + this.ViewManager.clean_help_buttons(); + } + return ret + }, + + do_show: function (options){ + var ret = this._super(options); + if(! _.isUndefined(this.ViewManager.load_help_buttons)){ + this.ViewManager.load_help_buttons(); + } + return ret + }, + }); + + openerp.web.ViewManager.include({ + clean_help_buttons:function() { + this.$el.find("div.oe_help_online_buttons").first().remove(); + }, + + load_help_buttons:function() { + var self = this; + this.rpc('/help_online/build_url', {model: this.dataset.model, view_type: this.active_view}).then(function(result) { + self.clean_help_buttons(); + if (result && ! _.isEmpty(result)) { + self.$helpButtonsEl = $(QWeb.render("HelpOnline.Buttons", {'view_manager':self, 'url_info': result})); + self.$el.find("ul.oe_view_manager_switch.oe_button_group.oe_right").first().before(self.$helpButtonsEl); + self.$helpButtonsEl.find('a.oe_list_button_help_online').tooltip(); + if (result.exists === false) { + self.$helpButtonsEl.find('li').addClass('oe_help_online_not_found') + self.$helpButtonsEl.find('a.oe_list_button_help_online').on('click', function (event) { + var evt = event; + evt.preventDefault(); + var dialog = new instance.web.Dialog(this, { + title: _t('Confirm'), + buttons: [ + {text: _t("Cancel"), click: function() { + this.parents('.modal').modal('hide'); + return false; + } + }, + {text: _t("Ok"), click: function() { + this.parents('.modal').modal('hide'); + var form = $("
"); + form.attr( + { + id : "formform", + // The location given in the link itself + action : evt.target.href, + method : "GET", + // Open in new window/tab + target : evt.target.target + }); + $("body").append(form); + $("#formform").submit(); + $("#formform").remove(); + return false; + } + } + ], + }, $('
').text(_t('Page does not exist. Do you want to create?'))).open(); + }); + } + } + }); + }, + + }); +} diff --git a/help_online/static/src/js/website_help_online.editor.js b/help_online/static/src/js/website_help_online.editor.js new file mode 100644 index 00000000..0dc2f3d1 --- /dev/null +++ b/help_online/static/src/js/website_help_online.editor.js @@ -0,0 +1,21 @@ +(function () { + 'use strict'; + + var website = openerp.website; + var _t = openerp._t; + website.RTE.include({ + _config: function () { + // add anchor button + var config = this._super(); + config.plugins = config.plugins.concat(',link'); + _.each(config.toolbar, function (tb) { + if (tb.name === 'span'){ + tb.items.unshift('Anchor'); + } + }); + return config; + }, + }); +})(); + + diff --git a/help_online/static/src/xml/help_online.xml b/help_online/static/src/xml/help_online.xml new file mode 100644 index 00000000..fb55b85b --- /dev/null +++ b/help_online/static/src/xml/help_online.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/help_online/views/help_online_view.xml b/help_online/views/help_online_view.xml new file mode 100644 index 00000000..c53cbce3 --- /dev/null +++ b/help_online/views/help_online_view.xml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/help_online/views/website_help_online.xml b/help_online/views/website_help_online.xml new file mode 100644 index 00000000..353d82e6 --- /dev/null +++ b/help_online/views/website_help_online.xml @@ -0,0 +1,12 @@ + + + + + + + + From f3ec4798579dbc3d4a0fd2e7dfdc139513ed2e31 Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Fri, 19 Sep 2014 09:53:45 +0200 Subject: [PATCH 02/45] [FX] licence --- help_online/__init__.py | 14 +++----------- help_online/__openerp__.py | 14 +++----------- help_online/controllers/__init__.py | 14 +++----------- .../controllers/help_online_controllers.py | 16 ++++------------ help_online/models/__init__.py | 14 +++----------- help_online/models/help_online.py | 14 +++----------- 6 files changed, 19 insertions(+), 67 deletions(-) diff --git a/help_online/__init__.py b/help_online/__init__.py index 1a365a2d..ccd23e28 100644 --- a/help_online/__init__.py +++ b/help_online/__init__.py @@ -3,19 +3,11 @@ # # Authors: Nemry Jonathan # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/__openerp__.py b/help_online/__openerp__.py index 178078b3..c27f0e55 100644 --- a/help_online/__openerp__.py +++ b/help_online/__openerp__.py @@ -3,19 +3,11 @@ # # Authors: Nemry Jonathan # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/controllers/__init__.py b/help_online/controllers/__init__.py index 8422fc0d..287fdda2 100644 --- a/help_online/controllers/__init__.py +++ b/help_online/controllers/__init__.py @@ -3,19 +3,11 @@ # # Authors: Laurent Mignon # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/controllers/help_online_controllers.py b/help_online/controllers/help_online_controllers.py index 70545d17..3a00bd7f 100644 --- a/help_online/controllers/help_online_controllers.py +++ b/help_online/controllers/help_online_controllers.py @@ -1,21 +1,13 @@ # -*- coding: utf-8 -*- ############################################################################## # -# Authors: Mignon Laurent +# Authors: Laurent Mignon # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/models/__init__.py b/help_online/models/__init__.py index 454eb497..fe7c6a0f 100644 --- a/help_online/models/__init__.py +++ b/help_online/models/__init__.py @@ -3,19 +3,11 @@ # # Authors: Nemry Jonathan # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/models/help_online.py b/help_online/models/help_online.py index 7400e38c..9a4162ff 100644 --- a/help_online/models/help_online.py +++ b/help_online/models/help_online.py @@ -3,19 +3,11 @@ # # Authors: Laurent Mignon # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of From be46fc6504849411f5e7842b9d06e34b9e8ffd79 Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Fri, 19 Sep 2014 09:56:22 +0200 Subject: [PATCH 03/45] [FIX] passes domain and context to get_page_url() --- help_online/controllers/help_online_controllers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/help_online/controllers/help_online_controllers.py b/help_online/controllers/help_online_controllers.py index 3a00bd7f..12339b23 100644 --- a/help_online/controllers/help_online_controllers.py +++ b/help_online/controllers/help_online_controllers.py @@ -29,4 +29,4 @@ class HelpOnlineController(http.Controller): def build_url(self, model, view_type, domain=None, context=None): help_online_model = request.env['help.online'] return help_online_model.get_page_url( - model, view_type, domain=None, context=None) + model, view_type, domain=domain, context=context) From 75d0f675d5ba362c0b6001f9b5ef9020fccaa516 Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Fri, 19 Sep 2014 09:57:28 +0200 Subject: [PATCH 04/45] [FIX] typo --- help_online/models/help_online.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/help_online/models/help_online.py b/help_online/models/help_online.py index 9a4162ff..15e41a70 100644 --- a/help_online/models/help_online.py +++ b/help_online/models/help_online.py @@ -40,7 +40,7 @@ class HelpOnline(orm.TransientModel): ir_model = self.env['ir.model'] description = self.env[model]._description res = ir_model.name_search(model, operator='=') - if(res): + if res: description = res[0][1] name = self._get_view_name(model, view_type, domain, context) if self.page_exists(name): From bb6b7c587b1290a58e65c26e03b7174fd13ce5be Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Fri, 19 Sep 2014 10:08:33 +0200 Subject: [PATCH 05/45] [FIX] use a smoother color for the button when the help page does not exist --- help_online/static/src/css/help_online.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/help_online/static/src/css/help_online.css b/help_online/static/src/css/help_online.css index 90134d99..7a17f36a 100644 --- a/help_online/static/src/css/help_online.css +++ b/help_online/static/src/css/help_online.css @@ -1,5 +1,5 @@ li.oe_help_online_not_found { - background-color: red; + background-color: #df3f3f; } .openerp .oe_view_manager .oe_view_manager_switch .oe_list_button_help_online:after { From 9fe5559452b70cba3cc568e090b6fdcd4f6d8820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Wed, 8 Oct 2014 16:15:48 +0200 Subject: [PATCH 06/45] [8.0][IMP] add export feature for help online --- help_online/__openerp__.py | 18 +- help_online/data/help_auto_backup.xml | 9 + help_online/data/ir_config_parameter_data.xml | 25 ++ help_online/models/__init__.py | 16 +- help_online/models/export_help_wizard.py | 285 ++++++++++++++++++ help_online/models/help_online.py | 27 +- help_online/models/ir_model.py | 81 +++++ help_online/static/description/icon.png | Bin 0 -> 80511 bytes help_online/static/description/index.html | 1 + .../static/src/img/snippet/snippet_thumbs.png | Bin 0 -> 43363 bytes help_online/tests/__init__.py | 35 +++ help_online/tests/data/help_test_data.xml | 78 +++++ help_online/tests/test_export_help_wizard.py | 169 +++++++++++ help_online/views/export_help_wizard_view.xml | 56 ++++ help_online/views/ir_ui_view_view.xml | 28 ++ 15 files changed, 815 insertions(+), 13 deletions(-) create mode 100644 help_online/data/help_auto_backup.xml create mode 100644 help_online/data/ir_config_parameter_data.xml create mode 100644 help_online/models/export_help_wizard.py create mode 100644 help_online/models/ir_model.py create mode 100644 help_online/static/description/icon.png create mode 100644 help_online/static/src/img/snippet/snippet_thumbs.png create mode 100644 help_online/tests/__init__.py create mode 100644 help_online/tests/data/help_test_data.xml create mode 100644 help_online/tests/test_export_help_wizard.py create mode 100644 help_online/views/export_help_wizard_view.xml create mode 100644 help_online/views/ir_ui_view_view.xml diff --git a/help_online/__openerp__.py b/help_online/__openerp__.py index c27f0e55..832d3be1 100644 --- a/help_online/__openerp__.py +++ b/help_online/__openerp__.py @@ -3,11 +3,19 @@ # # Authors: Nemry Jonathan # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -45,9 +53,13 @@ help page. The help pages are created and managed via the website Module. """, 'data': [ + 'data/help_auto_backup.xml', # must always be the first 'security/help_online_groups.xml', 'views/help_online_view.xml', 'views/website_help_online.xml', + 'views/ir_ui_view_view.xml', + 'views/export_help_wizard_view.xml', + 'data/ir_config_parameter_data.xml', ], 'qweb': [ 'static/src/xml/help_online.xml', diff --git a/help_online/data/help_auto_backup.xml b/help_online/data/help_auto_backup.xml new file mode 100644 index 00000000..ac6dcd57 --- /dev/null +++ b/help_online/data/help_auto_backup.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/help_online/data/ir_config_parameter_data.xml b/help_online/data/ir_config_parameter_data.xml new file mode 100644 index 00000000..94f859fa --- /dev/null +++ b/help_online/data/ir_config_parameter_data.xml @@ -0,0 +1,25 @@ + + + + + + help_online_autobackup_path + False + + + + + + help_online_page_prefix + help + + + + + + help_online_template_prefix + help-template + + + + \ No newline at end of file diff --git a/help_online/models/__init__.py b/help_online/models/__init__.py index fe7c6a0f..fd36eaa5 100644 --- a/help_online/models/__init__.py +++ b/help_online/models/__init__.py @@ -3,11 +3,19 @@ # # Authors: Nemry Jonathan # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,3 +27,5 @@ # ############################################################################## from . import help_online +from . import export_help_wizard +from . import ir_model diff --git a/help_online/models/export_help_wizard.py b/help_online/models/export_help_wizard.py new file mode 100644 index 00000000..c98ed837 --- /dev/null +++ b/help_online/models/export_help_wizard.py @@ -0,0 +1,285 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Cédric Pigeon +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +import logging +import base64 +import time +import copy + +from lxml import etree as ET +from xml.dom import minidom as minidom +from openerp import models, fields, api, exceptions +from openerp.tools.translate import _ + +_logger = logging.getLogger(__name__) + +PAGE_PREFIX_PARAMETER = 'help_online_page_prefix' +TEMPLATE_PREFIX_PARAMETER = 'help_online_template_prefix' +AUTOBACKUP_PARAMETER = 'help_online_autobackup_path' +HELP_ONLINE_SNIPPET_IMAGE_PATH = '/help_online/static/src/'\ + 'img/snippet/snippet_thumbs.png' + + +class ExportHelpWizard(models.TransientModel): + _name = "export.help.wizard" + _description = 'Export Help Online' + + data = fields.Binary('XML', readonly=True) + export_filename = fields.Char('Export XML Filename', size=128) + + def _manage_images_on_page(self, page_node, data_node): + ''' + - Extract images from page and generate a xml node + - Replace db id in url with xml id + ''' + + def substitute_id_by_xml_id(): + new_src = False + attach_id = False + if 'id=' in img_src: + id_pos = img_src.index('id=') + 3 + attach_id = img_elem.get('src')[id_pos:] + new_src = img_src.replace(attach_id, xml_id) + else: + fragments = img_src.split('ir.attachment/') + attach_id, trail = fragments[1].split('_', 1) + new_src = "/website/image/ir.attachment/%s|%s" % \ + (xml_id, trail) + return new_src, attach_id + + i_img = 0 + img_model = 'ir.attachment' + for img_elem in page_node.iter('img'): + if img_model in img_elem.get('src'): + i_img += 1 + xml_id = "%s_img_%s" % \ + (page_node.attrib['name'], str(i_img).rjust(2, '0')) + img_src = img_elem.get('src') + + new_src, attach_id = substitute_id_by_xml_id() + + if not attach_id: + continue + + image = self.env[img_model].browse(int(attach_id)) + if not image: + continue + + img_elem.attrib['src'] = new_src + img_node = ET.SubElement(data_node, + 'record', + attrib={'id': xml_id, + 'model': img_model}) + field_node = ET.SubElement(img_node, + 'field', + attrib={'name': 'datas'}) + field_node.text = str(image.datas) + field_node = ET.SubElement(img_node, + 'field', + attrib={'name': 'datas_fname'}) + field_node.text = image.datas_fname + field_node = ET.SubElement(img_node, + 'field', + attrib={'name': 'name'}) + field_node.text = image.name + field_node = ET.SubElement(img_node, + 'field', + attrib={'name': 'res_model'}) + field_node.text = image.res_model + field_node = ET.SubElement(img_node, + 'field', + attrib={'name': 'mimetype'}) + field_node.text = image.mimetype + data_node.append(img_node) + + def _clean_href_urls(self, page_node, page_prefix, template_prefix): + ''' + Remove host address for href urls + ''' + for a_elem in page_node.iter('a'): + if not a_elem.get('href'): + continue + href = a_elem.get('href') + if not href.startswith('http:'): + continue + page_url = '/page/%s' % page_prefix + template_url = '/page/%s' % template_prefix + if not page_url in href and not template_url in href: + continue + elif page_url in href and not template_url in href: + pass + elif not page_url in href and template_url in href: + page_url = template_url + else: + if page_prefix in template_prefix: + page_url = template_url + else: + pass + + if page_url: + trail = href.split(page_url, 1)[1] + a_elem.attrib['href'] = page_url + trail + + def _generate_snippet_from_template(self, page_node, + template_id, template_prefix): + ''' + Generate a website snippet from a template + ''' + page = copy.deepcopy(page_node) + snippet = ET.Element('template') + snippet.attrib['id'] = template_id + '_snippet' + snippet.attrib['inherit_id'] = 'website.snippets' + snippet.attrib['name'] = page_node.attrib['name'] + + xpath = ET.SubElement(snippet, + 'xpath', + attrib={'expr': "//div[@id='snippet_structure']", + 'position': 'inside'}) + main_div = ET.SubElement(xpath, + 'div') + thumbnail = ET.SubElement(main_div, + 'div', + attrib={'class': 'oe_snippet_thumbnail'}) + img = ET.SubElement(thumbnail, + 'img', + attrib={'class': 'oe_snippet_thumbnail_img', + 'src': HELP_ONLINE_SNIPPET_IMAGE_PATH}) + span = ET.SubElement(thumbnail, + 'span', + attrib={'class': 'oe_snippet_thumbnail_title'}) + span.text = page_node.attrib['name'].replace(template_prefix, '') + body = ET.SubElement(main_div, + 'section', + attrib={'class': 'oe_snippet_body '\ + 'mt_simple_snippet'}) + + template = page.find(".//div[@id='wrap']") + + for node in template.getchildren(): + body.append(node) + + return snippet + + def _get_qweb_views_data(self): + parameter_model = self.env['ir.config_parameter'] + page_prefix = parameter_model.get_param(PAGE_PREFIX_PARAMETER, + False) + template_prefix = parameter_model.get_param(TEMPLATE_PREFIX_PARAMETER, + False) + + if not page_prefix or not template_prefix: + return False + + domain = [('type', '=', 'qweb'), + ('page', '=', True), + '|', + ('name', 'like', '%s%%' % page_prefix), + ('name', 'like', '%s%%' % template_prefix)] + + view_data_list = self.env['ir.ui.view'].search_read(domain, + ['arch', 'name'], + order='name') + xml_to_export = ET.Element('openerp') + data_node = ET.SubElement(xml_to_export, 'data') + + for view_data in view_data_list: + parser = ET.XMLParser(remove_blank_text=True) + root = ET.XML(view_data['arch'], parser=parser) + + root.tag = 'template' + template_id = root.attrib.pop('t-name') + root.attrib['name'] = view_data['name'].replace('website.', '') + root.attrib['id'] = template_id + root.attrib['page'] = 'True' + + self._manage_images_on_page(root, data_node) + self._clean_href_urls(root, page_prefix, template_prefix) + data_node.append(root) + + if root.attrib['name'].startswith(template_prefix): + snippet = self._generate_snippet_from_template(root, + template_id, + template_prefix) + data_node.append(snippet) + + if len(view_data_list) > 0: + rough_string = ET.tostring(xml_to_export, encoding='utf-8', + xml_declaration=True) + reparsed = minidom.parseString(rough_string) + return reparsed.toprettyxml(indent=" ", encoding='utf-8') + else: + return False + + @api.multi + def export_help(self): + """ + Export all Qweb views related to help online in a Odoo + data XML file + """ + xml_data = self._get_qweb_views_data() + if not xml_data: + raise exceptions.Warning(_('No data to export !')) + out = base64.encodestring(xml_data) + + self.write({'data': out, + 'export_filename': 'help_online_data.xml'}) + + return { + 'name': 'Help Online Export', + 'type': 'ir.actions.act_window', + 'res_model': self._name, + 'view_mode': 'form', + 'view_type': 'form', + 'res_id': self.id, + 'views': [(False, 'form')], + 'target': 'new', + } + + @api.model + def auto_backup(self): + """ + Export data to a file on home directory of user + """ + parameter_model = self.env['ir.config_parameter'] + autobackup_path = parameter_model.get_param(AUTOBACKUP_PARAMETER, + False) + + if autobackup_path: + xml_data = self._get_qweb_views_data() + try: + timestr = time.strftime("%Y%m%d-%H%M%S") + filename = '%s/help_online_backup-%s.xml' % (autobackup_path, + timestr) + backup_file = open(filename, + 'w') + backup_file.write(xml_data) + backup_file.close + except: + _logger.warning(_('Unable to write autobackup file '\ + 'in given directory: %s' + % autobackup_path)) diff --git a/help_online/models/help_online.py b/help_online/models/help_online.py index 15e41a70..5a076cd6 100644 --- a/help_online/models/help_online.py +++ b/help_online/models/help_online.py @@ -3,11 +3,19 @@ # # Authors: Laurent Mignon # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,15 +26,20 @@ # along with this program. If not, see . # ############################################################################## -from openerp.osv import orm +from openerp import models, exceptions from openerp.tools.translate import _ -class HelpOnline(orm.TransientModel): +class HelpOnline(models.TransientModel): _name = 'help.online' def _get_view_name(self, model, view_type, domain=None, context=None): - name = 'help-%s' % model.replace('.', '-') + parameter_model = self.env['ir.config_parameter'] + page_prefix = parameter_model.get_param('help_online_page_prefix', + False) + if not page_prefix: + raise exceptions.Warning(_('No page prefix parameter specified !')) + name = '%s-%s' % (page_prefix, model.replace('.', '-')) return name def page_exists(self, name): @@ -40,7 +53,7 @@ class HelpOnline(orm.TransientModel): ir_model = self.env['ir.model'] description = self.env[model]._description res = ir_model.name_search(model, operator='=') - if res: + if(res): description = res[0][1] name = self._get_view_name(model, view_type, domain, context) if self.page_exists(name): diff --git a/help_online/models/ir_model.py b/help_online/models/ir_model.py new file mode 100644 index 00000000..8cbccf69 --- /dev/null +++ b/help_online/models/ir_model.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Cédric Pigeon +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models, api + +from lxml import etree as ET + + +class ir_model_data(models.Model): + _inherit = 'ir.model.data' + + @api.model + def _update(self, model, module, values, xml_id=False, store=True, + noupdate=False, mode='init', res_id=False): + + if model == 'ir.ui.view': + parameter_model = self.env['ir.config_parameter'] + page_prefix = parameter_model.get_param('help_online_page_prefix', + False) + if page_prefix and xml_id.startswith('website.%s' % page_prefix): + xml_str = self.manageImageReferences(values['arch'], module) + values['arch'] = xml_str + + return super(ir_model_data, self)._update(model, + module, + values, + xml_id=xml_id, + store=store, + noupdate=noupdate, + mode=mode, + res_id=res_id) + + def manageImageReferences(self, xml_str, module): + parser = ET.XMLParser(remove_blank_text=True) + root = ET.XML(xml_str, parser=parser) + img_model = 'ir.attachment' + for img_elem in root.iter('img'): + if img_model in img_elem.get('src'): + img_src = img_elem.get('src') + try: + if '/ir.attachment/' in img_src: + fragments = img_src.split('/ir.attachment/') + xml_id = fragments[1].split('|')[0] + img_src = img_src.replace("|", "_") + else: + id_pos = img_src.index('id=') + 3 + xml_id = img_elem.get('src')[id_pos:] + + img_id = self.get_object_reference(module, + xml_id) + + img_elem.attrib['src'] = img_src.replace(xml_id, + str(img_id[1])) + except: + continue + return ET.tostring(root, encoding='utf-8', xml_declaration=False) diff --git a/help_online/static/description/icon.png b/help_online/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8d478d6a88fbdce713c25f88e2d692105b7d7c GIT binary patch literal 80511 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 jQoLiQd=dOFZovN^4?QL4

The help pages are created and managed via the website Module.


+

If you want to export your work, you simply have to use the export wizard through the settings menu.

diff --git a/help_online/static/src/img/snippet/snippet_thumbs.png b/help_online/static/src/img/snippet/snippet_thumbs.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5c2d8907d20c89b52e798071d00959680b0107 GIT binary patch literal 43363 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

a1Nw`|h+Y1?dOH zZAE+Pu7cHyIeW&Qf>mdf?`ai#g4*%~mHUL9e5Nub>9cQD9<$y4bYH>FR6b9* zVA5WZ=JTcNoA!Z1!T$MCGxnW(wfH-uYHxf{)%GAERmM})p1J9Qednnad!p+2nA1vj zk;*7bZTKGXt*SbF|Jh}`Xh+@`yWc9hkKYy@+DrfCpuK)#(ysm9DLd_+nT_r>bm&OS z9`UXPyYO*)?S1F0AEhIE^9K&w&oztog=fy$cZBmO_X#>d-rTn+W2b2mf#lU%>Hm7- zY0-!7F50Gxrhtzw&^||D*dB-Nz;A|D$hzGW-7ltbg$|g$#2o P00000NkvXXu0mjf)9gcZ literal 0 HcmV?d00001 diff --git a/help_online/tests/__init__.py b/help_online/tests/__init__.py new file mode 100644 index 00000000..6085ce18 --- /dev/null +++ b/help_online/tests/__init__.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import test_export_help_wizard + +fast_suite = [ +] + +checks = [ + test_export_help_wizard, +] diff --git a/help_online/tests/data/help_test_data.xml b/help_online/tests/data/help_test_data.xml new file mode 100644 index 00000000..3d939d21 --- /dev/null +++ b/help_online/tests/data/help_test_data.xml @@ -0,0 +1,78 @@ + + + + + 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 + + image + test.png + test.png + ir.ui.view + image/png + + + \ No newline at end of file diff --git a/help_online/tests/test_export_help_wizard.py b/help_online/tests/test_export_help_wizard.py new file mode 100644 index 00000000..6494f121 --- /dev/null +++ b/help_online/tests/test_export_help_wizard.py @@ -0,0 +1,169 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Authors: Cédric Pigeon +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +import logging +import base64 +from lxml import etree as ET + +from anybox.testing.openerp import SharedSetupTransactionCase + +_logger = logging.getLogger(__name__) + + +class test_export_help_wizard(object): + _data_files = ('data/help_test_data.xml',) + + _module_ns = 'help_online' + + def createPage(self, pageName, imgXmlId=False): + imgId = False + if imgXmlId: + imgId = self.ref('%s.%s' % (self._module_ns, imgXmlId)) + + rootNode = ET.Element('t') + rootNode.attrib['name'] = pageName + rootNode.attrib['t-name'] = "website.%s" % pageName + tNode = ET.SubElement(rootNode, + 't', + attrib={'t-call': 'website.layout'}) + structDivNode = ET.SubElement(tNode, + 'div', + attrib={'class': 'oe_structure oe_empty', + 'id': 'wrap'}) + sectionNode = ET.SubElement(structDivNode, + 'section', + attrib={'class': 'mt16 mb16'}) + containerNode = ET.SubElement(sectionNode, + 'div', + attrib={'class': 'container'}) + rowNode = ET.SubElement(containerNode, + 'div', + attrib={'class': 'row'}) + bodyDivNode = ET.SubElement(rowNode, + 'div', + attrib={'class': 'col-md-12 '\ + 'text-center mt16 mb32'}) + style = "font-family: 'Helvetica Neue', Helvetica,"\ + " Arial, sans-serif; color: rgb(51, 51, 51);"\ + " text-align: left;" + h2Node = ET.SubElement(bodyDivNode, + 'h2', + attrib={'style': style}) + h2Node.text = "Test Sample Title" + if imgId: + imgDivNode = ET.SubElement(bodyDivNode, + 'div', + attrib={'style': 'text-align: left;'}) + src = "/website/image?field=datas&"\ + "model=ir.attachment&id=%s" % str(imgId) + imgNode = ET.SubElement(imgDivNode, + 'img', + attrib={'class': 'img-thumbnail', + 'src': src}) + imgDivNode = ET.SubElement(bodyDivNode, + 'div', + attrib={'style': 'text-align: left;'}) + src = "/website/image/ir.attachment/%s_ccc838d/datas" % str(imgId) + imgNode = ET.SubElement(imgDivNode, + 'img', + attrib={'class': 'img-thumbnail', + 'src': src}) + arch = ET.tostring(rootNode, encoding='utf-8', xml_declaration=False) + vals = { + 'name': pageName, + 'type': 'qweb', + 'arch': arch, + 'page': True, + } + view_id = self.env['ir.ui.view'].create(vals) + return view_id.id + + def setUp(self): + super(test_export_help_wizard, self).setUp() + self.pageName = False + self.imgXmlId = False + self.pageTemplate = False + + def test_export_help(self): + ''' + Export help data + ''' + self.createPage(pageName=self.pageName, imgXmlId=self.imgXmlId) + + wizardPool = self.env['export.help.wizard'] + wizard = wizardPool.create({}) + wizard.export_help() + xmlData = base64.decodestring(wizard.data) + + parser = ET.XMLParser(remove_blank_text=True) + rootXml = ET.XML(xmlData, parser=parser) + + xPath = ".//template[@id='website.%s']" % self.pageName + templateNodeList = rootXml.findall(xPath) + self.assertEqual(len(templateNodeList), 1) + self.assertNotIn("website.", templateNodeList[0].attrib['name']) + + if self.imgXmlId: + xPath = ".//record[@id='%s_img_01']" % self.pageName + imgNodeList = rootXml.findall(xPath) + self.assertEqual(len(imgNodeList), 1) + + for imgElem in templateNodeList[0].iter('img'): + imgSrc = imgElem.get('src') + if '/ir.attachment/' in imgSrc: + self.assertIn("/ir.attachment/%s_img_02|" \ + % self.pageName, imgSrc) + else: + self.assertIn("id=%s_img_01" % self.pageName, imgSrc) + + if self.pageTemplate: + xPath = ".//template[@id='website.%s_snippet']" % self.pageName + templateNodeList = rootXml.findall(xPath) + self.assertEqual(len(templateNodeList), 1) + self.assertNotIn("website.", templateNodeList[0].attrib['name']) + + +class test_export_help_with_image(test_export_help_wizard, + SharedSetupTransactionCase): + def setUp(self): + super(test_export_help_with_image, self).setUp() + parameter_model = self.env['ir.config_parameter'] + page_prefix = parameter_model.get_param('help_online_page_prefix') + self.pageName = '%stest-page' % page_prefix + self.imgXmlId = 'test_img_1' + + +class test_export_help_template(test_export_help_wizard, + SharedSetupTransactionCase): + def setUp(self): + super(test_export_help_template, self).setUp() + parameter_model = self.env['ir.config_parameter'] + template_prefix = parameter_model.get_param( + 'help_online_template_prefix') + self.pageName = '%stest-template' % template_prefix + self.pageTemplate = True diff --git a/help_online/views/export_help_wizard_view.xml b/help_online/views/export_help_wizard_view.xml new file mode 100644 index 00000000..7e5235df --- /dev/null +++ b/help_online/views/export_help_wizard_view.xml @@ -0,0 +1,56 @@ + + + + + export.help.wizard.view + export.help.wizard + form + +

+ + + + +

+ This wizard allow you to export all QWeb views + related to help online. The result will be an Odoo + data xml file. +

+
+ + + +
+ +
+
+ + + + + Export Help + export.help.wizard + + form + form + new + ir.actions.act_window + + + + + + + \ No newline at end of file diff --git a/help_online/views/ir_ui_view_view.xml b/help_online/views/ir_ui_view_view.xml new file mode 100644 index 00000000..85fc7783 --- /dev/null +++ b/help_online/views/ir_ui_view_view.xml @@ -0,0 +1,28 @@ + + + + + + ir.ui.view search (help_online) + + ir.ui.view + + + + + + + + + ir.ui.view form (help_online) + + ir.ui.view + + + + + + + + + From 118dd7d0c13ff5091f309686a125188b57b654bf Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (aka lmi)" Date: Thu, 9 Oct 2014 11:05:44 +0200 Subject: [PATCH 07/45] [PEP8] Fixes licences --- help_online/__openerp__.py | 14 +++----------- help_online/models/__init__.py | 14 +++----------- help_online/models/export_help_wizard.py | 14 +++----------- help_online/models/help_online.py | 16 ++++------------ help_online/models/ir_model.py | 14 +++----------- help_online/tests/__init__.py | 14 +++----------- help_online/tests/test_export_help_wizard.py | 14 +++----------- 7 files changed, 22 insertions(+), 78 deletions(-) diff --git a/help_online/__openerp__.py b/help_online/__openerp__.py index 832d3be1..f09ea63e 100644 --- a/help_online/__openerp__.py +++ b/help_online/__openerp__.py @@ -3,19 +3,11 @@ # # Authors: Nemry Jonathan # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/models/__init__.py b/help_online/models/__init__.py index fd36eaa5..198e5bb3 100644 --- a/help_online/models/__init__.py +++ b/help_online/models/__init__.py @@ -3,19 +3,11 @@ # # Authors: Nemry Jonathan # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/models/export_help_wizard.py b/help_online/models/export_help_wizard.py index c98ed837..c3003b5b 100644 --- a/help_online/models/export_help_wizard.py +++ b/help_online/models/export_help_wizard.py @@ -3,19 +3,11 @@ # # Authors: Cédric Pigeon # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/models/help_online.py b/help_online/models/help_online.py index 5a076cd6..25e34fbb 100644 --- a/help_online/models/help_online.py +++ b/help_online/models/help_online.py @@ -3,19 +3,11 @@ # # Authors: Laurent Mignon # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -53,7 +45,7 @@ class HelpOnline(models.TransientModel): ir_model = self.env['ir.model'] description = self.env[model]._description res = ir_model.name_search(model, operator='=') - if(res): + if res: description = res[0][1] name = self._get_view_name(model, view_type, domain, context) if self.page_exists(name): diff --git a/help_online/models/ir_model.py b/help_online/models/ir_model.py index 8cbccf69..fa9df396 100644 --- a/help_online/models/ir_model.py +++ b/help_online/models/ir_model.py @@ -3,19 +3,11 @@ # # Authors: Cédric Pigeon # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/tests/__init__.py b/help_online/tests/__init__.py index 6085ce18..cc5a18f0 100644 --- a/help_online/tests/__init__.py +++ b/help_online/tests/__init__.py @@ -2,19 +2,11 @@ ############################################################################## # # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/help_online/tests/test_export_help_wizard.py b/help_online/tests/test_export_help_wizard.py index 6494f121..48c3297d 100644 --- a/help_online/tests/test_export_help_wizard.py +++ b/help_online/tests/test_export_help_wizard.py @@ -3,19 +3,11 @@ # # Authors: Cédric Pigeon # Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# All Rights Reserved -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs. -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly advised to contact a Free Software -# Service Company. # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of From 22b3ac2306a42c151254320a1826cddfb1c0a298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Tue, 14 Oct 2014 11:29:59 +0200 Subject: [PATCH 08/45] [ADD] import help feature + security + menu + french translation --- help_online/__openerp__.py | 6 +- help_online/i18n/fr_BE.po | 222 ++++++++++++++++++ help_online/models/__init__.py | 1 + help_online/models/export_help_wizard.py | 6 +- help_online/models/import_help_wizard.py | 49 ++++ help_online/security/help_online_rules.xml | 32 +++ help_online/views/help_online_view.xml | 15 ++ help_online/views/import_help_wizard_view.xml | 46 ++++ help_online/views/ir_ui_view_view.xml | 2 +- 9 files changed, 373 insertions(+), 6 deletions(-) create mode 100644 help_online/i18n/fr_BE.po create mode 100644 help_online/models/import_help_wizard.py create mode 100644 help_online/security/help_online_rules.xml create mode 100644 help_online/views/import_help_wizard_view.xml diff --git a/help_online/__openerp__.py b/help_online/__openerp__.py index f09ea63e..b0d02833 100644 --- a/help_online/__openerp__.py +++ b/help_online/__openerp__.py @@ -47,10 +47,12 @@ The help pages are created and managed via the website Module. 'data': [ 'data/help_auto_backup.xml', # must always be the first 'security/help_online_groups.xml', + 'security/help_online_rules.xml', + 'views/export_help_wizard_view.xml', + 'views/import_help_wizard_view.xml', + 'views/ir_ui_view_view.xml', 'views/help_online_view.xml', 'views/website_help_online.xml', - 'views/ir_ui_view_view.xml', - 'views/export_help_wizard_view.xml', 'data/ir_config_parameter_data.xml', ], 'qweb': [ diff --git a/help_online/i18n/fr_BE.po b/help_online/i18n/fr_BE.po new file mode 100644 index 00000000..d35153b5 --- /dev/null +++ b/help_online/i18n/fr_BE.po @@ -0,0 +1,222 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * help_online +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-10-14 09:06+0000\n" +"PO-Revision-Date: 2014-10-14 09:06+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: help_online +#. openerp-web +#: code:addons/help_online/static/src/js/help_online.js:83 +#, python-format +msgid "Cancel" +msgstr "Annuler" + +#. module: help_online +#: view:export.help.wizard:help_online.export_help_wizard_view +#: view:import.help.wizard:help_online.import_help_wizard_view +msgid "Close" +msgstr "Fermer" + +#. module: help_online +#. openerp-web +#: code:addons/help_online/static/src/js/help_online.js:81 +#, python-format +msgid "Confirm" +msgstr "Confirmer" + +#. module: help_online +#: code:addons/help_online/models/help_online.py:60 +#, python-format +msgid "Create Help page for %s" +msgstr "Créer lapage d'aide pour %s" + +#. module: help_online +#: field:export.help.wizard,create_uid:0 +#: field:help.online,create_uid:0 +#: field:import.help.wizard,create_uid:0 +msgid "Created by" +msgstr "Créé par" + +#. module: help_online +#: field:export.help.wizard,create_date:0 +#: field:help.online,create_date:0 +#: field:import.help.wizard,create_date:0 +msgid "Created on" +msgstr "Créé le" + +#. module: help_online +#: view:export.help.wizard:help_online.export_help_wizard_view +msgid "Export" +msgstr "Export" + +#. module: help_online +#: model:ir.actions.act_window,name:help_online.action_export_help_wizard +msgid "Export Help" +msgstr "Export Help" + +#. module: help_online +#: view:export.help.wizard:help_online.export_help_wizard_view +msgid "Export Help Data" +msgstr "Export des pages d'aide" + +#. module: help_online +#: model:ir.model,name:help_online.model_export_help_wizard +#: model:ir.ui.menu,name:help_online.menu_help_export +msgid "Export Help Online" +msgstr "Export des pages d'aide" + +#. module: help_online +#: field:export.help.wizard,export_filename:0 +msgid "Export XML Filename" +msgstr "Fichier XML" + +#. module: help_online +#: model:ir.ui.menu,name:help_online.menu_help +#: model:ir.ui.menu,name:help_online.menu_help_main +msgid "Help Online" +msgstr "Aide en ligne" + +#. module: help_online +#: code:addons/help_online/models/help_online.py:55 +#, python-format +msgid "Help on %s" +msgstr "Aide sur %s" + +#. module: help_online +#: model:res.groups,name:help_online.help_online_group_reader +msgid "Help reader" +msgstr "Aide: lecteur" + +#. module: help_online +#: model:res.groups,name:help_online.help_online_group_writer +msgid "Help writer" +msgstr "Aide: rédacteur" + +#. module: help_online +#: field:export.help.wizard,id:0 +#: field:help.online,id:0 +#: field:import.help.wizard,id:0 +msgid "ID" +msgstr "ID" + +#. module: help_online +#: view:import.help.wizard:help_online.import_help_wizard_view +msgid "Import" +msgstr "Import" + +#. module: help_online +#: model:ir.actions.act_window,name:help_online.action_import_help_wizard +msgid "Import Help" +msgstr "Import des pages d'aide" + +#. module: help_online +#: view:import.help.wizard:help_online.import_help_wizard_view +msgid "Import Help Data" +msgstr "Import des pages d'aide" + +#. module: help_online +#: model:ir.ui.menu,name:help_online.menu_help_import +msgid "Import Help Online" +msgstr "Import des pages d'aide" + +#. module: help_online +#: field:export.help.wizard,write_uid:0 +#: field:help.online,write_uid:0 +#: field:import.help.wizard,write_uid:0 +msgid "Last Updated by" +msgstr "Mis à jour par" + +#. module: help_online +#: field:export.help.wizard,write_date:0 +#: field:help.online,write_date:0 +#: field:import.help.wizard,write_date:0 +msgid "Last Updated on" +msgstr "Mis à jour le" + +#. module: help_online +#: code:addons/help_online/models/export_help_wizard.py:238 +#, python-format +msgid "No data to export !" +msgstr "Aucune page à exporter !" + +#. module: help_online +#: code:addons/help_online/models/help_online.py:33 +#, python-format +msgid "No page prefix parameter specified !" +msgstr "Le paramètre spécifiant le préfixe des page n'est pas configuré !" + +#. module: help_online +#. openerp-web +#: code:addons/help_online/static/src/js/help_online.js:88 +#, python-format +msgid "Ok" +msgstr "Ok" + +#. module: help_online +#. openerp-web +#: code:addons/help_online/static/src/js/help_online.js:107 +#, python-format +msgid "Page does not exist. Do you want to create?" +msgstr "La page n'existe pas. Voulez-vous la créer?" + +#. module: help_online +#: field:import.help.wizard,source_file:0 +msgid "Source File" +msgstr "Fichier de données" + +#. module: help_online +#: view:export.help.wizard:help_online.export_help_wizard_view +msgid "This wizard allow you to export all QWeb views\n" +" related to help online. The result will be an Odoo\n" +" data xml file." +msgstr "Cet assistant vous permet d'exporter toutes les vues QWeb \n" +" concernant l'aide. Le résultat sera un\n" +" fichier de données Odoo." + +#. module: help_online +#: view:import.help.wizard:help_online.import_help_wizard_view +msgid "This wizard allow you to import QWeb views\n" +" related to help online. The required file format is an Odoo\n" +" data xml file." +msgstr "Cet assistant vous permet d'importer toutes les vues QWeb\n" +" concernant l'aide. Le format de fichier requis est un\n" +" fichier de données Odoo." + +#. module: help_online +#: code:addons/help_online/models/export_help_wizard.py:275 +#, python-format +msgid "Unable to write autobackup file in given directory: %s" +msgstr "Impossible d'écrire le fichier de sauvegarde dans le répertoire spécifié: %s" + +#. module: help_online +#: view:ir.ui.view:help_online.view_view_search +msgid "Website Page" +msgstr "Page du site" + +#. module: help_online +#: view:ir.ui.view:help_online.view_view_form +msgid "Website Page?" +msgstr "Page du site?" + +#. module: help_online +#: model:ir.actions.act_window,name:help_online.action_website_pages +#: model:ir.ui.menu,name:help_online.menu_help_pages +msgid "Website Pages" +msgstr "Pages du site" + +#. module: help_online +#: field:export.help.wizard,data:0 +msgid "XML" +msgstr "XML" + diff --git a/help_online/models/__init__.py b/help_online/models/__init__.py index 198e5bb3..615fa9cc 100644 --- a/help_online/models/__init__.py +++ b/help_online/models/__init__.py @@ -20,4 +20,5 @@ ############################################################################## from . import help_online from . import export_help_wizard +from . import import_help_wizard from . import ir_model diff --git a/help_online/models/export_help_wizard.py b/help_online/models/export_help_wizard.py index c3003b5b..e504a7b4 100644 --- a/help_online/models/export_help_wizard.py +++ b/help_online/models/export_help_wizard.py @@ -50,9 +50,10 @@ class ExportHelpWizard(models.TransientModel): - Replace db id in url with xml id ''' - def substitute_id_by_xml_id(): + def substitute_id_by_xml_id(img_elem): new_src = False attach_id = False + img_src = img_elem.get('src') if 'id=' in img_src: id_pos = img_src.index('id=') + 3 attach_id = img_elem.get('src')[id_pos:] @@ -71,9 +72,8 @@ class ExportHelpWizard(models.TransientModel): i_img += 1 xml_id = "%s_img_%s" % \ (page_node.attrib['name'], str(i_img).rjust(2, '0')) - img_src = img_elem.get('src') - new_src, attach_id = substitute_id_by_xml_id() + new_src, attach_id = substitute_id_by_xml_id(img_elem) if not attach_id: continue diff --git a/help_online/models/import_help_wizard.py b/help_online/models/import_help_wizard.py new file mode 100644 index 00000000..bb071784 --- /dev/null +++ b/help_online/models/import_help_wizard.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) +# All Rights Reserved +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs. +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contact a Free Software +# Service Company. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models, fields, api +from openerp.tools import convert + +import base64 +from cStringIO import StringIO + + +class ImportHelpWizard(models.TransientModel): + _name = "import.help.wizard" + + source_file = fields.Binary('Source File') + + @api.one + def import_help(self): + source_file = base64.decodestring(self.source_file) + convert.convert_xml_import(self.env.cr, + self._module, + StringIO(source_file), + idref=None, + mode='init', + noupdate=False, + report=None) diff --git a/help_online/security/help_online_rules.xml b/help_online/security/help_online_rules.xml new file mode 100644 index 00000000..92a70a7a --- /dev/null +++ b/help_online/security/help_online_rules.xml @@ -0,0 +1,32 @@ + + + + + Online Help Hidden by Default + + [ + '|', + ('type', '!=', 'qweb'), + ('name','not like','help-%'), + ] + + + + + + + Online Help for Help Reader + + [(1, '=', 1)] + + + + + + \ No newline at end of file diff --git a/help_online/views/help_online_view.xml b/help_online/views/help_online_view.xml index c53cbce3..6ee45346 100644 --- a/help_online/views/help_online_view.xml +++ b/help_online/views/help_online_view.xml @@ -9,5 +9,20 @@ + + + Website Pages + ir.ui.view + + form + tree, form + {"search_default_website":1} + + + + + + + diff --git a/help_online/views/import_help_wizard_view.xml b/help_online/views/import_help_wizard_view.xml new file mode 100644 index 00000000..15aa93c3 --- /dev/null +++ b/help_online/views/import_help_wizard_view.xml @@ -0,0 +1,46 @@ + + + + + import.help.wizard.view + import.help.wizard + form + +
+ +

+ This wizard allow you to import QWeb views + related to help online. The required file format is an Odoo + data xml file. +

+
+ + + +
+ +
+
+
+
+ + + Import Help + import.help.wizard + + form + form + new + ir.actions.act_window + + +
+
\ No newline at end of file diff --git a/help_online/views/ir_ui_view_view.xml b/help_online/views/ir_ui_view_view.xml index 85fc7783..de42f9ca 100644 --- a/help_online/views/ir_ui_view_view.xml +++ b/help_online/views/ir_ui_view_view.xml @@ -8,7 +8,7 @@ ir.ui.view - + From 8683fc749f07618c71f9442aadbfba14b0ed412b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Tue, 14 Oct 2014 12:35:02 +0200 Subject: [PATCH 09/45] [FLAKE8] fix falke 8 issues --- help_online/models/export_help_wizard.py | 22 ++++++++--------- help_online/tests/test_export_help_wizard.py | 26 ++++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/help_online/models/export_help_wizard.py b/help_online/models/export_help_wizard.py index e504a7b4..afab8efc 100644 --- a/help_online/models/export_help_wizard.py +++ b/help_online/models/export_help_wizard.py @@ -121,11 +121,11 @@ class ExportHelpWizard(models.TransientModel): continue page_url = '/page/%s' % page_prefix template_url = '/page/%s' % template_prefix - if not page_url in href and not template_url in href: + if page_url not in href and template_url not in href: continue - elif page_url in href and not template_url in href: + elif page_url in href and template_url not in href: pass - elif not page_url in href and template_url in href: + elif page_url not in href and template_url in href: page_url = template_url else: if page_prefix in template_prefix: @@ -157,17 +157,17 @@ class ExportHelpWizard(models.TransientModel): thumbnail = ET.SubElement(main_div, 'div', attrib={'class': 'oe_snippet_thumbnail'}) - img = ET.SubElement(thumbnail, - 'img', - attrib={'class': 'oe_snippet_thumbnail_img', - 'src': HELP_ONLINE_SNIPPET_IMAGE_PATH}) + ET.SubElement(thumbnail, + 'img', + attrib={'class': 'oe_snippet_thumbnail_img', + 'src': HELP_ONLINE_SNIPPET_IMAGE_PATH}) span = ET.SubElement(thumbnail, 'span', attrib={'class': 'oe_snippet_thumbnail_title'}) span.text = page_node.attrib['name'].replace(template_prefix, '') body = ET.SubElement(main_div, 'section', - attrib={'class': 'oe_snippet_body '\ + attrib={'class': 'oe_snippet_body ' 'mt_simple_snippet'}) template = page.find(".//div[@id='wrap']") @@ -272,6 +272,6 @@ class ExportHelpWizard(models.TransientModel): backup_file.write(xml_data) backup_file.close except: - _logger.warning(_('Unable to write autobackup file '\ - 'in given directory: %s' - % autobackup_path)) + _logger.warning(_('Unable to write autobackup file ' + 'in given directory: %s' + % autobackup_path)) diff --git a/help_online/tests/test_export_help_wizard.py b/help_online/tests/test_export_help_wizard.py index 48c3297d..c608af5a 100644 --- a/help_online/tests/test_export_help_wizard.py +++ b/help_online/tests/test_export_help_wizard.py @@ -58,7 +58,7 @@ class test_export_help_wizard(object): attrib={'class': 'row'}) bodyDivNode = ET.SubElement(rowNode, 'div', - attrib={'class': 'col-md-12 '\ + attrib={'class': 'col-md-12 ' 'text-center mt16 mb32'}) style = "font-family: 'Helvetica Neue', Helvetica,"\ " Arial, sans-serif; color: rgb(51, 51, 51);"\ @@ -73,18 +73,18 @@ class test_export_help_wizard(object): attrib={'style': 'text-align: left;'}) src = "/website/image?field=datas&"\ "model=ir.attachment&id=%s" % str(imgId) - imgNode = ET.SubElement(imgDivNode, - 'img', - attrib={'class': 'img-thumbnail', - 'src': src}) + ET.SubElement(imgDivNode, + 'img', + attrib={'class': 'img-thumbnail', + 'src': src}) imgDivNode = ET.SubElement(bodyDivNode, 'div', attrib={'style': 'text-align: left;'}) src = "/website/image/ir.attachment/%s_ccc838d/datas" % str(imgId) - imgNode = ET.SubElement(imgDivNode, - 'img', - attrib={'class': 'img-thumbnail', - 'src': src}) + ET.SubElement(imgDivNode, + 'img', + attrib={'class': 'img-thumbnail', + 'src': src}) arch = ET.tostring(rootNode, encoding='utf-8', xml_declaration=False) vals = { 'name': pageName, @@ -128,7 +128,7 @@ class test_export_help_wizard(object): for imgElem in templateNodeList[0].iter('img'): imgSrc = imgElem.get('src') if '/ir.attachment/' in imgSrc: - self.assertIn("/ir.attachment/%s_img_02|" \ + self.assertIn("/ir.attachment/%s_img_02|" % self.pageName, imgSrc) else: self.assertIn("id=%s_img_01" % self.pageName, imgSrc) @@ -151,11 +151,11 @@ class test_export_help_with_image(test_export_help_wizard, class test_export_help_template(test_export_help_wizard, - SharedSetupTransactionCase): + SharedSetupTransactionCase): def setUp(self): super(test_export_help_template, self).setUp() parameter_model = self.env['ir.config_parameter'] - template_prefix = parameter_model.get_param( - 'help_online_template_prefix') + param = 'help_online_template_prefix' + template_prefix = parameter_model.get_param(param) self.pageName = '%stest-template' % template_prefix self.pageTemplate = True From fee3d863b2cdbc076d06daefb4e1f4d289f61891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Wed, 15 Oct 2014 09:53:55 +0200 Subject: [PATCH 10/45] [PEP8] docstrings with double quotes --- help_online/models/export_help_wizard.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/help_online/models/export_help_wizard.py b/help_online/models/export_help_wizard.py index afab8efc..760c8d7b 100644 --- a/help_online/models/export_help_wizard.py +++ b/help_online/models/export_help_wizard.py @@ -45,10 +45,10 @@ class ExportHelpWizard(models.TransientModel): export_filename = fields.Char('Export XML Filename', size=128) def _manage_images_on_page(self, page_node, data_node): - ''' + """ - Extract images from page and generate a xml node - Replace db id in url with xml id - ''' + """ def substitute_id_by_xml_id(img_elem): new_src = False @@ -110,9 +110,9 @@ class ExportHelpWizard(models.TransientModel): data_node.append(img_node) def _clean_href_urls(self, page_node, page_prefix, template_prefix): - ''' + """ Remove host address for href urls - ''' + """ for a_elem in page_node.iter('a'): if not a_elem.get('href'): continue @@ -139,9 +139,9 @@ class ExportHelpWizard(models.TransientModel): def _generate_snippet_from_template(self, page_node, template_id, template_prefix): - ''' + """ Generate a website snippet from a template - ''' + """ page = copy.deepcopy(page_node) snippet = ET.Element('template') snippet.attrib['id'] = template_id + '_snippet' From 33636d957d0b8341f9677fb66ac8eb6d18c0c6fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Wed, 15 Oct 2014 10:02:59 +0200 Subject: [PATCH 11/45] [PEP8] docstrings with double quotes --- help_online/tests/test_export_help_wizard.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/help_online/tests/test_export_help_wizard.py b/help_online/tests/test_export_help_wizard.py index c608af5a..2ce0015e 100644 --- a/help_online/tests/test_export_help_wizard.py +++ b/help_online/tests/test_export_help_wizard.py @@ -102,9 +102,9 @@ class test_export_help_wizard(object): self.pageTemplate = False def test_export_help(self): - ''' + """ Export help data - ''' + """ self.createPage(pageName=self.pageName, imgXmlId=self.imgXmlId) wizardPool = self.env['export.help.wizard'] From b418609295adf50990db52a2f0ff67807a9edcf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Wed, 15 Oct 2014 15:12:54 +0200 Subject: [PATCH 12/45] [FIX] take https website in account --- help_online/models/export_help_wizard.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/help_online/models/export_help_wizard.py b/help_online/models/export_help_wizard.py index 760c8d7b..61530278 100644 --- a/help_online/models/export_help_wizard.py +++ b/help_online/models/export_help_wizard.py @@ -117,7 +117,7 @@ class ExportHelpWizard(models.TransientModel): if not a_elem.get('href'): continue href = a_elem.get('href') - if not href.startswith('http:'): + if not href.startswith('http'): continue page_url = '/page/%s' % page_prefix template_url = '/page/%s' % template_prefix From 1978dee9220c4ec861839ffa3ca0ae986f347ce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Wed, 15 Oct 2014 15:24:50 +0200 Subject: [PATCH 13/45] [FIX] remove usage of minidom, use pretty print feature from lxml --- help_online/models/export_help_wizard.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/help_online/models/export_help_wizard.py b/help_online/models/export_help_wizard.py index 61530278..ea0d65cd 100644 --- a/help_online/models/export_help_wizard.py +++ b/help_online/models/export_help_wizard.py @@ -24,7 +24,6 @@ import time import copy from lxml import etree as ET -from xml.dom import minidom as minidom from openerp import models, fields, api, exceptions from openerp.tools.translate import _ @@ -220,10 +219,9 @@ class ExportHelpWizard(models.TransientModel): data_node.append(snippet) if len(view_data_list) > 0: - rough_string = ET.tostring(xml_to_export, encoding='utf-8', - xml_declaration=True) - reparsed = minidom.parseString(rough_string) - return reparsed.toprettyxml(indent=" ", encoding='utf-8') + return ET.tostring(xml_to_export, encoding='utf-8', + xml_declaration=True, + pretty_print=True) else: return False @@ -275,3 +273,4 @@ class ExportHelpWizard(models.TransientModel): _logger.warning(_('Unable to write autobackup file ' 'in given directory: %s' % autobackup_path)) + From f2c62db80f5d7dbaaf8b1db1cd5e4d11387583d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Wed, 15 Oct 2014 15:51:34 +0200 Subject: [PATCH 14/45] [FLAKE8] fix flake 8 issue --- help_online/models/export_help_wizard.py | 1 - 1 file changed, 1 deletion(-) diff --git a/help_online/models/export_help_wizard.py b/help_online/models/export_help_wizard.py index ea0d65cd..53883aee 100644 --- a/help_online/models/export_help_wizard.py +++ b/help_online/models/export_help_wizard.py @@ -273,4 +273,3 @@ class ExportHelpWizard(models.TransientModel): _logger.warning(_('Unable to write autobackup file ' 'in given directory: %s' % autobackup_path)) - From af2063a031951d925d49575455e00807313e0265 Mon Sep 17 00:00:00 2001 From: Jonathan Nemry Date: Fri, 17 Oct 2014 11:40:18 +0200 Subject: [PATCH 15/45] [FIX] inherit from "assets_editor" instead of "layout" to avoid "uncaught ReferenceError" --- help_online/views/website_help_online.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/help_online/views/website_help_online.xml b/help_online/views/website_help_online.xml index 353d82e6..ae504364 100644 --- a/help_online/views/website_help_online.xml +++ b/help_online/views/website_help_online.xml @@ -2,8 +2,8 @@ -