Socialify

Folder ..

Viewing search_indexes.py
47 lines (37 loc) • 1.7 KB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from django.contrib.auth.models import User
from haystack import indexes

from blog.models import Comment, Post


class PostIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')
    body = indexes.CharField(model_attr='body')
    date = indexes.DateTimeField(model_attr='date')

    def get_model(self):
        return Post

    def index_queryset(self, using=None):
        """Return all published posts."""
        return self.get_model().objects.filter(is_public=True)
    
class UserIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    username = indexes.CharField(model_attr='username')
    first_name = indexes.CharField(model_attr='first_name')
    last_name = indexes.CharField(model_attr='last_name')
    email = indexes.CharField(model_attr='email')

    def get_model(self):
        return User
    
    def index_queryset(self, using=None):
        """Return all user profiles without filtering."""
        return self.get_model().objects.all()
    
class CommentIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    post = indexes.CharField(model_attr='post')
    user = indexes.CharField(model_attr='user')
    body = indexes.CharField(model_attr='body')
    created_at = indexes.DateTimeField(model_attr='created_at')
    edited = indexes.BooleanField(model_attr='edited')
    edited_at = indexes.DateTimeField(model_attr='edited_at')

    def get_model(self):
        return Comment
    
    def index_queryset(self, using=None):
        """Return all comments without filtering."""
        return self.get_model().objects.all()