def close(self):
"""Close snippet file"""
- self.file.close()
+ if self.file:
+ self.file.close()
def remove(self):
self.revision = None
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()
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.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)
+ 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
Searches for Book objects using query
"""
bks = []
+ bks_found = set()
+ query = query.query(is_book=True)
res = self.apply_filters(query, filters).field_limit(['book_id'])
for r in res:
try:
- bks.append(catalogue.models.Book.objects.get(id=r['book_id']))
+ bid = r['book_id']
+ if not bid in bks_found:
+ bks.append(catalogue.models.Book.objects.get(id=bid))
+ bks_found.add(bid)
except catalogue.models.Book.DoesNotExist: pass
return bks