import os 

#from ckan
import ckan.plugins as plugins

#pdf_to_thumbnail 
from . import thumbnail 
from . import action as thumbnail_action
from . import helpers as thumbnail_helpers

import logging
log = logging.getLogger(__name__)


class ThumbnailPlugin(plugins.SingletonPlugin):
    plugins.implements(plugins.IResourceController, inherit=True)
    plugins.implements(plugins.IConfigurer, inherit=True)
    plugins.implements(plugins.IActions, inherit=True)
    plugins.implements(plugins.ITemplateHelpers)


#IResourceController
    def after_resource_create(self, context, resource):
        resources = thumbnail.resources_of_containing_package(resource)
        thumbnail.create_thumbnail_if_none_in_package(context, resources)
        
    def after_resource_update(self, context, resource):
        resources = thumbnail.resources_of_containing_package(resource)
        thumbnail.create_thumbnail_if_none_in_package(context, resources)
                
    def after_resource_delete(self, context, resources):
        thumbnail.create_thumbnail_if_none_in_package(context, resources)
            
#IConfigurer 

    def update_config(self, config_):
        storage_path = config_.get('ckan.storage_path')
        public_dir = os.path.join(storage_path, 'thumbnail')
        if config_.get('extra_public_paths'):
            config_['extra_public_paths'] += ',' + public_dir
        else:
            config_['extra_public_paths'] = public_dir

#IActions

    def get_actions(self):
        return {'package_delete': thumbnail_action.before_package_delete,
                'package_update': thumbnail_action.before_package_update 
                }

#ITemplateHelpers

    def get_helpers(self):
        
        return {
                'thumbnail_namespace':thumbnail_helpers.thumbnail_namespace,
                'thumbail_get_download_link':thumbnail_helpers.get_download_link_for_thumbnail
                }