zooappslib module

#-import library
import os, sys, glob
import logging

#-import others library
import parameters

#-classs definition
class Zooapps:
    """
        Zooapps plugins manager application.
    """
        
    def __init__(self, params = {}):
        self.version            = '0.0.1.alpha'
        self.plugin_ext         = 'zooapps-plugin'
        self.params             = params
        self.plugins            = {}
        logging.basicConfig(level=logging.DEBUG,
                            format='%(asctime)s %(levelname)s %(message)s',
                            filename=os.path.dirname(os.path.abspath(__file__)) + os.path.sep + 'zooappslib.log',
                            filemode='a')

    def setPluginsDir(self, plugin_dir):
        self.params['PLUGIN_DIR'] = plugin_dir

    def registerPlugins(self, plugins):
        self.plugins[plugins['PLUGIN_NAME']] = plugins['MODULE']
        logging.info('Register plugins ' + plugins['PLUGIN_NAME'] + '.')

    def removePlugins(self, plugin_name):
        self.plugins.pop(plugin_name)
        logging.info('Remove plugins ' + plugin_name + '.')

    def loadPlugins(self):
        logging.info('Loading plugins ' + self.params['PLUGIN_NAME'])
        if self.checkPlugins() == True:
            if self.checkSuffix() == True:
                cfg = self.loadParameters()
                sys.path.append(self.params['PLUGIN_DIR'])
                obj = __import__(cfg['MODULE'])
                cfg['MODULE'] = obj
                return cfg
        return None

    def checkSuffix(self):
        logging.info('Validating plugins ' + self.params['PLUGIN_NAME'])
        if self.params['PLUGIN_NAME'].endswith(self.plugin_ext):
            return True
        
        logging.warning('Invalid Plugins ' + self.params['PLUGIN_NAME'] + '.')
        return False

    def checkPlugins(self):
        if os.path.exists(self.params['PLUGIN_DIR'] + os.path.sep + self.params['PLUGIN_NAME']):
            return True
        
        logging.warning('Plugins ' + self.params['PLUGIN_NAME'] + ' not found.')
        return False

    def loadParameters(self):
        par = parameters.Parameter()
        cfg = par.getParams(self.params['PLUGIN_DIR'] + os.path.sep + self.params['PLUGIN_NAME'])
        return cfg


Download zooappslib module.


About this entry