import os 


#from ckan
import ckan.plugins as plugins

#pdf_to_thumbnail 
import thumbnail 
import action as thumbnail_action
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_create(self, context, resource):        
        _, filename = thumbnail.create_thumbnail(context, resource)
        thumbnail.write_thumbnail_into_package(context, resource, filename)
        
    def after_update(self, context, resource):
        thumbnail.check_and_create_thumbnail_after_update(context, resource)
                
    def after_delete(self, context, resources):
        thumbnail.create_thumbnail_for_last_resource(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
                }