From: <la...@us...> - 2008-02-29 14:34:09
|
Revision: 7048 http://translate.svn.sourceforge.net/translate/?rev=7048&view=rev Author: larskr Date: 2008-02-29 06:33:58 -0800 (Fri, 29 Feb 2008) Log Message: ----------- add a module function "is_available" to allow disabling of interfaces Modified Paths: -------------- src/branches/translate-search-indexer-generic/translate/search/indexer/CommonIndexer.py src/branches/translate-search-indexer-generic/translate/search/indexer/PyLuceneIndexer.py src/branches/translate-search-indexer-generic/translate/search/indexer/PyLuceneIndexer1.py src/branches/translate-search-indexer-generic/translate/search/indexer/XapianIndexer.py src/branches/translate-search-indexer-generic/translate/search/indexer/__init__.py Modified: src/branches/translate-search-indexer-generic/translate/search/indexer/CommonIndexer.py =================================================================== --- src/branches/translate-search-indexer-generic/translate/search/indexer/CommonIndexer.py 2008-02-29 13:08:37 UTC (rev 7047) +++ src/branches/translate-search-indexer-generic/translate/search/indexer/CommonIndexer.py 2008-02-29 14:33:58 UTC (rev 7048) @@ -5,6 +5,18 @@ __revision__ = "$Id$" +def is_available(): + """check if this indexing engine interface is usable + + this function must exist in every module that contains indexing engine + interfaces + + @return: is this interface usable? + @rtype: bool + """ + return False + + class CommonDatabase(object): """base class for indexing support Modified: src/branches/translate-search-indexer-generic/translate/search/indexer/PyLuceneIndexer.py =================================================================== --- src/branches/translate-search-indexer-generic/translate/search/indexer/PyLuceneIndexer.py 2008-02-29 13:08:37 UTC (rev 7047) +++ src/branches/translate-search-indexer-generic/translate/search/indexer/PyLuceneIndexer.py 2008-02-29 14:33:58 UTC (rev 7048) @@ -20,6 +20,10 @@ MAX_FIELD_SIZE = 1048576 +def is_available(): + return _get_pylucene_version() == 2 + + class PyLuceneDatabase(CommonIndexer.CommonDatabase): """manage and use a pylucene indexing database""" @@ -428,3 +432,17 @@ # and prohibited return None +def _get_pylucene_version(): + """get the installed pylucene version + + @return: 1 -> PyLucene v1.x / 2 -> PyLucene v2.x / 0 -> unknown + @rtype: int + """ + version = PyLucene.LUCENE_VERSION + if version.startswith("1."): + return 1 + elif version.startswith("2."): + return 2 + else: + return 0 + Modified: src/branches/translate-search-indexer-generic/translate/search/indexer/PyLuceneIndexer1.py =================================================================== --- src/branches/translate-search-indexer-generic/translate/search/indexer/PyLuceneIndexer1.py 2008-02-29 13:08:37 UTC (rev 7047) +++ src/branches/translate-search-indexer-generic/translate/search/indexer/PyLuceneIndexer1.py 2008-02-29 14:33:58 UTC (rev 7048) @@ -11,6 +11,10 @@ import PyLucene +def is_available(): + return PyLuceneIndexer._get_pylucene_version() == 1 + + class PyLuceneDatabase(PyLuceneIndexer.PyLuceneDatabase): """manage and use a pylucene indexing database""" Modified: src/branches/translate-search-indexer-generic/translate/search/indexer/XapianIndexer.py =================================================================== --- src/branches/translate-search-indexer-generic/translate/search/indexer/XapianIndexer.py 2008-02-29 13:08:37 UTC (rev 7047) +++ src/branches/translate-search-indexer-generic/translate/search/indexer/XapianIndexer.py 2008-02-29 14:33:58 UTC (rev 7048) @@ -11,6 +11,10 @@ import re +def is_available(): + return True + + # in xapian there is a length restriction for term strings # see http://osdir.com/ml/search.xapian.general/2006-11/msg00210.html # a maximum length of around 240 is described there - but we need less anyway Modified: src/branches/translate-search-indexer-generic/translate/search/indexer/__init__.py =================================================================== --- src/branches/translate-search-indexer-generic/translate/search/indexer/__init__.py 2008-02-29 13:08:37 UTC (rev 7047) +++ src/branches/translate-search-indexer-generic/translate/search/indexer/__init__.py 2008-02-29 14:33:58 UTC (rev 7048) @@ -39,6 +39,11 @@ except ImportError: # maybe it is unusable or dependencies are missing continue + # the module function "is_available" must return "True" + if not (hasattr(module, "is_available") and \ + callable(module.is_available) and \ + module.is_available()): + continue for item in dir(module): try: element = getattr(module, item) @@ -50,6 +55,7 @@ if issubclass(element, CommonIndexer.CommonDatabase) \ and not element is CommonIndexer.CommonDatabase: # TODO: debug - "[Indexer]: indexing engine found in '%s': %s" % (mod_path, element) + # the interface is ok result.append(element) except TypeError: # 'element' is not a class This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |