Skip to content

Commit

Permalink
Merge branch '226-text-highlighting'
Browse files Browse the repository at this point in the history
  • Loading branch information
amercader committed May 30, 2013
2 parents bd772a6 + f4450f7 commit 3f2d2ed
Show file tree
Hide file tree
Showing 25 changed files with 621 additions and 215 deletions.
2 changes: 1 addition & 1 deletion ckan/config/deployment.ini_tmpl
Expand Up @@ -82,7 +82,7 @@ ckan.site_id = default
# Add ``pdf_preview`` to enable the resource preview for PDFs
# Add ``resource_proxy`` to enable resorce proxying and get around the
# same origin policy
ckan.plugins = stats json_preview recline_preview
ckan.plugins = stats text_preview recline_preview


## Front-End Settings
Expand Down
6 changes: 4 additions & 2 deletions ckan/lib/datapreview.py
Expand Up @@ -11,8 +11,10 @@

import ckan.plugins as p

DEFAULT_DIRECT_EMBED = ['png', 'jpg', 'gif']
DEFAULT_LOADABLE_IFRAME = ['html', 'htm', 'rdf+xml', 'owl+xml', 'xml', 'n3', 'n-triples', 'turtle', 'plain', 'atom', 'rss', 'txt']
DEFAULT_DIRECT_EMBED = ['png', 'jpg', 'jpeg', 'gif']
DEFAULT_LOADABLE_IFRAME = ['html', 'htm', 'rdf+xml', 'owl+xml', 'xml',
'n3', 'n-triples', 'turtle', 'plain',
'atom', 'rss', 'txt']


def compare_domains(urls):
Expand Down
3 changes: 2 additions & 1 deletion ckan/lib/helpers.py
Expand Up @@ -1504,7 +1504,8 @@ def resource_preview(resource, pkg_id):
reason = None
if format_lower:
log.info(
_(u'No preview handler for resource of type {0}'.format(format_lower))
_(u'No preview handler for resource of type {0}'.format(
format_lower))
)
else:
reason = _(u'The resource format is not specified.')
Expand Down
5 changes: 0 additions & 5 deletions ckan/tests/test_coding_standards.py
Expand Up @@ -250,9 +250,7 @@ class TestImportFromCkan(object):
'ckan/tests/test_plugins.py',
'ckan/tests/test_wsgi_ckanclient.py',
'ckan/websetup.py',
'ckanext/jsonpreview/tests/test_preview.py',
'ckanext/multilingual/plugin.py',
'ckanext/pdfpreview/tests/test_preview.py',
'ckanext/reclinepreview/tests/test_preview.py',
'ckanext/stats/controller.py',
'ckanext/stats/stats.py',
Expand Down Expand Up @@ -761,12 +759,9 @@ class TestPep8(object):
'ckanext/datastore/tests/test_upsert.py',
'ckanext/example_idatasetform/plugin.py',
'ckanext/example_itemplatehelpers/plugin.py',
'ckanext/jsonpreview/plugin.py',
'ckanext/jsonpreview/tests/test_preview.py',
'ckanext/multilingual/plugin.py',
'ckanext/multilingual/tests/test_multilingual_plugin.py',
'ckanext/pdfpreview/plugin.py',
'ckanext/pdfpreview/tests/test_preview.py',
'ckanext/reclinepreview/plugin.py',
'ckanext/reclinepreview/tests/test_preview.py',
'ckanext/resourceproxy/controller.py',
Expand Down
59 changes: 0 additions & 59 deletions ckanext/jsonpreview/plugin.py

This file was deleted.

33 changes: 0 additions & 33 deletions ckanext/jsonpreview/theme/public/css/json.css

This file was deleted.

50 changes: 0 additions & 50 deletions ckanext/jsonpreview/theme/public/preview_json.js

This file was deleted.

10 changes: 0 additions & 10 deletions ckanext/jsonpreview/theme/public/resource.config

This file was deleted.

13 changes: 0 additions & 13 deletions ckanext/jsonpreview/theme/templates/json.html

This file was deleted.

23 changes: 13 additions & 10 deletions ckanext/pdfpreview/tests/test_preview.py
Expand Up @@ -9,8 +9,8 @@
import ckan.plugins as plugins
import ckan.lib.helpers as h
import ckanext.pdfpreview.plugin as previewplugin
from ckan.lib.create_test_data import CreateTestData
from ckan.config.middleware import make_app
import ckan.lib.create_test_data as create_test_data
import ckan.config.middleware as middleware


class TestPdfPreview(tests.WsgiAppCase):
Expand All @@ -19,13 +19,12 @@ class TestPdfPreview(tests.WsgiAppCase):
def setup_class(cls):
cls._original_config = config.copy()
config['ckan.plugins'] = 'pdf_preview'
wsgiapp = make_app(config['global_conf'], **config)
wsgiapp = middleware.make_app(config['global_conf'], **config)
cls.app = paste.fixture.TestApp(wsgiapp)

cls.p = previewplugin.PdfPreview()

# create test resource
CreateTestData.create()
create_test_data.CreateTestData.create()

context = {
'model': model,
Expand All @@ -34,8 +33,10 @@ def setup_class(cls):
}

cls.package = model.Package.get('annakarenina')
cls.resource = logic.get_action('resource_show')(context, {'id': cls.package.resources[1].id})
cls.resource['url'] = pylons.config.get('ckan.site_url', '//localhost:5000')
cls.resource = logic.get_action('resource_show')(
context, {'id': cls.package.resources[1].id})
cls.resource['url'] = pylons.config.get(
'ckan.site_url', '//localhost:5000')
cls.resource['format'] = 'pdf'
logic.action.update.resource_update(context, cls.resource)

Expand All @@ -44,7 +45,7 @@ def teardown_class(cls):
config.clear()
config.update(cls._original_config)
plugins.reset()
CreateTestData.delete()
create_test_data.CreateTestData.delete()

def test_can_preview(self):
data_dict = {
Expand Down Expand Up @@ -86,12 +87,14 @@ def test_js_included(self):
result = self.app.get(url, status='*')

assert result.status == 200, result.status
assert (('preview_pdf.js' in result.body) or ('preview_pdf.min.js' in result.body))
assert (('preview_pdf.js' in result.body) or (
'preview_pdf.min.js' in result.body))
assert 'preload_resource' in result.body
assert 'data-module="pdfpreview"' in result.body

def test_iframe_is_shown(self):
url = h.url_for(controller='package', action='resource_read', id=self.package.name, resource_id=self.resource['id'])
url = h.url_for(controller='package', action='resource_read',
id=self.package.name, resource_id=self.resource['id'])
result = self.app.get(url)
assert 'data-module="data-viewer"' in result.body
assert '<iframe' in result.body
File renamed without changes.
100 changes: 100 additions & 0 deletions ckanext/textpreview/plugin.py
@@ -0,0 +1,100 @@
from logging import getLogger

import ckan.plugins as p

from ckan.common import json

log = getLogger(__name__)

proxy = False
try:
import ckanext.resourceproxy.plugin as proxy
except ImportError:
pass


DEFAULT_TEXT_FORMATS = ['text/plain', 'txt', 'plain']
DEFAULT_XML_FORMATS = ['xml', 'rdf', 'rdf+xm', 'owl+xml', 'atom', 'rss']
DEFAULT_JSON_FORMATS = ['json', 'gjson', 'geojson']
DEFAULT_JSONP_FORMATS = ['jsonp']


class TextPreview(p.SingletonPlugin):
"""This extension previews JSON(P)
This extension implements two interfaces
- ``IConfigurer`` allows to modify the configuration
- ``IConfigurable`` get the configuration
- ``IResourcePreview`` allows to add previews
"""
p.implements(p.IConfigurer, inherit=True)
p.implements(p.IConfigurable, inherit=True)
p.implements(p.IResourcePreview, inherit=True)

proxy_is_enabled = False

def update_config(self, config):
''' Set up the resource library, public directory and
template directory for the preview
'''

self.text_formats = config.get(
'ckan.preview.text_formats', '').split()
if not self.text_formats:
self.text_formats = DEFAULT_TEXT_FORMATS

self.xml_formats = config.get(
'ckan.preview.xml_formats', '').split()
if not self.xml_formats:
self.xml_formats = DEFAULT_XML_FORMATS

self.json_formats = config.get(
'ckan.preview.json_formats', '').split()
if not self.json_formats:
self.json_formats = DEFAULT_JSON_FORMATS

self.jsonp_formats = config.get(
'ckan.preview.jsonp_formats', '').split()
if not self.jsonp_formats:
self.jsonp_formats = DEFAULT_JSONP_FORMATS

self.no_jsonp_formats = (self.text_formats +
self.xml_formats +
self.json_formats)

p.toolkit.add_public_directory(config, 'theme/public')
p.toolkit.add_template_directory(config, 'theme/templates')
p.toolkit.add_resource('theme/public', 'ckanext-textpreview')

def configure(self, config):
self.proxy_is_enabled = config.get(
'ckan.resource_proxy_enabled', False)

def can_preview(self, data_dict):
resource = data_dict['resource']
format_lower = resource['format'].lower()
if format_lower in self.jsonp_formats:
return True
elif format_lower in self.no_jsonp_formats and (
self.proxy_is_enabled or resource['on_same_domain']):
return True
return False

def setup_template_variables(self, context, data_dict):
assert self.can_preview(data_dict)
p.toolkit.c.preview_metadata = json.dumps({
'text_formats': self.text_formats,
'json_formats': self.json_formats,
'jsonp_formats': self.jsonp_formats,
'xml_formats': self.xml_formats
})
resource = data_dict['resource']
format_lower = resource['format'].lower()
if (format_lower in self.no_jsonp_formats and
self.proxy_is_enabled and not resource['on_same_domain']):
p.toolkit.c.resource['url'] = proxy.get_proxified_resource_url(
data_dict)

def preview_template(self, context, data_dict):
return 'text.html'
File renamed without changes.

0 comments on commit 3f2d2ed

Please sign in to comment.