from catalogue.utils import split_tags
from catalogue.models import Book, Tag, Fragment
+from pdcounter.models import Author as PDCounterAuthor, BookStub as PDCounterBook
from catalogue.views import JSONResponse
from search import Search, JVM, SearchResult
from lucene import StringReader
from suggest.forms import PublishingSuggestForm
from time import sleep
import re
-import enchant
+#import enchant
+import json
-dictionary = enchant.Dict('pl_PL')
+#dictionary = enchant.Dict('en_US')
def match_word_re(word):
if len(authors) > 0:
continue
- if not dictionary.check(t):
- try:
- change_to = dictionary.suggest(t)[0].lower()
- if change_to != t.lower():
- change[t] = change_to
- except IndexError:
- pass
+ if False:
+ if not dictionary.check(t):
+ try:
+ change_to = dictionary.suggest(t)[0].lower()
+ if change_to != t.lower():
+ change[t] = change_to
+ except IndexError:
+ pass
if change == {}:
return None
tags = search.hint_tags(prefix, pdcounter=True)
books = search.hint_books(prefix)
+
+ def is_dupe(tag):
+ if isinstance(tag, PDCounterAuthor):
+ if filter(lambda t: t.slug == tag.slug and t != tag, tags):
+ return True
+ elif isinstance(tag, PDCounterBook):
+ if filter(lambda b: b.slug == tag.slug, tags):
+ return True
+ return False
+
+ tags = filter(lambda t: not is_dupe(t), tags)
+
def category_name(c):
if c.startswith('pd_'):
c = c[len('pd_'):]
return _(c)
- return JSONResponse(
- [{'label': t.name,
- 'category': category_name(t.category),
- 'id': t.id,
- 'url': t.get_absolute_url()}
- for t in tags] + \
- [{'label': b.title,
- 'category': _('book'),
- 'id': b.id,
- 'url': b.get_absolute_url()}
- for b in books])
+ callback = request.GET.get('callback', None)
+ data = [{'label': t.name,
+ 'category': category_name(t.category),
+ 'id': t.id,
+ 'url': t.get_absolute_url()}
+ for t in tags] + \
+ [{'label': b.title,
+ 'category': _('book'),
+ 'id': b.id,
+ 'url': b.get_absolute_url()}
+ for b in books]
+ if callback:
+ return HttpResponse("%s(%s);" % (callback, json.dumps(data)),
+ content_type="application/json; charset=utf-8")
+ else:
+ return JSONResponse(data)
+
def main(request):