3b6517f2e1db1ee36824ec0ca3e2ae5487347af6
[wolnelektury.git] / apps / search / management / commands / reindex.py
1 from django.core.management.base import BaseCommand
2
3 from optparse import make_option
4 class Command(BaseCommand):
5     help = 'Reindex everything.'
6     args = ''
7     
8     option_list = BaseCommand.option_list + (
9         make_option('-n', '--book-id', action='store_true', dest='book_id', default=False,
10             help='book id instead of slugs'),
11         make_option('-t', '--just-tags', action='store_true', dest='just_tags', default=False,
12             help='just reindex tags'),
13     )
14     def handle(self, *args, **opts):
15         from catalogue.models import Book
16         import search
17         idx = search.ReusableIndex()
18         idx.open()
19
20         if not opts['just_tags']:
21             if args:
22                 books = []
23                 for a in args:
24                     if opts['book_id']:
25                         books += Book.objects.filter(id=int(a)).all()
26                     else:
27                         books += Book.objects.filter(slug=a).all()
28             else:
29                 books = Book.objects.all()
30                 
31             for b in books:
32                 print b.title
33                 idx.index_book(b)
34         print 'Reindexing tags.'
35         idx.index_tags()
36         idx.close()