[Kimchi-devel] [PATCH][Wok 1/2] Use javascript libraries from rpms
Ramon Medeiros
ramonn at linux.vnet.ibm.com
Mon Aug 22 21:16:17 UTC 2016
On 08/22/2016 01:35 PM, Aline Manera wrote:
>
>
> On 08/12/2016 01:55 PM, Ramon Medeiros wrote:
>> Some javascript libraries didn't need to be hardcoded. So, add them to
>> packages dependency and import them at frontend files
>>
>> Signed-off-by: Ramon Medeiros <ramonn at linux.vnet.ibm.com>
>> ---
>> docs/fedora-deps.md | 4 +-
>> docs/ubuntu-deps.md | 3 +-
>> src/wok/config.py.in | 22 +++
>
>> ui/pages/login.html.tmpl.fedora | 332
>> +++++++++++++++++++++++++++++++++++++++
>> ui/pages/login.html.tmpl.ubuntu | 332
>> +++++++++++++++++++++++++++++++++++++++
>> ui/pages/wok-ui.html.tmpl.fedora | 231 +++++++++++++++++++++++++++
>> ui/pages/wok-ui.html.tmpl.ubuntu | 231 +++++++++++++++++++++++++++
>
> You don't need to create a specific file for each distro to get the
> right file path placed there.
>
> All the files *.html.tmpl are processed in the backend. Look at
> default() function in root.py
> The render() function in template.py does the magic. The 'data'
> parameter is a dict of data. In the *.html.tmpl file you just need to
> add a variable, for example:
>
> <script src="$jquery-ui-file-path"></script>
>
> Then you need to proper add 'jquery-ui-file-path' to the data dict and
> the Template will be set as desired.
>
> Does that make sense?
>
yes. Can i have the distro from this dict? if true, i can import the
logic from the makefiles and skip the problem
> Please, let me know if you need help to do that.
>
>> 7 files changed, 1153 insertions(+), 2 deletions(-)
>> create mode 100644 ui/pages/login.html.tmpl.fedora
>> create mode 100644 ui/pages/login.html.tmpl.ubuntu
>> create mode 100644 ui/pages/wok-ui.html.tmpl.fedora
>> create mode 100644 ui/pages/wok-ui.html.tmpl.ubuntu
>>
>> diff --git a/docs/fedora-deps.md b/docs/fedora-deps.md
>> index e665cdb..337f75a 100644
>> --- a/docs/fedora-deps.md
>> +++ b/docs/fedora-deps.md
>> @@ -28,7 +28,9 @@ Runtime Dependencies
>> $ sudo yum install python-cherrypy python-cheetah PyPAM m2crypto \
>> python-jsonschema python-psutil python-ldap \
>> python-lxml nginx openssl open-sans-fonts \
>> - fontawesome-fonts logrotate
>> + fontawesome-fonts logrotate js-jquery \
>> + js-moment js-typeahead.js
>> nodejs-lodash.noarch \
>> + nodejs-es5-shim
>> # For RHEL systems, install the additional packages:
>> $ sudo yum install python-ordereddict
>> diff --git a/docs/ubuntu-deps.md b/docs/ubuntu-deps.md
>> index 3a0f75c..0fe0038 100644
>> --- a/docs/ubuntu-deps.md
>> +++ b/docs/ubuntu-deps.md
>> @@ -18,7 +18,8 @@ Runtime Dependencies
>> $ sudo apt-get install python-cherrypy3 python-cheetah
>> python-pam \
>> python-m2crypto python-jsonschema \
>> python-psutil python-ldap python-lxml
>> nginx \
>> - openssl fonts-font-awesome
>> texlive-fonts-extra
>> + openssl fonts-font-awesome
>> texlive-fonts-extra \
>> + libjs-jquery libjs-lodash jquery-ui
>> libjs-bootstrap
>> Packages required for UI development
>> ------------------------------------
>> diff --git a/src/wok/config.py.in b/src/wok/config.py.in
>> index cbe585c..c007935 100644
>> --- a/src/wok/config.py.in
>> +++ b/src/wok/config.py.in
>> @@ -57,6 +57,15 @@ FONTS_PATH = {
>> ]
>> }
>
>> +JS_LIBS = {
>> + "jquery" : "/usr/share/javascript/jquery/2.1.3/jquery.min.js",
>
> Having the version number as part of the file path is really dangerous
> for us.
> That means the UI will not work as expected when some newer or older
> version is installed.
>
> Said that, I recommend to use the glob module to find the file path.
> For example.
>
> import glob
>
> filepaths = glob.glob('/usr/share/javascript/jquery/*/jquery.min.js')
>
> That will return a list of files found. So you sort the result and get
> the newer version.
>
> Does that make sense?
>
>> + "lodash" : "/usr/lib/node_modules/lodash/lodash.js",
>> + "moment" :
>> "/usr/share/javascript/moment/min/moment-with-locales.min.js",
>> + "typeahead" :
>> "/usr/share/javascript/typeahead.js/dist/typeahead.bundle.min.js",
>> + "es5-shim" : "/usr/lib/node_modules/es5-shim/es5-shim.min.js"
>> +}
>> +
>> +
>> def get_log_download_path():
>> return os.path.join(paths.state_dir, 'logs')
>> @@ -103,6 +112,11 @@ class Paths(object):
>> if os.path.exists(font_file):
>> setattr(self, '%s_dir' % font, path)
>> + for js in JS_LIBS.keys():
>> + path = JS_LIBS[js]
>> + if os.path.exists(path):
>> + setattr(self, '%s_dir' % js, path)
>> +
>> def get_prefix(self):
>> if __file__.startswith("/"):
>> base = os.path.dirname(__file__)
>> @@ -172,6 +186,14 @@ class UIConfig(dict):
>> 'tools.wokauth.on': False,
>> 'tools.nocache.on': False}
>> + for js, file in JS_LIBS.iteritems():
>> + if os.path.exists(file):
>> + ui_configs['/js/%s' % os.path.basename(file) ] = {
>> + 'tools.staticfile.on': True,
>> + 'tools.staticfile.filename': file,
>> + 'tools.wokauth.on': False,
>> + 'tools.nocache.on': False}
>> +
>> self.update(ui_configs)
>>
>
--
Ramon Nunes Medeiros
Kimchi Developer
Linux Technology Center Brazil
IBM Systems & Technology Group
Phone : +55 19 2132 7878
ramonn at br.ibm.com
More information about the Kimchi-devel
mailing list