Code Monkey home page Code Monkey logo

ckanext-wirecloud_view's Introduction

CKAN WireCloud dashboards

Build Status Coverage Status

CKAN view extension for the creation and display of resource data visualization dashboards through WireCloud embbeded dashboards.

With this extension you can create a view for a resource using WireCloud. You can set the view to load an existing dashboard or create a custom dashboard from the view form.

Requirements

You need the Oauth2 extension for CKAN in order to make this extension work.

Installation

To install ckanext-wirecloud_view:

  1. Activate your CKAN virtual environment, for example:

    . /usr/lib/ckan/default/bin/activate
    
  2. Install the ckanext-wirecloud_view Python package into your virtual environment:

    pip install ckanext-wirecloud_view
    
  3. Add wirecloud_view to the ckan.plugins setting in your CKAN config file (e.g. /etc/ckan/default/production.ini).

  4. Add proper values for the ckan.wirecloud_view.url and ckan.wirecloud_view.editor_dashboard settings in your CKAN config file:

    # URL of the WireCloud instance to use for creating the dashboards
    ckan.wirecloud_view.url = https://mashup.lab.fiware.org
    
    # ID of the dashboard/workspace to use for creating new visualization dashboards
    ckan.wirecloud_view.editor_dashboard = wirecloud/ckan-editor
  5. Restart CKAN. For example if you've deployed CKAN with Apache:

    sudo service apache2 graceful
    

Development Installation

To install ckanext-wirecloud_view for development, activate your CKAN virtualenv and do:

git clone https://github.com/conwetlab/ckanext-wirecloud_view.git
cd ckanext-wirecloud_view
python setup.py develop

ckanext-wirecloud_view's People

Contributors

aarranz avatar aitormagan avatar billescas avatar fdelavega avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ckanext-wirecloud_view's Issues

Error 500

Error - <type 'exceptions.TypeError'>: coercing to Unicode: need string or buffer, NoneType found
URL: https://data.opplafy.eu/dataset/malaga-buses-rt/resource/d22ea73f-5760-471a-bf6a-ef29b2d494da/new_view?view_type=wirecloud_view
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/weberror/errormiddleware.py', line 171 in __call__
  app_iter = self.application(environ, sr_checker)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__
  resp = self.call_func(req, *args, **self.kwargs)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func
  return self.func(req, *args, **kwargs)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in __call__
  return request.get_response(self.app)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response
  application, catch_exc_info=False)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application
  app_iter = application(self.environ, start_response)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__
  resp = self.call_func(req, *args, **self.kwargs)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func
  return self.func(req, *args, **kwargs)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/fanstatic/injector.py', line 54 in __call__
  response = request.get_response(self.app)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response
  application, catch_exc_info=False)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application
  app_iter = application(self.environ, start_response)
File '/usr/lib/ckan/default/src/ckan/ckan/config/middleware/pylons_app.py', line 250 in inner
  result = application(environ, start_response)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/beaker/middleware.py', line 73 in __call__
  return self.app(environ, start_response)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/beaker/middleware.py', line 156 in __call__
  return self.wrap_app(environ, session_start_response)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/routes/middleware.py', line 131 in __call__
  response = self.app(environ, start_response)
File '/usr/lib/ckan/default/src/ckan/ckan/config/middleware/common_middleware.py', line 80 in __call__
  return self.app(environ, start_response)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in __call__
  response = self.dispatch(controller, environ, start_response)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch
  return controller(environ, start_response)
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 212 in __call__
  res = WSGIController.__call__(self, environ, start_response)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in __call__
  response = self._dispatch_call()
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call
  response = self._inspect_call(func)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call
  result = self._perform_call(func, args)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call
  return func(**args)
File '/usr/lib/ckan/default/src/ckan/ckan/controllers/package.py', line 1520 in edit_view
  return render('package/new_view.html', extra_vars=vars)
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 177 in render
  return cached_template(template_name, render_template)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/templating.py', line 249 in cached_template
  return render_func()
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 131 in render_template
  return render_jinja2(template_name, globs)
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 88 in render_jinja2
  return template.render(**extra_vars)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/jinja2/environment.py', line 989 in render
  return self.environment.handle_exception(exc_info, True)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/jinja2/environment.py', line 754 in handle_exception
  reraise(exc_type, exc_value, tb)
File '/usr/lib/ckan/default/src/ckan/ckan/templates/package/new_view.html', line 1 in top-level template code
  {% extends "package/view_edit_base.html" %}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/package/view_edit_base.html', line 4 in top-level template code
  {% set res = c.resource %}
File '/usr/lib/ckan/default/src/ckan/ckanext/datastore/templates/package/resource_edit_base.html', line 1 in top-level template code
  {% ckan_extends %}
File '/usr/lib/ckan/default/src/ckan/ckanext/datapusher/templates/package/resource_edit_base.html', line 1 in top-level template code
  {% ckan_extends %}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/package/resource_edit_base.html', line 4 in top-level template code
  {% set res = c.resource %}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/package/base.html', line 3 in top-level template code
  {% set pkg = c.pkg_dict or pkg_dict %}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/page.html', line 1 in top-level template code
  {% extends "base.html" %}
File '/plugins/ckanext-ngsiview/ckanext/ngsiview/templates/base.html', line 1 in top-level template code
  {% ckan_extends %}
File '/plugins/ckanext-ficodes_theme/ckanext/ficodes_theme/templates/base.html', line 1 in top-level template code
  {% ckan_extends %}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/base.html', line 103 in top-level template code
  {%- block page %}{% endblock -%}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/page.html', line 19 in block "page"
  {%- block content %}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/page.html', line 22 in block "content"
  {% block main_content %}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/package/view_edit_base.html', line 40 in block "main_content"
  {% snippet 'package/snippets/resource_view.html', resource_view=resource_view, resource=resource, package=package, to_preview=True %}
File '/usr/lib/ckan/default/src/ckan/ckan/lib/jinja_extensions.py', line 246 in _call
  return base.render_snippet(args[0], **kwargs)
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 78 in render_snippet
  renderer='snippet')
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 177 in render
  return cached_template(template_name, render_template)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/templating.py', line 249 in cached_template
  return render_func()
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 131 in render_template
  return render_jinja2(template_name, globs)
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 88 in render_jinja2
  return template.render(**extra_vars)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/jinja2/environment.py', line 989 in render
  return self.environment.handle_exception(exc_info, True)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/jinja2/environment.py', line 754 in handle_exception
  reraise(exc_type, exc_value, tb)
File '/usr/lib/ckan/default/src/ckan/ckan/templates/package/snippets/resource_view.html', line 3 in top-level template code
  {% block resource_view %}
File '/usr/lib/ckan/default/src/ckan/ckan/templates/package/snippets/resource_view.html', line 19 in block "resource_view"
  {{ h.rendered_resource_view(resource_view, resource, package) }}
File '/usr/lib/ckan/default/src/ckan/ckan/lib/helpers.py', line 2012 in rendered_resource_view
  return literal(base.render(template, extra_vars=data_dict))
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 177 in render
  return cached_template(template_name, render_template)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/templating.py', line 249 in cached_template
  return render_func()
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 131 in render_template
  return render_jinja2(template_name, globs)
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 88 in render_jinja2
  return template.render(**extra_vars)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/jinja2/environment.py', line 989 in render
  return self.environment.handle_exception(exc_info, True)
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/jinja2/environment.py', line 754 in handle_exception
  reraise(exc_type, exc_value, tb)
File '/plugins/ckanext-wirecloud_view/ckanext/wirecloudview/templates/wirecloud_view.html', line 1 in top-level template code
  <iframe style="margin:auto; max-height:100%; display:block; width:100%;" src="{{ h.get_dashboard_url(resource_view.get('dashboard'), resource_view.get('id'), "://".join(h.get_site_protocol_and_host())) }}" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
File '/plugins/ckanext-wirecloud_view/ckanext/wirecloudview/plugin.py', line 112 in <lambda>
  'get_dashboard_url': lambda dashboard, resourceid, ckanserver: urljoin(wirecloud_url, dashboard) + '?mode=embedded&resourceid=' + resourceid + '&ckanserver=' + ckanserver
TypeError: coercing to Unicode: need string or buffer, NoneType found


CGI Variables
-------------
  AUTH_TYPE: 'cookie'
  CKAN_CURRENT_URL: '/dataset/malaga-buses-rt/resource/d22ea73f-5760-471a-bf6a-ef29b2d494da/new_view?view_type%3Dwirecloud_view'
  CKAN_LANG: 'en'
  CKAN_LANG_IS_DEFAULT: True
  CONTENT_TYPE: 'application/x-www-form-urlencoded; charset=utf-8'
  CONTEXT_DOCUMENT_ROOT: '/var/www/html'
  DOCUMENT_ROOT: '/var/www/html'
  GATEWAY_INTERFACE: 'CGI/1.1'
  HTTP_ACCEPT: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'
  HTTP_ACCEPT_ENCODING: 'gzip, deflate, br'
  HTTP_ACCEPT_LANGUAGE: 'en,es-ES;q=0.9,es;q=0.8'
  HTTP_CACHE_CONTROL: 'max-age=0'
  HTTP_CONNECTION: 'Keep-Alive'
  HTTP_COOKIE: '_ga=GA1.2.1673524125.1515691731; auth_tkt="8d43024d4206ddea47384e9dc86e09975af17397mjimenez!userid_type=unicode"; auth_tkt="8d43024d4206ddea47384e9dc86e09975af17397mjimenez!userid_type=unicode"; ckan=7300497285af1e26f5b8f8efff3d769d051a13617eb0bb2473ae45c098b1d05e417c8401'
  HTTP_HOST: 'data.opplafy.eu'
  HTTP_ORIGIN: 'https://data.opplafy.eu'
  HTTP_REFERER: 'https://data.opplafy.eu/dataset/malaga-buses-rt/resource/d22ea73f-5760-471a-bf6a-ef29b2d494da/new_view?view_type=wirecloud_view'
  HTTP_UPGRADE_INSECURE_REQUESTS: '1'
  HTTP_USER_AGENT: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
  HTTP_X_FORWARDED_FOR: '37.235.53.58'
  HTTP_X_FORWARDED_HOST: 'data.opplafy.eu'
  HTTP_X_FORWARDED_PORT: '443'
  HTTP_X_FORWARDED_PROTO: 'https'
  HTTP_X_FORWARDED_SERVER: 'data.opplafy.eu'
  PATH_INFO: '/dataset/malaga-buses-rt/resource/d22ea73f-5760-471a-bf6a-ef29b2d494da/new_view'
  PATH_TRANSLATED: '/etc/ckan/default/apache.wsgi/dataset/malaga-buses-rt/resource/d22ea73f-5760-471a-bf6a-ef29b2d494da/new_view'
  REMOTE_PORT: '41394'
  REMOTE_USER: u'mjimenez'
  REMOTE_USER_DATA: 'userid_type=unicode'
  REMOTE_USER_TOKENS: ['']
  REQUEST_METHOD: 'POST'
  REQUEST_SCHEME: 'http'
  REQUEST_URI: '/dataset/malaga-buses-rt/resource/d22ea73f-5760-471a-bf6a-ef29b2d494da/new_view?view_type=wirecloud_view'
  SCRIPT_FILENAME: '/etc/ckan/default/apache.wsgi'
  SERVER_ADDR: '172.18.0.3'
  SERVER_ADMIN: '[no address given]'
  SERVER_NAME: 'data.opplafy.eu'
  SERVER_PORT: '443'
  SERVER_PROTOCOL: 'HTTP/1.1'
  SERVER_SIGNATURE: '<address>Apache/2.4.18 (Ubuntu) Server at data.opplafy.eu Port 5000</address>\\n'
  SERVER_SOFTWARE: 'Apache/2.4.18 (Ubuntu)'


WSGI Variables
--------------
  __no_cache__: True
  apache.version: (2, 4, 23)
  application: <fanstatic.publisher.Delegator object at 0x7fd337ab2390>
  beaker.cache: <beaker.cache.CacheManager object at 0x7fd337ab22d0>
  beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7fd337ab2210>>
  beaker.session: {'_accessed_time': 1525774349.50282, '_creation_time': 1525773378.792561}
  ckan.app: 'pylons_app'
  fanstatic.needed: <fanstatic.core.NeededResources object at 0x7fd336ba0fd0>
  mod_wsgi.application_group: 'localhost:5000|'
  mod_wsgi.callable_object: 'application'
  mod_wsgi.daemon_connects: '1'
  mod_wsgi.daemon_restarts: '0'
  mod_wsgi.daemon_start: '1525774349327879'
  mod_wsgi.enable_sendfile: '0'
  mod_wsgi.handler_script: ''
  mod_wsgi.ignore_activity: '0'
  mod_wsgi.listener_host: ''
  mod_wsgi.listener_port: '5000'
  mod_wsgi.path_info: '/dataset/malaga-buses-rt/resource/d22ea73f-5760-471a-bf6a-ef29b2d494da/new_view'
  mod_wsgi.process_group: 'ckan_default'
  mod_wsgi.queue_start: '1525774349327609'
  mod_wsgi.request_handler: 'wsgi-script'
  mod_wsgi.request_id: '2lsZBo+krFc'
  mod_wsgi.request_start: '1525774349327322'
  mod_wsgi.script_name: ''
  mod_wsgi.script_reloading: '1'
  mod_wsgi.script_start: '1525774349327948'
  mod_wsgi.thread_id: 8
  mod_wsgi.thread_requests: 71L
  mod_wsgi.total_requests: 728L
  mod_wsgi.version: (4, 5, 11)
  paste.cookies: (<SimpleCookie: _ga='GA1.2.1673524125.1515691731' auth_tkt='8d43024d4206ddea47384e9dc86e09975af17397mjimenez!userid_type=unicode' ckan='7300497285af1e26f5b8f8efff3d769d051a13617eb0bb2473ae45c098b1d05e417c8401'>, '_ga=GA1.2.1673524125.1515691731; auth_tkt="8d43024d4206ddea47384e9dc86e09975af17397mjimenez!userid_type=unicode"; auth_tkt="8d43024d4206ddea47384e9dc86e09975af17397mjimenez!userid_type=unicode"; ckan=7300497285af1e26f5b8f8efff3d769d051a13617eb0bb2473ae45c098b1d05e417c8401')
  paste.parsed_dict_querystring: (MultiDict([('view_type', 'wirecloud_view')]), 'view_type=wirecloud_view')
  paste.parsed_querystring: ([('view_type', 'wirecloud_view')], 'view_type=wirecloud_view')
  paste.registry: <paste.registry.Registry object at 0x7fd336b195d0>
  paste.throw_errors: True
  pylons.action_method: <bound method PackageController.edit_view of <ckan.controllers.package.PackageController object at 0x7fd336ba0b10>>
  pylons.controller: <ckan.controllers.package.PackageController object at 0x7fd336ba0b10>
  pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
  pylons.pylons: <pylons.util.PylonsContext object at 0x7fd336ba00d0>
  pylons.routes_dict: {'action': u'edit_view', 'controller': u'package', 'id': u'malaga-buses-rt', 'resource_id': u'd22ea73f-5760-471a-bf6a-ef29b2d494da'}
  repoze.who.api: <repoze.who.api.API object at 0x7fd336ba0250>
  repoze.who.identity: <repoze.who identity (hidden, dict-like) at 140545132667848>
  repoze.who.logger: <logging.Logger object at 0x7fd337ab2490>
  repoze.who.plugins: {'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator object at 0x7fd337a4da50>, 'friendlyform': <FriendlyFormPlugin 140545148349008>, 'auth_tkt': <CkanAuthTktCookiePlugin 140545148791440>}
  routes.route: <routes.route.Route object at 0x7fd337c23dd0>
  routes.url: <routes.util.URLGenerator object at 0x7fd336ba0690>
  webob._parsed_post_vars: (MultiDict([('title', 'WireCloud'), ('description', 'WireCloud dashboard showing buses and routes on a map'), ('dashboard', 'aarranz/malaga-buses')]), <FakeCGIBody at 0x7fd336ba0f50 viewing MultiDict([('ti...s')])>)
  webob._parsed_query_vars: (GET([('view_type', 'wirecloud_view')]), 'view_type=wirecloud_view')
  webob.adhoc_attrs: {'errors': 'ignore', 'response': <Response at 0x7fd336ba0350 200 OK>, 'language': 'en-us'}
  webob.is_body_readable: True
  webob.is_body_seekable: False
  wsgi process: 'Multi process AND threads (?)'
  wsgi.file_wrapper: <type 'mod_wsgi.FileWrapper'>
  wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7fd336ba0690>, {'action': u'edit_view', 'controller': u'package', 'id': u'malaga-buses-rt', 'resource_id': u'd22ea73f-5760-471a-bf6a-ef29b2d494da'})
------------------------------------------------------------

Not able to create a new dashboard in CKAN using graph creator

While creating a new dashboard in CKAN using wirecloud. I am unable to create a new dashboard using ckan graph creator.

image

I already have a csv format dataset. So, creating a new view for that dataset, i.e. wirecloud for it shows no values as shown above and I have no values to enter in Axis X and Axis Y.

My sample dataset is -
image

Can you please suggest,how can I solve the above problem.?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.