summaryrefslogtreecommitdiff
path: root/adbh.py
diff options
context:
space:
mode:
authorSylvain <syt@logilab.fr>2007-10-26 14:48:04 +0200
committerSylvain <syt@logilab.fr>2007-10-26 14:48:04 +0200
commita5bd21cfc4facf78c6f5f2a8b45331f52926c437 (patch)
tree9a0655acd5f0f187c91b9a9b2f6aebf174dcc3e6 /adbh.py
parentc671676addcd91a405c9e580c5677be0db159036 (diff)
downloadlogilab-common-a5bd21cfc4facf78c6f5f2a8b45331f52926c437.tar.gz
minor refactorings
Diffstat (limited to 'adbh.py')
-rw-r--r--adbh.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/adbh.py b/adbh.py
index 470f772..eb49af2 100644
--- a/adbh.py
+++ b/adbh.py
@@ -27,7 +27,7 @@ class UnsupportedFunction(BadQuery): pass
class metafunc(type):
def __new__(mcs, name, bases, dict):
- dict['name'] = name
+ dict['name'] = name.upper()
return type.__new__(mcs, name, bases, dict)
@@ -123,6 +123,15 @@ class _GenericAdvFuncHelper:
'UPPER' : 'text',
}
+
+ @classmethod
+ def register_function(cls, funcdef):
+ if isinstance(funcdef, basestring) :
+ funcdef = FunctionDescr(funcdef.upper())
+ assert not funcdef.name in cls.FUNCTIONS, \
+ '%s is already registered' % funcdef.name
+ cls.FUNCTIONS[funcdef.name] = funcdef
+
@classmethod
def function_description(cls, funcname):
"""return the description (`FunctionDescription`) for a RQL function"""
@@ -433,19 +442,14 @@ class _MyAdvFuncHelper(_GenericAdvFuncHelper):
ADV_FUNC_HELPER_DIRECTORY = {'postgres': _PGAdvFuncHelper(),
'sqlite': _SqliteAdvFuncHelper(),
'mysql': _MyAdvFuncHelper(),
- None: _GenericAdvFuncHelper()}
+ }
-def register_function(driver, funcdef):
- if isinstance(funcdef, basestring) :
- funcdef = FunctionDescr(funcdef.upper())
- assert not funcdef.name in FUNCTIONS, \
- '%s is already registered' % funcdef.name
- ADV_FUNC_HELPER_DIRECTORY[driver].FUNCTIONS[funcdef.name] = funcdef
-
-
def get_adv_func_helper(driver):
"""returns an advanced function helper for the given driver"""
- return ADV_FUNC_HELPER_DIRECTORY.get(driver,
- ADV_FUNC_HELPER_DIRECTORY[None])
+ return ADV_FUNC_HELPER_DIRECTORY[driver]
+
+def register_function(driver, funcdef):
+ ADV_FUNC_HELPER_DIRECTORY[driver].register_function(funcdef)
+