[GMG-Devel] [PATCH 20/83] Register indices and orm events for search.

Alon Levy alon at pobox.com
Tue Feb 25 14:58:03 EST 2014


From: Praveen Kumar <praveen97uma at gmail.com>

---
 mediagoblin/plugins/search/__init__.py | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/mediagoblin/plugins/search/__init__.py b/mediagoblin/plugins/search/__init__.py
index 8d1e78c..34f5ffc 100644
--- a/mediagoblin/plugins/search/__init__.py
+++ b/mediagoblin/plugins/search/__init__.py
@@ -19,21 +19,36 @@ import logging
 
 from mediagoblin.tools import pluginapi
 
-from mediagoblin.plugins.search import indices
-
-from sqlalchemy import event
 from mediagoblin.db.models import MediaEntry
+from mediagoblin.plugins.search import schemas
+from mediagoblin.plugins.search.base import SearchIndex
+from mediagoblin.plugins.search import registry
+from mediagoblin.plugins.search import listeners
 
 _log = logging.getLogger(__name__)
 
 PLUGIN_DIR = os.path.dirname(__file__)
 
 
-def mediaentry_add_listener(mapper, connection, target):
-    _log.info("Received request for addding mediaentry")
-    _log.info(type(connection))
-    _log.info(target.title)
+def register_indices():
+    media_entry_search_index = SearchIndex(
+        model = MediaEntry,
+        schema = schemas.MediaEntryIndexSchema,
+    )
+
+    registry.IndexRegistry.register(media_entry_search_index)
+    _log.info("Registered %(index_name)s index for %(model_name)s"%({
+        'index_name': media_entry_search_index.__class__.__name__,
+        'model_name': MediaEntry.__name__}))
+
 
+def activate_orm_events_listeners():
+    indices = registry.IndexRegistry.indices()
+    for index_obj in indices.itervalues():
+        listener = listeners.ORMEventsListener(index_obj.model)
+        listener.activate_listeners()
+        registry.ListenerRegistry.register(listener)
+        
 def setup_plugin():
     _log.info('Setting up Search...')
 
@@ -48,7 +63,8 @@ def setup_plugin():
     ]
 
     pluginapi.register_routes(routes)
-    indices.register_indices()
+    register_indices()
+    activate_orm_events_listeners()
     #event.listen(MediaEntry, 'after_insert', mediaentry_add_listener)
     #event.listen(MediaEntry, 'before_insert', mediaentry_before_add_listener)
     #_log.info("Registered listening event") 
-- 
1.8.5.3



More information about the devel mailing list