moksha/connector/connector.py | 26 ++++++++++++++++----------
moksha/public/javascript/moksha.js | 12 +++++++++---
2 files changed, 25 insertions(+), 13 deletions(-)
New commits:
commit 6ec826cb9e92c48e5a147c09cca7f77ddb455178
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Mon Apr 13 14:39:21 2009 -0400
rename regitser_path to register query, add the ability to register methods
diff --git a/moksha/connector/connector.py b/moksha/connector/connector.py
index cf07645..dcb6bd7 100644
--- a/moksha/connector/connector.py
+++ b/moksha/connector/connector.py
@@ -38,6 +38,7 @@ class IConnector(object):
All connectors must derive from this interface
"""
+ _method_paths = {}
def __init__(self, environ=None, request=None):
super(IConnector, self).__init__()
@@ -53,6 +54,10 @@ class IConnector(object):
"""
raise NotImplementedError
+ @classmethod
+ def register_method(self, method_path, method):
+ cls._method_paths[method_path] = method
+
def _dispatch(self, op, resource_path, params, _cookies = None, **kwds):
""" This method is for dispatching to the correct interface which
is mostly used by the connector engine
@@ -73,9 +78,10 @@ class IConnector(object):
the results of the operation requested
"""
- # TODO: devise a way to mark off methods which can be dispatched to
if op in ('request_data', 'call', 'query',
'query_model'):
return getattr(self, op)(resource_path, params, _cookies, **kwds)
+ elif op in self._method_paths:
+ _method_paths[op](params, resource_path, _cookies, **kwds)
return None
@@ -173,7 +179,7 @@ class IQuery(object):
methods for more information.
"""
- _paths = {}
+ _query_paths = {}
def query(self, resource_path, params, _cookies,
start_row = 0,
@@ -272,10 +278,10 @@ class IQuery(object):
:Returns:
The path's model
"""
- return self._paths[resource_path];
+ return self._query_paths[resource_path];
@classmethod
- def register_path(cls,
+ def register_query(cls,
path,
query_func,
primary_key_col = None,
@@ -290,21 +296,21 @@ class IQuery(object):
default_sort_order = default_sort_order,
can_paginate = can_paginate)
- cls._paths[path] = qpath
+ cls._query_paths[path] = qpath
return qpath
def get_capabilities(self):
- return self._paths
+ return self._query_paths
def get_default_sort_order(self, path):
- p = self._paths.get(path)
+ p = self._query_paths.get(path)
if p:
return p['default_sort_order']
return None
def get_default_sort_col(self, path):
- p = self._paths.get(path)
+ p = self._query_paths.get(path)
if p:
return p['default_sort_col']
@@ -343,7 +349,7 @@ class ISearch(IQuery):
**params):
s = WeightedSearch(lambda search_term: search_func(conn, search_term),
- cls._paths[path]['columns'],
+ cls._query_paths[path]['columns'],
cls._search_cache)
search_string = cls.filters.filter(filters).get('search')
results = s.search(search_string)
@@ -351,7 +357,7 @@ class ISearch(IQuery):
return (len(results), results[start_row:start_row + rows_per_page])
- qpath = cls.register_path(path = path,
+ qpath = cls.register_query(path = path,
query_func = query_func,
primary_key_col = primary_key_col,
default_sort_col = default_sort_col,
diff --git a/moksha/public/javascript/moksha.js b/moksha/public/javascript/moksha.js
index 4fcee4c..d6e8271 100644
--- a/moksha/public/javascript/moksha.js
+++ b/moksha/public/javascript/moksha.js
@@ -276,16 +276,22 @@ moksha = {
return uri;
},
+ connector_load: function(resource, method, params, callback, $overlay_div,
loading_icon) {
+ var path = moksha.url('/moksha_connector/' + resource + '/' +
method);
+
+ return moksha.json_load(path, params, callback, $overlay_div, loading_icon);
+ },
+
json_load: function(path, params, callback, $overlay_div, loading_icon) {
- return moksha.ajax_load(path, params, callback, $overlay_div, 'json',
loading_icon)
+ return moksha.ajax_load(path, params, callback, $overlay_div, 'json',
loading_icon);
},
xml_load: function(path, params, callback, $overlay_div, loading_icon) {
- return moksha.ajax_load(path, params, callback, $overlay_div, 'xml',
loading_icon)
+ return moksha.ajax_load(path, params, callback, $overlay_div, 'xml',
loading_icon);
},
html_load: function(path, params, callback, $overlay_div, loading_icon) {
- return moksha.ajax_load(path, params, callback, $overlay_div, 'html',
loading_icon)
+ return moksha.ajax_load(path, params, callback, $overlay_div, 'html',
loading_icon);
},
ajax_load: function(path, params, callback, $overlay_div, data_type, loading_icon) {