[#98] Minor tweaks to @u10313335 PR
* Keep old entry points for preview plugins so people does not need to do python setup.py develop * Version checks should be done including the min_version parameter, otherwise they will fail for 2.4, 2.5... * No need to define different methods for different interfaces. If running eg 2.3, the IResourcePreview interface methods will simply be ignored. * Simplified same domain checking * Add note about these being eventually migrated to ckanext-geoviews * Added docs
This commit is contained in:
parent
c9c40606c2
commit
4a142e8377
|
@ -1,8 +1,9 @@
|
|||
# TODO: Move these to ckanext-geoviews
|
||||
|
||||
import mimetypes
|
||||
from logging import getLogger
|
||||
|
||||
from ckan import plugins as p
|
||||
import ckan.lib.datapreview as datapreview
|
||||
|
||||
|
||||
log = getLogger(__name__)
|
||||
|
@ -10,7 +11,7 @@ log = getLogger(__name__)
|
|||
|
||||
class DataViewBase(p.SingletonPlugin):
|
||||
'''This base class is for view extensions. '''
|
||||
if p.toolkit.check_ckan_version('2.3'):
|
||||
if p.toolkit.check_ckan_version(min_version='2.3'):
|
||||
p.implements(p.IResourceView, inherit=True)
|
||||
else:
|
||||
p.implements(p.IResourcePreview, inherit=True)
|
||||
|
@ -33,22 +34,20 @@ class DataViewBase(p.SingletonPlugin):
|
|||
|
||||
def setup_template_variables(self, context, data_dict):
|
||||
import ckanext.resourceproxy.plugin as proxy
|
||||
if p.toolkit.check_ckan_version('2.3'):
|
||||
self.same_domain = datapreview.on_same_domain(data_dict)
|
||||
else:
|
||||
self.same_domain = datapreview._on_same_domain(data_dict)
|
||||
self.same_domain = data_dict['resource'].get('on_same_domain')
|
||||
if self.proxy_is_enabled and not self.same_domain:
|
||||
data_dict['resource']['original_url'] = data_dict['resource']['url']
|
||||
data_dict['resource']['url'] = proxy.get_proxified_resource_url(data_dict)
|
||||
|
||||
|
||||
|
||||
class WMSView(DataViewBase):
|
||||
WMS = ['wms']
|
||||
|
||||
if p.toolkit.check_ckan_version('2.3'):
|
||||
# IResourceView (CKAN >=2.3)
|
||||
def info(self):
|
||||
return {'name': 'wms_view',
|
||||
'title': 'wms',
|
||||
'title': 'WMS',
|
||||
'icon': 'map-marker',
|
||||
'iframed': True,
|
||||
'default_title': p.toolkit._('WMS'),
|
||||
|
@ -64,7 +63,9 @@ class WMSView(DataViewBase):
|
|||
|
||||
def view_template(self, context, data_dict):
|
||||
return 'dataviewer/wms.html'
|
||||
else:
|
||||
|
||||
# IResourcePreview (CKAN < 2.3)
|
||||
|
||||
def can_preview(self, data_dict):
|
||||
format_lower = data_dict['resource']['format'].lower()
|
||||
|
||||
|
@ -90,10 +91,7 @@ class WMSView(DataViewBase):
|
|||
|
||||
def setup_template_variables(self, context, data_dict):
|
||||
import ckanext.resourceproxy.plugin as proxy
|
||||
if p.toolkit.check_ckan_version('2.3'):
|
||||
self.same_domain = datapreview.on_same_domain(data_dict)
|
||||
else:
|
||||
self.same_domain = datapreview._on_same_domain(data_dict)
|
||||
self.same_domain = data_dict['resource'].get('on_same_domain')
|
||||
if self.proxy_is_enabled and not self.same_domain:
|
||||
data_dict['resource']['proxy_url'] = proxy.get_proxified_resource_url(data_dict)
|
||||
|
||||
|
@ -101,6 +99,10 @@ class WMSView(DataViewBase):
|
|||
data_dict['resource']['proxy_url'] = data_dict['resource']['url']
|
||||
|
||||
|
||||
class WMSPreview(WMSView):
|
||||
pass
|
||||
|
||||
|
||||
class GeoJSONView(DataViewBase):
|
||||
p.implements(p.ITemplateHelpers, inherit=True)
|
||||
|
||||
|
@ -113,7 +115,7 @@ class GeoJSONView(DataViewBase):
|
|||
|
||||
mimetypes.add_type('application/json', '.geojson')
|
||||
|
||||
if p.toolkit.check_ckan_version('2.3'):
|
||||
# IResourceView (CKAN >=2.3)
|
||||
def info(self):
|
||||
return {'name': 'geojson_view',
|
||||
'title': 'GeoJSON',
|
||||
|
@ -132,7 +134,9 @@ class GeoJSONView(DataViewBase):
|
|||
|
||||
def view_template(self, context, data_dict):
|
||||
return 'dataviewer/geojson.html'
|
||||
else:
|
||||
|
||||
# IResourcePreview (CKAN < 2.3)
|
||||
|
||||
def can_preview(self, data_dict):
|
||||
format_lower = data_dict['resource']['format'].lower()
|
||||
|
||||
|
@ -156,7 +160,7 @@ class GeoJSONView(DataViewBase):
|
|||
def preview_template(self, context, data_dict):
|
||||
return 'dataviewer/geojson.html'
|
||||
|
||||
## ITemplateHelpers
|
||||
# ITemplateHelpers
|
||||
|
||||
def get_helpers(self):
|
||||
from ckanext.spatial import helpers as spatial_helpers
|
||||
|
@ -167,3 +171,6 @@ class GeoJSONView(DataViewBase):
|
|||
return {
|
||||
'get_common_map_config_geojson' : spatial_helpers.get_common_map_config,
|
||||
}
|
||||
|
||||
class GeoJSONPreview(GeoJSONView):
|
||||
pass
|
||||
|
|
|
@ -17,13 +17,14 @@ The GeoJSON previewer is based on Leaflet_. It will render GeoJSON_ files on a
|
|||
map and add a popup showing the features properties, for those resources that
|
||||
have a format of ``geojson`` or ``gjson``.
|
||||
|
||||
To enable the GeoJSON previewer you need to add the ``geojson_preview`` plugin
|
||||
To enable the GeoJSON previewer you need to add the ``geojson_view`` plugin
|
||||
to your ini file. This plugin also requires the `resource_proxy`_
|
||||
plugin (Make sure you load the ``resource_proxy`` plugin before any other
|
||||
from the spatial extension)::
|
||||
|
||||
ckan.plugins = resource_proxy geojson_preview
|
||||
ckan.plugins = resource_proxy geojson_view
|
||||
|
||||
.. note:: If using CKAN < 2.3, use `geojson_preview`
|
||||
|
||||
WMS Preview
|
||||
-----------
|
||||
|
@ -39,12 +40,14 @@ just the main WMS service endpoint, for example:
|
|||
|
||||
http://vmap0.tiles.osgeo.org/wms/vmap0?SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.1.1
|
||||
|
||||
To enable the WMS previewer you need to add the ``wms_preview`` plugin to your
|
||||
To enable the WMS previewer you need to add the ``wms_view`` plugin to your
|
||||
ini file. This plugin also requires the `resource_proxy`_
|
||||
plugin (Make sure you load the ``resource_proxy`` plugin before any other
|
||||
from the spatial extension::
|
||||
|
||||
ckan.plugins = resource_proxy wms_preview
|
||||
ckan.plugins = resource_proxy wms_view
|
||||
|
||||
.. note:: If using CKAN < 2.3, use `geojson_preview`
|
||||
|
||||
.. note:: Please note that the WMS previewer included in ckanext-spatial is
|
||||
just a proof of concept and has important limitations, and is
|
||||
|
|
4
setup.py
4
setup.py
|
@ -32,8 +32,8 @@ setup(
|
|||
spatial_query=ckanext.spatial.plugin:SpatialQuery
|
||||
wms_view=ckanext.spatial.nongeos_plugin:WMSView
|
||||
geojson_view=ckanext.spatial.nongeos_plugin:GeoJSONView
|
||||
wms_preview=ckanext.spatial.nongeos_plugin:WMSView
|
||||
geojson_preview=ckanext.spatial.nongeos_plugin:GeoJSONView
|
||||
wms_preview=ckanext.spatial.nongeos_plugin:WMSPreview
|
||||
geojson_preview=ckanext.spatial.nongeos_plugin:GeoJSONPreview
|
||||
cswserver=ckanext.spatial.plugin:CatalogueServiceWeb
|
||||
spatial_harvest_metadata_api=ckanext.spatial.plugin:HarvestMetadataApi
|
||||
|
||||
|
|
Loading…
Reference in New Issue