diff --git a/requirements.txt b/requirements.txt index 1ef5efc..a32d11d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,6 +14,7 @@ johnny-cache lxml psycopg2 Pygments +pysolr python-memcached python-postmark pyyaml @@ -22,5 +23,6 @@ uuid versiontools Werkzeug +git+https://github.com/toastdriven/django-haystack.git@master#egg=django-haystack hg+https://bitbucket.org/ubernostrum/django-registration#egg=django-registration git+https://github.com/toastdriven/django-tastypie.git#egg=django-tastypie diff --git a/settings.py b/settings.py index cafb303..cf72503 100644 --- a/settings.py +++ b/settings.py @@ -143,6 +143,7 @@ INSTALLED_APPS = ( 'compressor', 'django_bcrypt', + 'haystack', 'pagination', 'postmark', 'registration', @@ -234,6 +235,14 @@ COMPRESS_PRECOMPILERS = ( ('text/x-scss', 'sass --scss {infile} {outfile}'), ) +# Search +HAYSTACK_CONNECTIONS = { + 'default': { + 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', + 'URL': 'http://127.0.0.1:8983/solr' + }, +} + # Extensions if DEBUG: INSTALLED_APPS += ('django_extensions',) diff --git a/snipts/search_indexes.py b/snipts/search_indexes.py new file mode 100644 index 0000000..8c88bf9 --- /dev/null +++ b/snipts/search_indexes.py @@ -0,0 +1,18 @@ +import datetime +from haystack import indexes +from snipts.models import Snipt + + +class SniptIndex(indexes.RealTimeSearchIndex, indexes.Indexable): + text = indexes.CharField(document=True, use_template=True) + author = indexes.CharField(model_attr='user') + pub_date = indexes.DateTimeField(model_attr='created') + public = indexes.BooleanField(model_attr='public') + typ = indexes.CharField(model_attr='lexer') + + def get_model(self): + return Snipt + + def index_queryset(self): + """Used when the entire index for model is updated.""" + return self.get_model().objects.filter(created__lte=datetime.datetime.now()) diff --git a/templates/search/indexes/snipts/snipt_text.txt b/templates/search/indexes/snipts/snipt_text.txt new file mode 100644 index 0000000..8ba4c6d --- /dev/null +++ b/templates/search/indexes/snipts/snipt_text.txt @@ -0,0 +1,5 @@ +{{ object.title }} +{{ object.user.username }} +{{ object.tags_list }} +{{ object.lexer }} +{{ object.code }} diff --git a/templates/search/search.html b/templates/search/search.html new file mode 100644 index 0000000..566f1c4 --- /dev/null +++ b/templates/search/search.html @@ -0,0 +1,39 @@ +{% extends 'base.html' %} + +{% block content %} +