[Kimchi-devel] [PATCH v2][Wok 6/8] Fix Sample plugin

Aline Manera alinefm at linux.vnet.ibm.com
Wed Jun 8 19:09:51 UTC 2016



On 06/06/2016 04:13 PM, Rodrigo Trujillo wrote:
> This patch adapts Sample plugin to work with new latest Wok plugin
> changes and to work with Plugins Manager.
> ---
>   src/wok/plugins/sample/__init__.py                 | 54 ++++++++++++++++++++--
>   src/wok/plugins/sample/control/__init__.py         | 26 +++++++++++
>   src/wok/plugins/sample/sample.conf.in              | 22 ---------
>   src/wok/plugins/sample/ui/config/tab-ext.xml       |  9 ++--
>   .../plugins/sample/ui/pages/sample-tab1.html.tmpl  |  3 ++
>   .../plugins/sample/ui/pages/sample-tab2.html.tmpl  |  3 ++
>   6 files changed, 86 insertions(+), 31 deletions(-)
>   create mode 100644 src/wok/plugins/sample/control/__init__.py
>
> diff --git a/src/wok/plugins/sample/__init__.py b/src/wok/plugins/sample/__init__.py
> index ff96b15..c65dd0d 100644
> --- a/src/wok/plugins/sample/__init__.py
> +++ b/src/wok/plugins/sample/__init__.py
> @@ -23,21 +23,22 @@ import json
>   import os
>   from cherrypy import expose
>
> -
> -from wok.config import PluginPaths
> +from wok.config import CACHEEXPIRES, PluginConfig, PluginPaths
>   from wok.control.base import Collection, Resource
>   from wok.root import WokRoot
>
>
> -from plugins.sample.i18n import messages
> -from plugins.sample.model import Model
> +from wok.plugins.sample.i18n import messages
> +from wok.plugins.sample.model import Model
>
>
>   model = Model()
>
>
> -class Drawings(WokRoot):
> +class Sample(WokRoot):
>       def __init__(self, wok_options):
> +        dev_env = wok_options.environment != 'production'
> +        super(Sample, self).__init__(model, dev_env)

>           Resource.__init__(self, model)

As you are calling WokRoot.__init__, I don't think this 
Resource.__init__ is necessary anymore.

>           self.description = Description(model)
>           self.rectangles = Rectangles(model)
> @@ -52,6 +53,49 @@ class Drawings(WokRoot):
>       def index(self):
>           return 'This is a sample plugin for Wok'
>
> +    def get_custom_conf(self):
> +        return SampleConfig()
> +
> +
> +class SampleConfig(PluginConfig):
> +    def __init__(self):
> +        super(SampleConfig, self).__init__('sample')
> +
> +        sample_path = PluginPaths('sample')
> +
> +        custom_config = {
> +            '/help': {
> +                'tools.staticdir.on': True,
> +                'tools.staticdir.dir': os.path.join(sample_path.ui_dir,
> +                                                    'pages/help'),
> +                'tools.nocache.on': True
> +            },

> +            '/images': {
> +                'tools.staticdir.on': True,
> +                'tools.staticdir.dir': os.path.join(sample_path.ui_dir,
> +                                                    'images'),
> +                'tools.wokauth.on': False,
> +                'tools.nocache.on': False
> +            },

I don't think sample plugin has any image to expose on server.
So we don't need this there.

> +            '/description': {'tools.wokauth.on': True},
> +            '/rectangles': {'tools.wokauth.on':  True},
> +            '/circles': {'tools.wokauth.on':  True}
> +        }
> +
> +        for dirname in ('css', 'js', 'images'):

Same for js and css config.
> +            custom_config['/' + dirname] = {
> +                'tools.staticdir.on': True,
> +                'tools.staticdir.dir': os.path.join(sample_path.ui_dir,
> +                                                    dirname),
> +                'tools.wokauth.on': False,
> +                'tools.nocache.on': False}
> +            if dirname != 'images':
> +                custom_config['/' + dirname].update({
> +                    'tools.expires.on': True,
> +                    'tools.expires.secs': CACHEEXPIRES})
> +
> +        self.update(custom_config)
> +
>
>   class Description(Resource):
>       def __init__(self, model):
> diff --git a/src/wok/plugins/sample/control/__init__.py b/src/wok/plugins/sample/control/__init__.py
> new file mode 100644
> index 0000000..c87776e
> --- /dev/null
> +++ b/src/wok/plugins/sample/control/__init__.py
> @@ -0,0 +1,26 @@
> +#
> +# Project Wok
> +#
> +# Copyright IBM Corp, 2016
> +#
> +# This library is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU Lesser General Public
> +# License as published by the Free Software Foundation; either
> +# version 2.1 of the License, or (at your option) any later version.
> +#
> +# This library 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
> +# Lesser General Public License for more details.
> +#
> +# You should have received a copy of the GNU Lesser General Public
> +# License along with this library; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
> +
> +import os
> +
> +
> +from wok.control.utils import load_url_sub_node
> +
> +
> +sub_nodes = load_url_sub_node(os.path.dirname(__file__), __name__)
> diff --git a/src/wok/plugins/sample/sample.conf.in b/src/wok/plugins/sample/sample.conf.in
> index 9da33e1..1e1b8a4 100644
> --- a/src/wok/plugins/sample/sample.conf.in
> +++ b/src/wok/plugins/sample/sample.conf.in
> @@ -1,27 +1,5 @@
>   [wok]
>   enable = @ENABLE_SAMPLE@
> -plugin_class = "Drawings"
>   uri = "/plugins/sample"
>
> -[/]
> -tools.nocache.on = True
> -tools.trailing_slash.on = False
> -tools.sessions.on = True
> -tools.sessions.name = 'wok'
> -tools.sessions.httponly = True
> -tools.sessions.locking = 'explicit'
> -tools.sessions.storage_type = 'ram'
>
> -[/description]
> -tools.wokauth.on = True
> -
> -[/rectangles]
> -tools.wokauth.on = True
> -
> -[/circles]
> -tools.wokauth.on = True
> -
> -[/help]
> -tools.staticdir.on = True
> -tools.nocache.on = True
> -tools.staticdir.dir = wok.config.PluginPaths('sample').ui_dir + '/pages/help'
> diff --git a/src/wok/plugins/sample/ui/config/tab-ext.xml b/src/wok/plugins/sample/ui/config/tab-ext.xml
> index aff0d14..bcd20fe 100644
> --- a/src/wok/plugins/sample/ui/config/tab-ext.xml
> +++ b/src/wok/plugins/sample/ui/config/tab-ext.xml
> @@ -1,17 +1,18 @@
>   <?xml version="1.0" encoding="utf-8"?>
>   <tabs-ext>
> +    <functionality>Sample</functionality>
>       <tab>
>           <access role="admin" mode="admin"/>
>           <access role="user" mode="none"/>
> -
> -        <title>SampleTab 1</title>
> +        <title>SampleTab1</title>
>           <path>plugins/sample/sample-tab1.html</path>
> +        <order>10</order>
>       </tab>
>       <tab>
>           <access role="admin" mode="admin"/>
>           <access role="user" mode="none"/>
> -
> -        <title>SampleTab 2</title>
> +        <title>SampleTab2</title>
>           <path>plugins/sample/sample-tab2.html</path>
> +        <order>20</order>
>       </tab>
>   </tabs-ext>
> diff --git a/src/wok/plugins/sample/ui/pages/sample-tab1.html.tmpl b/src/wok/plugins/sample/ui/pages/sample-tab1.html.tmpl
> index 2777848..8e4b52b 100644
> --- a/src/wok/plugins/sample/ui/pages/sample-tab1.html.tmpl
> +++ b/src/wok/plugins/sample/ui/pages/sample-tab1.html.tmpl
> @@ -22,6 +22,9 @@
>   <html>
>   <script type="text/javascript" src="plugins/sample/js/util.js"></script>
>   <body>
> +    <div>
> +    Sample PAGE 1
> +    </div>
>       <div id="samplebody"/>
>   </body>
>   <script>
> diff --git a/src/wok/plugins/sample/ui/pages/sample-tab2.html.tmpl b/src/wok/plugins/sample/ui/pages/sample-tab2.html.tmpl
> index 2777848..8f92b80 100644
> --- a/src/wok/plugins/sample/ui/pages/sample-tab2.html.tmpl
> +++ b/src/wok/plugins/sample/ui/pages/sample-tab2.html.tmpl
> @@ -22,6 +22,9 @@
>   <html>
>   <script type="text/javascript" src="plugins/sample/js/util.js"></script>
>   <body>
> +    <div>
> +    Sample PAGE 2
> +    </div>
>       <div id="samplebody"/>
>   </body>
>   <script>




More information about the Kimchi-devel mailing list