From eca91d490aa5a6e58939ebbc6d708b16fc08a555 Mon Sep 17 00:00:00 2001 From: Kerin Cosford Date: Tue, 23 Nov 2010 23:09:28 +0000 Subject: [PATCH 1/2] Handling django 1.2 style DB params --- djangosphinx/utils/config.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/djangosphinx/utils/config.py b/djangosphinx/utils/config.py index 24a1907..7ed048f 100644 --- a/djangosphinx/utils/config.py +++ b/djangosphinx/utils/config.py @@ -11,9 +11,9 @@ __all__ = ('generate_config_for_model', 'generate_config_for_models') def _get_database_engine(): - if settings.DATABASE_ENGINE == 'mysql': - return settings.DATABASE_ENGINE - elif settings.DATABASE_ENGINE.startswith('postgresql'): + if 'mysql' in settings.DATABASES['default']['ENGINE']: + return 'mysql' + elif 'postgresql' in settings.DATABASES['default']['ENGINE']: return 'pgsql' raise ValueError, "Only MySQL and PostgreSQL engines are supported by Sphinx." @@ -49,11 +49,11 @@ def _is_sourcable_field(field): # No trailing slashes on paths DEFAULT_SPHINX_PARAMS = { 'database_engine': _get_database_engine(), - 'database_host': settings.DATABASE_HOST, - 'database_port': settings.DATABASE_PORT, - 'database_name': settings.DATABASE_NAME, - 'database_user': settings.DATABASE_USER, - 'database_password': settings.DATABASE_PASSWORD, + 'database_host': settings.DATABASES['default']['HOST'], + 'database_port': settings.DATABASES['default']['PORT'], + 'database_name': settings.DATABASES['default']['NAME'], + 'database_user': settings.DATABASES['default']['USER'], + 'database_password': settings.DATABASES['default']['PASSWORD'], 'log_file': '/var/log/sphinx/searchd.log', 'data_path': '/var/data', } @@ -188,4 +188,4 @@ def _the_tuple(f): c = Context(params) - return t.render(c) \ No newline at end of file + return t.render(c) From 1c5ef8abcf86f9a9458f763ceb9e5d882247ea37 Mon Sep 17 00:00:00 2001 From: Kerin Cosford Date: Wed, 1 Dec 2010 00:08:48 +0000 Subject: [PATCH 2/2] Now compatible with both django 1.2 and <1.2 -style database settings. --- djangosphinx/utils/config.py | 50 ++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/djangosphinx/utils/config.py b/djangosphinx/utils/config.py index 7ed048f..bad5445 100644 --- a/djangosphinx/utils/config.py +++ b/djangosphinx/utils/config.py @@ -1,3 +1,4 @@ +import django from django.conf import settings from django.template import Template, Context @@ -10,11 +11,19 @@ __all__ = ('generate_config_for_model', 'generate_config_for_models') +DJANGO_MINOR_VERSION = float(".".join([str(django.VERSION[0]), str(django.VERSION[1])])) + def _get_database_engine(): - if 'mysql' in settings.DATABASES['default']['ENGINE']: - return 'mysql' - elif 'postgresql' in settings.DATABASES['default']['ENGINE']: - return 'pgsql' + if DJANGO_MINOR_VERSION < 1.2: + if settings.DATABASE_ENGINE == 'mysql': + return settings.DATABASE_ENGINE + elif settings.DATABASE_ENGINE.startswith('postgresql'): + return 'pgsql' + else: + if 'mysql' in settings.DATABASES['default']['ENGINE']: + return 'mysql' + elif 'postgresql' in settings.DATABASES['default']['ENGINE']: + return 'pgsql' raise ValueError, "Only MySQL and PostgreSQL engines are supported by Sphinx." def _get_template(name): @@ -47,16 +56,29 @@ def _is_sourcable_field(field): return False # No trailing slashes on paths -DEFAULT_SPHINX_PARAMS = { - 'database_engine': _get_database_engine(), - 'database_host': settings.DATABASES['default']['HOST'], - 'database_port': settings.DATABASES['default']['PORT'], - 'database_name': settings.DATABASES['default']['NAME'], - 'database_user': settings.DATABASES['default']['USER'], - 'database_password': settings.DATABASES['default']['PASSWORD'], - 'log_file': '/var/log/sphinx/searchd.log', - 'data_path': '/var/data', -} + +if DJANGO_MINOR_VERSION < 1.2: + DEFAULT_SPHINX_PARAMS = { + 'database_engine': _get_database_engine(), + 'database_host': settings.DATABASE_HOST, + 'database_port': settings.DATABASE_PORT, + 'database_name': settings.DATABASE_NAME, + 'database_user': settings.DATABASE_USER, + 'database_password': settings.DATABASE_PASSWORD, + 'log_file': '/var/log/sphinx/searchd.log', + 'data_path': '/var/data', + } +else: + DEFAULT_SPHINX_PARAMS = { + 'database_engine': _get_database_engine(), + 'database_host': settings.DATABASES['default']['HOST'], + 'database_port': settings.DATABASES['default']['PORT'], + 'database_name': settings.DATABASES['default']['NAME'], + 'database_user': settings.DATABASES['default']['USER'], + 'database_password': settings.DATABASES['default']['PASSWORD'], + 'log_file': '/var/log/sphinx/searchd.log', + 'data_path': '/var/data', + } def get_index_context(index): params = DEFAULT_SPHINX_PARAMS