Tidy up imports a bit in plugin.py

This commit is contained in:
John Glover 2012-07-11 10:38:47 +01:00
parent 1f534141ed
commit 1fa09bae92
1 changed files with 22 additions and 30 deletions

View File

@ -1,17 +1,14 @@
import logging import logging
import urllib import urllib
import os
from paste.deploy.converters import asbool from paste.deploy.converters import asbool
from genshi.filters import Transformer from genshi.filters import Transformer
from genshi import HTML from genshi import HTML
from genshi.core import START, TEXT from genshi.core import START, TEXT
from genshi.filters.transform import INSIDE, EXIT from genshi.filters.transform import INSIDE, EXIT
from pylons import config, request from pylons import config, request
from ckan.plugins import implements, SingletonPlugin import ckan.plugins as p
from ckan.plugins import IGenshiStreamFilter, IConfigurable, IRoutes import gasnippet
from ckan.plugins import IConfigurer import commands
from gasnippet import gacode
from commands import DEFAULT_RESOURCE_URL_TAG
import dbutil import dbutil
log = logging.getLogger('ckanext.googleanalytics') log = logging.getLogger('ckanext.googleanalytics')
@ -21,11 +18,11 @@ class GoogleAnalyticsException(Exception):
pass pass
class GoogleAnalyticsPlugin(SingletonPlugin): class GoogleAnalyticsPlugin(p.SingletonPlugin):
implements(IConfigurable, inherit=True) p.implements(p.IConfigurable, inherit=True)
implements(IGenshiStreamFilter, inherit=True) p.implements(p.IGenshiStreamFilter, inherit=True)
implements(IRoutes, inherit=True) p.implements(p.IRoutes, inherit=True)
implements(IConfigurer, inherit=True) p.implements(p.IConfigurer, inherit=True)
def configure(self, config): def configure(self, config):
self.config = config self.config = config
@ -33,17 +30,27 @@ class GoogleAnalyticsPlugin(SingletonPlugin):
msg = "Missing googleanalytics.id in config" msg = "Missing googleanalytics.id in config"
raise GoogleAnalyticsException(msg) raise GoogleAnalyticsException(msg)
def update_config(self, config):
p.toolkit.add_template_directory(config, 'templates')
def after_map(self, map):
map.redirect("/analytics/package/top", "/analytics/dataset/top")
map.connect('analytics', '/analytics/dataset/top',
controller='ckanext.googleanalytics.controller:GAController',
action='view')
return map
def filter(self, stream): def filter(self, stream):
log.info("Inserting GA code into template") log.info("Inserting GA code into template")
ga_id = self.config['googleanalytics.id'] ga_id = self.config['googleanalytics.id']
ga_domain = self.config.get('googleanalytics.domain', 'auto') ga_domain = self.config.get('googleanalytics.domain', 'auto')
code = HTML(gacode % (ga_id, ga_domain)) code = HTML(gasnippet.gacode % (ga_id, ga_domain))
stream = stream | Transformer('head').append(code) stream = stream | Transformer('head').append(code)
resource_url = config.get('googleanalytics.resource_prefix', resource_url = config.get('googleanalytics.resource_prefix',
DEFAULT_RESOURCE_URL_TAG) commands.DEFAULT_RESOURCE_URL_TAG)
routes = request.environ.get('pylons.routes_dict') routes = request.environ.get('pylons.routes_dict')
action = routes.get('action') action = routes.get('action')
controller = routes.get('controller') controller = routes.get('controller')
if (controller == 'package' and \ if (controller == 'package' and \
action in ['search', 'read', 'resource_read']) or \ action in ['search', 'read', 'resource_read']) or \
@ -54,6 +61,7 @@ class GoogleAnalyticsPlugin(SingletonPlugin):
asbool(config.get('googleanalytics.show_downloads', True)) and asbool(config.get('googleanalytics.show_downloads', True)) and
action == 'read' and controller == 'package' action == 'read' and controller == 'package'
) )
# add download tracking link # add download tracking link
def js_attr(name, event): def js_attr(name, event):
attrs = event[1][1] attrs = event[1][1]
@ -96,19 +104,3 @@ class GoogleAnalyticsPlugin(SingletonPlugin):
stream = stream | Transformer('//head').append(HTML(download_style)) stream = stream | Transformer('//head').append(HTML(download_style))
return stream return stream
def after_map(self, map):
map.redirect("/analytics/package/top", "/analytics/dataset/top")
map.connect('analytics', '/analytics/dataset/top',
controller='ckanext.googleanalytics.controller:GAController',
action='view')
return map
def update_config(self, config):
here = os.path.dirname(__file__)
rootdir = os.path.dirname(os.path.dirname(here))
template_dir = os.path.join(rootdir, 'ckanext',
'googleanalytics', 'templates')
config['extra_template_paths'] = ','.join(
[template_dir, config.get('extra_template_paths', '')]
)