From e41c7f904ca7dae98959866948534bcf1b6143d3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Thu, 26 Jun 2014 22:08:20 +0200 Subject: [PATCH] [Search] create mygpo.search app --- mygpo/search/__init__.py | 1 + mygpo/search/admin.py | 3 +++ mygpo/search/apps.py | 13 +++++++++++ mygpo/search/index.py | 27 ++++++++++++++++++++++ mygpo/search/management/__init__.py | 0 mygpo/search/management/commands/__init__.py | 0 .../search/management/commands/create-es-index.py | 16 +++++++++++++ mygpo/search/migrations/__init__.py | 0 mygpo/search/models.py | 3 +++ mygpo/search/tests.py | 3 +++ mygpo/search/views.py | 3 +++ mygpo/settings.py | 7 ++++++ 12 files changed, 76 insertions(+) create mode 100644 mygpo/search/__init__.py create mode 100644 mygpo/search/admin.py create mode 100644 mygpo/search/apps.py create mode 100644 mygpo/search/index.py create mode 100644 mygpo/search/management/__init__.py create mode 100644 mygpo/search/management/commands/__init__.py create mode 100644 mygpo/search/management/commands/create-es-index.py create mode 100644 mygpo/search/migrations/__init__.py create mode 100644 mygpo/search/models.py create mode 100644 mygpo/search/tests.py create mode 100644 mygpo/search/views.py diff --git a/mygpo/search/__init__.py b/mygpo/search/__init__.py new file mode 100644 index 00000000..ca123f8f --- /dev/null +++ b/mygpo/search/__init__.py @@ -0,0 +1 @@ +default_app_config = 'mygpo.search.apps.SearchConfig' diff --git a/mygpo/search/admin.py b/mygpo/search/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/mygpo/search/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/mygpo/search/apps.py b/mygpo/search/apps.py new file mode 100644 index 00000000..b8c108fe --- /dev/null +++ b/mygpo/search/apps.py @@ -0,0 +1,13 @@ +from django.apps import AppConfig +from django.db.models.signals import post_save + +from mygpo.podcasts.models import Podcast +from mygpo.search.index import index_podcast + + +class SearchConfig(AppConfig): + name = 'mygpo.search' + verbose_name = 'Search' + + def ready(self): + post_save.connect(index_podcast, sender=Podcast) diff --git a/mygpo/search/index.py b/mygpo/search/index.py new file mode 100644 index 00000000..fd11acf5 --- /dev/null +++ b/mygpo/search/index.py @@ -0,0 +1,27 @@ + +""" Contains code for indexing other objects """ + +from pyes import ES +from pyes.exceptions import IndexAlreadyExistsException + +from django.conf import settings + +import logging +logger = logging.getLogger(__name__) + + +def index_podcast(sender, **kwargs): + print kwargs + + +def create_index(): + """ Creates the Elasticsearch index """ + conn = ES(settings.ELASTICSEARCH_SERVER) + + logger.info('Creating index %s' % settings.ELASTICSEARCH_INDEX) + try: + conn.indices.create_index(settings.ELASTICSEARCH_INDEX) + + except IndexAlreadyExistsException as ex: + logger.info(str(ex)) + diff --git a/mygpo/search/management/__init__.py b/mygpo/search/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mygpo/search/management/commands/__init__.py b/mygpo/search/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mygpo/search/management/commands/create-es-index.py b/mygpo/search/management/commands/create-es-index.py new file mode 100644 index 00000000..6337c469 --- /dev/null +++ b/mygpo/search/management/commands/create-es-index.py @@ -0,0 +1,16 @@ + +""" Create the Elasticsearch index """ + +import sys + +from django.core.management.base import BaseCommand + +from mygpo.search.index import create_index + + +class Command(BaseCommand): + + help = sys.modules[__name__].__doc__ + + def handle(self, *args, **options): + create_index() diff --git a/mygpo/search/migrations/__init__.py b/mygpo/search/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mygpo/search/models.py b/mygpo/search/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/mygpo/search/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/mygpo/search/tests.py b/mygpo/search/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/mygpo/search/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/mygpo/search/views.py b/mygpo/search/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/mygpo/search/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/mygpo/settings.py b/mygpo/settings.py index 10aa5a86..cabf188d 100644 --- a/mygpo/settings.py +++ b/mygpo/settings.py @@ -148,6 +148,7 @@ INSTALLED_APPS = ( 'djcelery', 'mygpo.core', 'mygpo.podcasts', + 'mygpo.search', 'mygpo.users', 'mygpo.api', 'mygpo.web', @@ -328,6 +329,12 @@ GOOGLE_CLIENT_SECRET='' SUPPORT_URL='' +# Elasticsearch settings + +ELASTICSEARCH_SERVER = os.getenv('ELASTICSEARCH_SERVER', '127.0.0.1:9200') +ELASTICSEARCH_INDEX = os.getenv('ELASTICSEARCH_INDEX', 'mygpo') + + import sys if 'test' in sys.argv: SECRET_KEY = 'test' -- 2.11.4.GIT