[PATCH] [Wok] Allow a plugin extends any HTML page from another one instead of only tabs content

Before this patch, a plugin could only extend anothers tab content. With this patch, a plugin can extend any HTML page from others. This is needed due the Ginger sidebar and Ginger s390x dependency. Signed-off-by: Aline Manera <alinefm@linux.vnet.ibm.com> --- src/wok/root.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/wok/root.py b/src/wok/root.py index c01c7d1..ea88c8c 100644 --- a/src/wok/root.py +++ b/src/wok/root.py @@ -101,6 +101,7 @@ class Root(Resource): @cherrypy.expose def default(self, page, **kwargs): + kwargs['scripts'] = self._get_scripts(page) if page.endswith('.html'): return template.render(page, kwargs) if page.endswith('.json'): @@ -121,13 +122,7 @@ class Root(Resource): data = {} data['ui_dir'] = paths.ui_dir - - data['scripts'] = [] - for plugin, app in cherrypy.tree.apps.iteritems(): - if app.root.extends is not None: - scripts = app.root.extends.get(script_name, {}) - if page in scripts.keys(): - data['scripts'].append(scripts[page]) + data['scripts'] = self._get_scripts(page) if page.endswith('.html'): context = template.render('/tabs/' + page, data) @@ -136,6 +131,16 @@ class Root(Resource): return context raise cherrypy.HTTPError(404) + def _get_scripts(self, page): + result = [] + script_name = cherrypy.request.app.script_name or "/" + for plugin, app in cherrypy.tree.apps.iteritems(): + if app.root.extends is not None: + scripts = app.root.extends.get(script_name, {}) + if page in scripts.keys(): + result.append(scripts[page]) + return result + class WokRoot(Root): def __init__(self, model, dev_env=False): -- 2.9.3

Reviewed-by: Daniel Barboza <danielhb@linux.vnet.ibm.com> Tested-by: Daniel Barboza <danielhb@linux.vnet.ibm.com> On 03/02/2017 10:12 PM, Aline Manera wrote:
Before this patch, a plugin could only extend anothers tab content. With this patch, a plugin can extend any HTML page from others.
This is needed due the Ginger sidebar and Ginger s390x dependency.
Signed-off-by: Aline Manera <alinefm@linux.vnet.ibm.com> --- src/wok/root.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/wok/root.py b/src/wok/root.py index c01c7d1..ea88c8c 100644 --- a/src/wok/root.py +++ b/src/wok/root.py @@ -101,6 +101,7 @@ class Root(Resource):
@cherrypy.expose def default(self, page, **kwargs): + kwargs['scripts'] = self._get_scripts(page) if page.endswith('.html'): return template.render(page, kwargs) if page.endswith('.json'): @@ -121,13 +122,7 @@ class Root(Resource):
data = {} data['ui_dir'] = paths.ui_dir - - data['scripts'] = [] - for plugin, app in cherrypy.tree.apps.iteritems(): - if app.root.extends is not None: - scripts = app.root.extends.get(script_name, {}) - if page in scripts.keys(): - data['scripts'].append(scripts[page]) + data['scripts'] = self._get_scripts(page)
if page.endswith('.html'): context = template.render('/tabs/' + page, data) @@ -136,6 +131,16 @@ class Root(Resource): return context raise cherrypy.HTTPError(404)
+ def _get_scripts(self, page): + result = [] + script_name = cherrypy.request.app.script_name or "/" + for plugin, app in cherrypy.tree.apps.iteritems(): + if app.root.extends is not None: + scripts = app.root.extends.get(script_name, {}) + if page in scripts.keys(): + result.append(scripts[page]) + return result +
class WokRoot(Root): def __init__(self, model, dev_env=False):
participants (2)
-
Aline Manera
-
Daniel Henrique Barboza