# -*- coding: utf-8 -*-
-
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
from django.conf import settings
import os
def close(self):
"""Close snippet file"""
- self.file.close()
+ if self.file:
+ self.file.close()
def remove(self):
self.revision = None
for res in ids:
uids.add(res['uid'])
st += rows
- # print "Will delete %s" % ','.join([x for x in uids])
if uids:
self.index.delete(uids)
return True
q_id_cat = self.index.Q(q_id & q_cat)
tag_qs.append(q_id_cat)
- self.delete_query(tag_qs)
+ self.delete_query(*tag_qs)
else: # all
q = self.index.Q(tag_id__any=True)
self.delete_query(q)
text=u''.join(footnote),
is_footnote=True)
self.index.add(doc)
- #print "@ footnote text: %s" % footnote
footnote = []
# handle fragments and themes.
fragment_anchor=fid,
text=fix_format(frag['text']),
themes=frag['themes'])
- #print '@ FRAG %s' % frag['content']
self.index.add(doc)
# Collect content.
# in the end, add a section text.
doc = add_part(snippets, header_index=position,
header_type=header.tag, text=fix_format(content))
- #print '@ CONTENT: %s' % fix_format(content)
self.index.add(doc)
idx += 1
except IOError, e:
- log.error("Cannot open snippet file for book id = %d [rev=%d], %s" % (book_id, revision, e))
+ log.error("Cannot open snippet file for book id = %d [rev=%s], %s" % (book_id, revision, e))
return []
finally:
snippets.close()
q |= self.index.Q(**{field: query + "*"})
else:
q |= self.make_term_query(query, field=field)
- qu = self.index.query(q).exclude(tag_category="book")
+ qu = self.index.query(q)
return self.search_tags(qu, pdcounter=pdcounter)
res = self.apply_filters(query, filters).execute()
tags = []
+ pd_tags = []
+
for doc in res:
is_pdcounter = doc.get('is_pdcounter', False)
category = doc.get('tag_category')
tag = PDCounterBook.objects.get(id=doc.get('tag_id'))
tag.category = 'pd_book' # make it look more lik a tag.
else:
- print "Warning. cannot get pdcounter tag_id=%d from db; cat=%s" % (int(doc.get('tag_id')), category)
+ print ("Warning. cannot get pdcounter tag_id=%d from db; cat=%s" % (int(doc.get('tag_id')), category)).encode('utf-8')
+ pd_tags.append(tag)
else:
tag = catalogue.models.Tag.objects.get(id=doc.get("tag_id"))
- # don't add the pdcounter tag if same tag already exists
-
- tags.append(tag)
+ tags.append(tag)
except catalogue.models.Tag.DoesNotExist: pass
except PDCounterAuthor.DoesNotExist: pass
except PDCounterBook.DoesNotExist: pass
+ tags_slugs = set(map(lambda t: t.slug, tags))
+ tags = tags + filter(lambda t: not t.slug in tags_slugs, pd_tags)
+
log.debug('search_tags: %s' % tags)
return tags