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