Author: tack
Date: Sun Sep 16 20:15:09 2007
New Revision: 2826

Log:
Sync to kaa.db changes


Modified:
   trunk/beacon/src/__init__.py
   trunk/beacon/src/client.py
   trunk/beacon/src/server/db.py
   trunk/beacon/src/server/server.py

Modified: trunk/beacon/src/__init__.py
==============================================================================
--- trunk/beacon/src/__init__.py        (original)
+++ trunk/beacon/src/__init__.py        Sun Sep 16 20:15:09 2007
@@ -49,8 +49,7 @@
 from query import register_filter, wrap, Query
 from item import Item
 from media import medialist as media
-from kaa.db import QExpr, ATTR_SIMPLE, ATTR_SEARCHABLE, ATTR_IGNORE_CASE, \
-     ATTR_INDEXED, ATTR_INDEXED_IGNORE_CASE, ATTR_KEYWORDS
+from kaa.db import *
 
 # get logging object
 log = logging.getLogger('beacon')

Modified: trunk/beacon/src/client.py
==============================================================================
--- trunk/beacon/src/client.py  (original)
+++ trunk/beacon/src/client.py  Sun Sep 16 20:15:09 2007
@@ -164,6 +164,14 @@
             self.rpc('monitor.directory', directory)
 
 
+    def register_inverted_index(self, name, *args, **kwargs):
+        """
+        Register new inverted index.
+        """
+        if self.status != DISCONNECTED:
+            self.rpc('db.register_inverted_index', name, *args, **kwargs)
+
+
     def register_file_type_attrs(self, name, **kwargs):
         """
         Register new attrs and types for files.

Modified: trunk/beacon/src/server/db.py
==============================================================================
--- trunk/beacon/src/server/db.py       (original)
+++ trunk/beacon/src/server/db.py       Sun Sep 16 20:15:09 2007
@@ -123,26 +123,27 @@
         self.read_lock.signals['lock'].connect_weak(self.commit)
 
         # register basic types
-        self._db.register_object_type_attrs("dir",
+        self._db.register_inverted_index('keywords', min = 2, max = 30)
+        self._db.register_object_type_attrs('dir',
             # This multi-column index optimizes queries on (name,parent) which
             # is done for every object add/update, so must be fast. All
             # object types will have this combined index.
-            [("name", "parent_type", "parent_id")],
-            name = (str, ATTR_KEYWORDS),
+            [('name', 'parent_type', 'parent_id')],
+            name = (str, ATTR_SEARCHABLE | ATTR_INVERTED_INDEX, 'keywords', 
db.split_path),
             overlay = (bool, ATTR_SIMPLE),
-            media = (int, ATTR_INDEXED),
+            media = (int, ATTR_SEARCHABLE | ATTR_INDEXED),
             mtime = (int, ATTR_SIMPLE))
 
-        self._db.register_object_type_attrs("file",
-            [("name", "parent_type", "parent_id")],
-            name = (str, ATTR_KEYWORDS),
+        self._db.register_object_type_attrs('file',
+            [('name', 'parent_type', 'parent_id')],
+            name = (str, ATTR_SEARCHABLE | ATTR_INVERTED_INDEX, 'keywords', 
db.split_path),
             overlay = (bool, ATTR_SIMPLE),
-            media = (int, ATTR_INDEXED),
+            media = (int, ATTR_SEARCHABLE | ATTR_INDEXED),
             mtime = (int, ATTR_SIMPLE))
 
-        self._db.register_object_type_attrs("media",
-            [("name", "parent_type", "parent_id")],
-            name = (str, ATTR_KEYWORDS),
+        self._db.register_object_type_attrs('media',
+            [('name', 'parent_type', 'parent_id')],
+            name = (str, ATTR_SEARCHABLE | ATTR_INVERTED_INDEX, 'keywords', 
db.split_path),
             content = (str, ATTR_SIMPLE))
 
         # commit
@@ -261,15 +262,22 @@
         return metadata
 
 
+    def register_inverted_index(self, name, *args, **kwargs):
+        """
+        Register a new inverted index with the database.
+        """
+        return self._db.register_inverted_index(name, *args, **kwargs)
+
+
     def register_object_type_attrs(self, type, *args, **kwargs):
         """
         Register a new object with attributes. Special keywords like name and
         mtime are added by default.
         """
-        kwargs['name'] = (str, ATTR_KEYWORDS)
+        kwargs['name'] = (str, ATTR_SEARCHABLE | ATTR_INVERTED_INDEX, 
'keywords', db.split_path)
         # TODO: mtime may not e needed for subitems like tracks
         kwargs['overlay'] = (bool, ATTR_SIMPLE)
-        kwargs['media'] = (int, ATTR_INDEXED)
+        kwargs['media'] = (int, ATTR_SEARCHABLE | ATTR_INDEXED)
         if not type.startswith('track_'):
             kwargs['mtime'] = (int, ATTR_SIMPLE)
             kwargs['image'] = (str, ATTR_SIMPLE)

Modified: trunk/beacon/src/server/server.py
==============================================================================
--- trunk/beacon/src/server/server.py   (original)
+++ trunk/beacon/src/server/server.py   Sun Sep 16 20:15:09 2007
@@ -78,6 +78,8 @@
         self._db = Database(dbdir)
         self._next_client = 0
 
+        self._db.register_inverted_index('keywords', min = 2, max = 30)
+
         self._db.register_object_type_attrs("dir",
             image_from_items = (bool, ATTR_SIMPLE),
             title = (unicode, ATTR_SIMPLE),
@@ -88,7 +90,7 @@
         # files
 
         self.register_file_type_attrs("video",
-            title = (unicode, ATTR_KEYWORDS | ATTR_IGNORE_CASE),
+            title = (unicode, ATTR_SEARCHABLE | ATTR_IGNORE_CASE | 
ATTR_INVERTED_INDEX, 'keywords'),
             width = (int, ATTR_SIMPLE),
             height = (int, ATTR_SIMPLE),
             length = (float, ATTR_SIMPLE),
@@ -96,10 +98,10 @@
             timestamp = (int, ATTR_SEARCHABLE))
 
         self.register_file_type_attrs("audio",
-            title = (unicode, ATTR_KEYWORDS | ATTR_IGNORE_CASE),
-            artist = (unicode, ATTR_KEYWORDS | ATTR_INDEXED | 
ATTR_IGNORE_CASE),
-            album = (unicode, ATTR_KEYWORDS | ATTR_IGNORE_CASE),
-            genre = (unicode, ATTR_INDEXED | ATTR_IGNORE_CASE),
+            title = (unicode, ATTR_SEARCHABLE | ATTR_IGNORE_CASE | 
ATTR_INVERTED_INDEX, 'keywords'),
+            artist = (unicode, ATTR_SEARCHABLE | ATTR_INDEXED | 
ATTR_IGNORE_CASE | ATTR_INVERTED_INDEX, 'keywords'),
+            album = (unicode, ATTR_SEARCHABLE | ATTR_IGNORE_CASE | 
ATTR_INVERTED_INDEX, 'keywords'),
+            genre = (unicode, ATTR_SEARCHABLE | ATTR_INDEXED | 
ATTR_IGNORE_CASE),
             samplerate = (int, ATTR_SIMPLE),
             length = (float, ATTR_SIMPLE),
             bitrate = (int, ATTR_SIMPLE),
@@ -110,7 +112,7 @@
         self.register_file_type_attrs("image",
             width = (int, ATTR_SEARCHABLE),
             height = (int, ATTR_SEARCHABLE),
-            comment = (unicode, ATTR_KEYWORDS | ATTR_IGNORE_CASE),
+            comment = (unicode, ATTR_SEARCHABLE | ATTR_IGNORE_CASE | 
ATTR_INVERTED_INDEX, 'keywords'),
             rotation = (int, ATTR_SIMPLE),
             author = (unicode, ATTR_SIMPLE),
             timestamp = (int, ATTR_SEARCHABLE))
@@ -127,8 +129,8 @@
             audio = (list, ATTR_SIMPLE))
 
         self.register_track_type_attrs("cdda",
-            title = (unicode, ATTR_KEYWORDS),
-            artist = (unicode, ATTR_KEYWORDS | ATTR_INDEXED))
+            title = (unicode, ATTR_SEARCHABLE | ATTR_INVERTED_INDEX, 
'keywords'),
+            artist = (unicode, ATTR_SEARCHABLE | ATTR_INDEXED | 
ATTR_INVERTED_INDEX, 'keywords'))
 
         # list of current clients
         self._clients = []
@@ -240,6 +242,15 @@
     # client RPC API
     # -------------------------------------------------------------
 
+    @kaa.rpc.expose('db.register_inverted_index')
+    def register_inverted_index(self, name, *args, **kwargs):
+        """
+        Register new inverted index. The basics are already in the db by the
+        __init__ function of this class.
+        """
+        return self._db.register_inverted_index(name, *args, **kwargs)
+
+
     @kaa.rpc.expose('db.register_file_type_attrs')
     def register_file_type_attrs(self, name, **kwargs):
         """

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to