示例#1
0
文件: sql.py 项目: bigwheel/zaffy
 def load_module(cls):
   global _drivers
   modules, errors = load_module_dir(path.join("actions", "sqldrivers"))
   for module in modules:
     klass = getattr(module, module.__name__.title())
     _drivers[module.__name__] = klass()
   return modules, errors
示例#2
0
 def load_actions(self):
   module_list = load_module_dir("actions")
   for module in module_list:
     module_name = module.__name__
     action_klass = getattr(module, module_name.title())
     if not issubclass(action_klass, BaseAction):
       # BaseAction クラスを継承していないクラスがあったらエラー
       raise Exception(module_name.title() + " class must extend BaseAction")
     self.action_klasses[module_name] = action_klass
示例#3
0
 def load_actions(self):
     module_list, self.load_error_list = load_module_dir("actions")
     for module in module_list:
         # action に使いたいモジュール名がすでに使われている場合にprefixに "_" を付ける
         module_name = module.__name__.lstrip("_")
         action_klass = getattr(module, module_name.title())
         if not issubclass(action_klass, BaseAction):
             # BaseAction クラスを継承していないクラスがあったらエラー
             raise Exception(module_name.title() + " class must extend BaseAction")
         self.action_klasses[module_name] = action_klass
示例#4
0
文件: template.py 项目: deflis/zaffy
def add_plugin(plugin_dict, custom_plugin_dir, prefix=""):
  plugins, error_list = load_module_dir(custom_plugin_dir)
  for module in plugins:
    name_list = [name for name in dir(module) if name.startswith(prefix) and len(name) > len(prefix)]
    overridable = getattr(module, prefix + "override", [])
    for name in name_list:
      obj = getattr(module, name)
      if callable(obj):
        plugin_name = name[len(prefix):]
        if plugin_name in plugin_dict and name not in overridable:
          raise Exception(name + " is already defined")
        plugin_dict[plugin_name] = obj
示例#5
0
  def load_actions(self):
    module_list, error = load_module_dir("actions")
    for module in module_list:
      # action に使いたいモジュール名がすでに使われている場合にprefixに "_" を付ける
      module_name = module.__name__.lstrip('_')
      action_klass = getattr(module, module_name.title())
      if not issubclass(action_klass, BaseAction):
        # BaseAction クラスを継承していないクラスがあったらエラー
        raise Exception(module_name.title() + " class must extend BaseAction")
      modules, errors = type.__getattribute__(action_klass, 'load_module')()
      if errors:
        error.extend(errors)
      self.action_klasses[module_name] = action_klass

    if error:
      raise error
示例#6
0
def add_plugin(plugin_dict, custom_plugin_dir, prefix=""):
  plugins = load_module_dir(custom_plugin_dir)
  other_info_list = []
  for module in plugins:
    name_list = [name for name in dir(module) if name.startswith(prefix) and len(name) > len(prefix)]
    overridable = getattr(module, prefix + "override", [])
    for name in name_list:
      info = {}
      obj = getattr(module, name)
      if callable(obj):
        plugin_name = name[len(prefix):]
        if plugin_name in plugin_dict and name not in overridable:
          raise Exception(name + " is already defined")
        plugin_dict[plugin_name] = obj
      else:
        info[name] = obj
    other_info_list.append(info)
  return other_info_list
示例#7
0
文件: sql.py 项目: deflis/zaffy
# -*- coding: utf-8 -*-
from os import path
from baseaction import BaseAction
from moduleloader import load_module_dir

drivers = {}
modules, errors = load_module_dir(path.join("actions", "sqldrivers"))
for module in modules:
  klass = getattr(module, module.__name__.title())
  drivers[module.__name__] = klass()

class Sql(BaseAction):

  DEFAULT_PORT = 3306

  def do_select(self, driver, host, db, user, password, sql, port=DEFAULT_PORT):
    driver = drivers[driver]
    conn = driver.connect(host=host, port=port, db=db,
        user=user, password=password)
    cursor = conn.cursor()

    self.result["rowcount"] = cursor.execute(sql)
    self.result["rows"] = [list(row) for row in cursor.fetchall()]

    cursor.close()

    # connectionManager的なのを作ったら個別のcloseはしない
    conn.close()

  def do_selectdict(self, driver, host, db, user, password, sql, port=DEFAULT_PORT):
    driver = drivers[driver]
示例#8
0
文件: sql.py 项目: tkzwtks/zaffy
 def setup(cls, config):
   global drivers
   modules, errors = load_module_dir(path.join("actions", "sqldrivers"))
   for module in modules:
     klass = getattr(module, module.__name__.title())
     drivers[module.__name__] = klass()