Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #-*- coding: utf-8 -*-
- from django.contrib.sites.models import Site
- from django.core.urlresolvers import NoReverseMatch
- from django.utils.translation import get_language, activate
- from haystack import site, indexes
- from search.indexes import OrangeSearchIndex
- from search import i18n
- from project.utils.smarter_striptags import smarter_striptags
- from easy_thumbnails.files import get_thumbnailer
- from staticshop.models import Article
- class ArticleIndex(OrangeSearchIndex):
- #_language = 'en'
- language = indexes.CharField()
- text = indexes.CharField(document=True, use_template=True, template_name='search/indexes/staticshop/article_text.txt')
- description = indexes.CharField()
- url = indexes.CharField(indexed=False)
- thumbnail_url = indexes.CharField(indexed=False)
- #category_ref = indexes.CharField()
- price = indexes.FloatField()
- code = indexes.CharField()
- def prepare(self, obj):
- current_languge = get_language()[:2]
- activate(current_languge)
- print "language:", current_languge
- return super(ArticleIndex, self).prepare(obj)
- def prepare_title(self, obj):
- return unicode(u"%s, %s" % (obj.product.manufacturer.name, obj.product.lazy_translation_getter('description_title', unicode(obj.pk)),))
- def prepare_url(self, obj):
- try:
- return 'http://%s%s' % (Site.objects.get_current().domain, obj.product.get_absolute_url())
- except NoReverseMatch:
- return ''
- def prepare_thumbnail_url(self, obj):
- try:
- img = obj.variant.images.all()[:1].get()
- except:
- return ''
- if not img:
- return ''
- thumb_options = {
- 'size': (75, 100),
- 'crop': True,
- 'upscale': True,
- }
- return get_thumbnailer(img.image).get_thumbnail(thumb_options).url
- def prepare_code(self, obj):
- return obj.code
- def prepare_description(self, obj):
- s = smarter_striptags(obj.product.lazy_translation_getter('description_short', unicode(obj.pk)))
- return s
- def prepare_subsites(self, obj):
- return ['residential', 'business']
- def prepare_categories(self, obj):
- from cms.models import Page
- try:
- p = Page.objects.public().get(reverse_id='shop_residential')
- print p
- return [p.pk]
- except Page.DoesNotExist:
- return []
- def prepare_price(self, obj):
- return obj.from_price
- def index_queryset(self):
- """
- only index `active` articles
- """
- return super(ArticleIndex, self).index_queryset().filter(status=True).select_related('product', 'variant')
- def prepare_result_type(self, obj):
- return 'shop-handset'
- i18n.register_ml_index(Article, ArticleIndex)
Advertisement
Add Comment
Please, Sign In to add comment