# HG changeset patch # User Harris Baptiste # Date 1470403969 -7200 # Node ID eeb3541b343b8785674449e866773f36f6143bd2 # Parent 3c4150867fe7497fc0906aa8c43a9b2721e152ae search engine diff -r 3c4150867fe7 -r eeb3541b343b src/iconolab/search_indexes.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/iconolab/search_indexes.py Fri Aug 05 15:32:49 2016 +0200 @@ -0,0 +1,24 @@ +import datetime +from haystack import indexes +from iconolab.models import Annotation + + +class AnnotationIndex(indexes.SearchIndex, indexes.Indexable): + + ##indexed field + text = indexes.CharField(document=True, use_template=True) + + title = indexes.CharField(model_attr='current_revision__title') + description = indexes.CharField(model_attr='current_revision__description') + tags = indexes.MultiValueField() + + ## tags + def get_model(self): + return Annotation + + def prepare_tags(self, annotation): + return ["toto", "titi", "sesl"] + + + def index_queryset(self, using=None): + return self.get_model().objects.filter(created__lte=datetime.datetime.now()).distinct('current_revision_id'); \ No newline at end of file diff -r 3c4150867fe7 -r eeb3541b343b src/iconolab/settings/__init__.py --- a/src/iconolab/settings/__init__.py Fri Aug 05 15:19:47 2016 +0200 +++ b/src/iconolab/settings/__init__.py Fri Aug 05 15:32:49 2016 +0200 @@ -56,6 +56,7 @@ 'django.contrib.sites', 'django_comments', 'django_comments_xtd', + 'haystack', 'iconolab.apps.IconolabApp', 'sorl.thumbnail', 'notifications' diff -r 3c4150867fe7 -r eeb3541b343b src/iconolab/static/iconolab/js/iconolab-bundle/webpack.config.js --- a/src/iconolab/static/iconolab/js/iconolab-bundle/webpack.config.js Fri Aug 05 15:19:47 2016 +0200 +++ b/src/iconolab/static/iconolab/js/iconolab-bundle/webpack.config.js Fri Aug 05 15:32:49 2016 +0200 @@ -18,8 +18,11 @@ }, { test: /\.js$/, - loader: 'babel', - exclude: /node_modules/, + loader: 'babel-loader', + //exclude: /node_modules/, + query: { + presets: ['es2015'] + }, "plugins": ["transform-es2015-shorthand-properties"] }, { @@ -53,8 +56,7 @@ }), new webpack.optimize.UglifyJsPlugin({ compress: { - warnings: false, - minimize: true + warnings: false } }), new webpack.optimize.OccurenceOrderPlugin() diff -r 3c4150867fe7 -r eeb3541b343b src/iconolab/templates/search/indexes/iconolab/annotation_text.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/iconolab/templates/search/indexes/iconolab/annotation_text.txt Fri Aug 05 15:32:49 2016 +0200 @@ -0,0 +1,4 @@ +{{ object.current_revision.title }} + +{{ object.current_revision.description }} + diff -r 3c4150867fe7 -r eeb3541b343b src/iconolab/templates/search/search.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/iconolab/templates/search/search.html Fri Aug 05 15:32:49 2016 +0200 @@ -0,0 +1,46 @@ +{% extends 'iconolab_base.html' %} + +{% load thumbnail %} +{% block content %} +

Search

+ +
+ + {{ form.as_table }} + + + + +
  + +
+ + {% if query %} +

Results

+ + {% for result in page.object_list %} + + {% thumbnail result.object.image.media "500x500" crop=False as im %} +

+ {% endthumbnail %} + + +

+ {{ result.object.current_revision.title }} +

+ {% empty %} +

No results found.

+ {% endfor %} + + {% if page.has_previous or page.has_next %} +
+ {% if page.has_previous %}{% endif %}« Previous{% if page.has_previous %}{% endif %} + | + {% if page.has_next %}{% endif %}Next »{% if page.has_next %}{% endif %} +
+ {% endif %} + {% else %} + {# Show some example queries to run, maybe query syntax, something else? #} + {% endif %} +
+{% endblock %} \ No newline at end of file diff -r 3c4150867fe7 -r eeb3541b343b src/iconolab/urls.py --- a/src/iconolab/urls.py Fri Aug 05 15:19:47 2016 +0200 +++ b/src/iconolab/urls.py Fri Aug 05 15:32:49 2016 +0200 @@ -16,34 +16,31 @@ from django.core.urlresolvers import reverse_lazy from django.conf.urls import url, include from django.contrib import admin -from iconolab import views +from . import views from . import settings from django.conf.urls.static import static from django.contrib.auth.decorators import login_required from django.contrib.staticfiles.urls import staticfiles_urlpatterns -import notifications.urls urlpatterns = [ - url(r'^$', views.iconolab.RedirectView.as_view(url=reverse_lazy("home"))), + url(r'^$', views.RedirectView.as_view(url=reverse_lazy("home"))), url(r'^admin/', admin.site.urls), - url(r'^home$', views.iconolab.GlobalHomepageView.as_view(), name="home"), - url(r'^collections/(?P[a-z]+)$', views.iconolab.CollectionHomepageView.as_view(), name='collection_home'), # Home fond - url(r'^collections/(?P[a-z]+)/items/(?P[^/]+)$', views.iconolab.ShowItemView.as_view(), name='item_detail'), - url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)$', views.iconolab.ShowImageView.as_view(), name='image_detail'), - url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/create$', login_required(views.iconolab.CreateAnnotationView.as_view()), name='annotation_create'), - url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/detail$', views.iconolab.ShowAnnotationView.as_view(), name='annotation_detail'), - url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/edit$', login_required(views.iconolab.EditAnnotationView.as_view()), name='annotation_edit'), - url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/(?P[^/]+)/detail', views.iconolab.ShowRevisionView.as_view(), name='revision_detail'), - url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/(?P[^/]+)/merge$', login_required(views.iconolab.MergeProposalView.as_view()), name='annotation_merge'), - url(r'^user/(?P[a-z0-9\-]+)/home/?$', views.iconolab.UserHomeView.as_view(), name="user_home"), - url(r'^user/notifications/all/?$', login_required(views.iconolab.UserNotificationsView.as_view()), name="user_notifications"), - url(r'^errors/404', views.iconolab.NotFoundErrorView.as_view(), name="404error"), + url(r'^home$', views.GlobalHomepageView.as_view(), name="home"), + url(r'^collections/(?P[a-z]+)$', views.CollectionHomepageView.as_view(), name='collection_home'), # Home fond + url(r'^collections/(?P[a-z]+)/items/(?P[^/]+)$', views.ShowItemView.as_view(), name='item_detail'), + url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)$', views.ShowImageView.as_view(), name='image_detail'), + url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/create$', login_required(views.CreateAnnotationView.as_view()), name='annotation_create'), + url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/detail$', views.ShowAnnotationView.as_view(), name='annotation_detail'), + url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/edit$', login_required(views.EditAnnotationView.as_view()), name='annotation_edit'), + url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/(?P[^/]+)/detail', views.ShowRevisionView.as_view(), name='revision_detail'), + url(r'^collections/(?P[a-z]+)/images/(?P[^/]+)/annotations/(?P[^/]+)/revisions/(?P[^/]+)/merge$', login_required(views.MergeProposalView.as_view()), name='annotation_merge'), + url(r'errors/404', views.NotFoundErrorView.as_view(), name="404error"), url(r'^rest', include('restapi.urls')), url(r'^account/', include('iconolab.auth.urls', namespace='account')), url(r'^comments/', include('django_comments_xtd.urls')), - url(r'^comments/annotation/post', views.comments.post_comment_iconolab, name="post_comment"), - url('^user/notifications/', include(notifications.urls, namespace='notifications')), + url(r'^comments/annotation/post', views.post_comment_iconolab, name="post_comment"), + url(r'^search/', include('haystack.urls')), ] urlpatterns += staticfiles_urlpatterns()