Merge branch 'dev'
authorJan Szejko <jan.szejko@gmail.com>
Wed, 13 Apr 2016 08:17:15 +0000 (10:17 +0200)
committerJan Szejko <jan.szejko@gmail.com>
Wed, 13 Apr 2016 08:50:34 +0000 (10:50 +0200)
Conflicts:
src/api/management/commands/mobileinit.py
src/catalogue/templates/catalogue/inline_tag_list.html
src/catalogue/templates/catalogue/plain_list.html
src/catalogue/views.py
src/wolnelektury/static/scss/main/book_box.scss
src/wolnelektury/static/scss/main/header.scss
src/wolnelektury/templates/main_page.html
src/wolnelektury/templates/superbase.html

234 files changed:
src/ajaxable/locale/de/LC_MESSAGES/django.po
src/ajaxable/locale/en/LC_MESSAGES/django.po
src/ajaxable/locale/es/LC_MESSAGES/django.po
src/ajaxable/locale/fr/LC_MESSAGES/django.po
src/ajaxable/locale/it/LC_MESSAGES/django.po
src/ajaxable/locale/lt/LC_MESSAGES/django.po
src/ajaxable/locale/pl/LC_MESSAGES/django.po
src/ajaxable/locale/ru/LC_MESSAGES/django.po
src/ajaxable/locale/uk/LC_MESSAGES/django.po
src/api/emitters.py
src/api/handlers.py
src/api/locale/de/LC_MESSAGES/django.po
src/api/locale/en/LC_MESSAGES/django.po
src/api/locale/es/LC_MESSAGES/django.po
src/api/locale/fr/LC_MESSAGES/django.po
src/api/locale/it/LC_MESSAGES/django.po
src/api/locale/lt/LC_MESSAGES/django.po
src/api/locale/pl/LC_MESSAGES/django.po
src/api/locale/ru/LC_MESSAGES/django.po
src/api/locale/uk/LC_MESSAGES/django.po
src/api/management/commands/mobileinit.py
src/catalogue/feeds.py
src/catalogue/fields.py
src/catalogue/forms.py
src/catalogue/helpers.py
src/catalogue/locale/de/LC_MESSAGES/django.po
src/catalogue/locale/en/LC_MESSAGES/django.po
src/catalogue/locale/es/LC_MESSAGES/django.po
src/catalogue/locale/fr/LC_MESSAGES/django.po
src/catalogue/locale/it/LC_MESSAGES/django.po
src/catalogue/locale/lt/LC_MESSAGES/django.po
src/catalogue/locale/pl/LC_MESSAGES/django.po
src/catalogue/locale/ru/LC_MESSAGES/django.po
src/catalogue/locale/uk/LC_MESSAGES/django.po
src/catalogue/models/book.py
src/catalogue/templates/catalogue/book_detail.html
src/catalogue/templates/catalogue/book_mini_box.html
src/catalogue/templates/catalogue/book_text.html
src/catalogue/templates/catalogue/collection_box.html
src/catalogue/templates/catalogue/inline_tag_list.html
src/catalogue/templates/catalogue/player.html
src/catalogue/templates/catalogue/related_books.html
src/catalogue/templates/catalogue/viewer_base.html
src/catalogue/templatetags/catalogue_tags.py
src/catalogue/tests/book_import.py
src/catalogue/tests/tags.py
src/catalogue/utils.py
src/catalogue/views.py
src/chunks/locale/de/LC_MESSAGES/django.po
src/chunks/locale/en/LC_MESSAGES/django.po
src/chunks/locale/es/LC_MESSAGES/django.po
src/chunks/locale/fr/LC_MESSAGES/django.po
src/chunks/locale/it/LC_MESSAGES/django.po
src/chunks/locale/lt/LC_MESSAGES/django.po
src/chunks/locale/pl/LC_MESSAGES/django.po
src/chunks/locale/ru/LC_MESSAGES/django.po
src/chunks/locale/uk/LC_MESSAGES/django.po
src/dictionary/locale/de/LC_MESSAGES/django.po
src/dictionary/locale/en/LC_MESSAGES/django.po
src/dictionary/locale/es/LC_MESSAGES/django.po
src/dictionary/locale/fr/LC_MESSAGES/django.po
src/dictionary/locale/it/LC_MESSAGES/django.po
src/dictionary/locale/lt/LC_MESSAGES/django.po
src/dictionary/locale/pl/LC_MESSAGES/django.po
src/dictionary/locale/ru/LC_MESSAGES/django.po
src/dictionary/locale/uk/LC_MESSAGES/django.po
src/funding/locale/de/LC_MESSAGES/django.po
src/funding/locale/en/LC_MESSAGES/django.po
src/funding/locale/es/LC_MESSAGES/django.po
src/funding/locale/fr/LC_MESSAGES/django.po
src/funding/locale/it/LC_MESSAGES/django.po
src/funding/locale/lt/LC_MESSAGES/django.po
src/funding/locale/pl/LC_MESSAGES/django.po
src/funding/locale/ru/LC_MESSAGES/django.po
src/funding/locale/uk/LC_MESSAGES/django.po
src/infopages/locale/de/LC_MESSAGES/django.po
src/infopages/locale/en/LC_MESSAGES/django.po
src/infopages/locale/es/LC_MESSAGES/django.po
src/infopages/locale/fr/LC_MESSAGES/django.po
src/infopages/locale/it/LC_MESSAGES/django.po
src/infopages/locale/lt/LC_MESSAGES/django.po
src/infopages/locale/pl/LC_MESSAGES/django.po
src/infopages/locale/ru/LC_MESSAGES/django.po
src/infopages/locale/uk/LC_MESSAGES/django.po
src/lesmianator/locale/de/LC_MESSAGES/django.po
src/lesmianator/locale/en/LC_MESSAGES/django.po
src/lesmianator/locale/es/LC_MESSAGES/django.po
src/lesmianator/locale/fr/LC_MESSAGES/django.po
src/lesmianator/locale/it/LC_MESSAGES/django.po
src/lesmianator/locale/lt/LC_MESSAGES/django.po
src/lesmianator/locale/pl/LC_MESSAGES/django.po
src/lesmianator/locale/ru/LC_MESSAGES/django.po
src/lesmianator/locale/uk/LC_MESSAGES/django.po
src/libraries/locale/de/LC_MESSAGES/django.po
src/libraries/locale/en/LC_MESSAGES/django.po
src/libraries/locale/es/LC_MESSAGES/django.po
src/libraries/locale/fr/LC_MESSAGES/django.po
src/libraries/locale/it/LC_MESSAGES/django.po
src/libraries/locale/lt/LC_MESSAGES/django.po
src/libraries/locale/pl/LC_MESSAGES/django.po
src/libraries/locale/ru/LC_MESSAGES/django.po
src/libraries/locale/uk/LC_MESSAGES/django.po
src/newtagging/locale/de/LC_MESSAGES/django.po
src/newtagging/locale/en/LC_MESSAGES/django.po
src/newtagging/locale/es/LC_MESSAGES/django.po
src/newtagging/locale/fr/LC_MESSAGES/django.po
src/newtagging/locale/it/LC_MESSAGES/django.po
src/newtagging/locale/lt/LC_MESSAGES/django.po
src/newtagging/locale/pl/LC_MESSAGES/django.po
src/newtagging/locale/ru/LC_MESSAGES/django.po
src/newtagging/locale/uk/LC_MESSAGES/django.po
src/oai/handlers.py
src/opds/views.py
src/pdcounter/locale/de/LC_MESSAGES/django.po
src/pdcounter/locale/en/LC_MESSAGES/django.po
src/pdcounter/locale/es/LC_MESSAGES/django.po
src/pdcounter/locale/fr/LC_MESSAGES/django.po
src/pdcounter/locale/it/LC_MESSAGES/django.po
src/pdcounter/locale/lt/LC_MESSAGES/django.po
src/pdcounter/locale/pl/LC_MESSAGES/django.po
src/pdcounter/locale/ru/LC_MESSAGES/django.po
src/pdcounter/locale/uk/LC_MESSAGES/django.po
src/picture/locale/de/LC_MESSAGES/django.po
src/picture/locale/en/LC_MESSAGES/django.po
src/picture/locale/es/LC_MESSAGES/django.po
src/picture/locale/fr/LC_MESSAGES/django.po
src/picture/locale/it/LC_MESSAGES/django.po
src/picture/locale/lt/LC_MESSAGES/django.po
src/picture/locale/pl/LC_MESSAGES/django.po
src/picture/locale/ru/LC_MESSAGES/django.po
src/picture/locale/uk/LC_MESSAGES/django.po
src/picture/models.py
src/picture/templates/picture/picture_mini_box.html
src/picture/views.py
src/polls/locale/de/LC_MESSAGES/django.po
src/polls/locale/en/LC_MESSAGES/django.po
src/polls/locale/es/LC_MESSAGES/django.po
src/polls/locale/fr/LC_MESSAGES/django.po
src/polls/locale/it/LC_MESSAGES/django.po
src/polls/locale/lt/LC_MESSAGES/django.po
src/polls/locale/pl/LC_MESSAGES/django.po
src/polls/locale/ru/LC_MESSAGES/django.po
src/polls/locale/uk/LC_MESSAGES/django.po
src/reporting/locale/de/LC_MESSAGES/django.po
src/reporting/locale/en/LC_MESSAGES/django.po
src/reporting/locale/es/LC_MESSAGES/django.po
src/reporting/locale/fr/LC_MESSAGES/django.po
src/reporting/locale/it/LC_MESSAGES/django.po
src/reporting/locale/lt/LC_MESSAGES/django.po
src/reporting/locale/pl/LC_MESSAGES/django.po
src/reporting/locale/ru/LC_MESSAGES/django.po
src/reporting/locale/uk/LC_MESSAGES/django.po
src/search/locale/de/LC_MESSAGES/django.po
src/search/locale/en/LC_MESSAGES/django.po
src/search/locale/es/LC_MESSAGES/django.po
src/search/locale/fr/LC_MESSAGES/django.po
src/search/locale/it/LC_MESSAGES/django.po
src/search/locale/lt/LC_MESSAGES/django.po
src/search/locale/pl/LC_MESSAGES/django.po
src/search/locale/ru/LC_MESSAGES/django.po
src/search/locale/uk/LC_MESSAGES/django.po
src/social/forms.py
src/social/locale/de/LC_MESSAGES/django.po
src/social/locale/en/LC_MESSAGES/django.po
src/social/locale/es/LC_MESSAGES/django.po
src/social/locale/fr/LC_MESSAGES/django.po
src/social/locale/it/LC_MESSAGES/django.po
src/social/locale/lt/LC_MESSAGES/django.po
src/social/locale/pl/LC_MESSAGES/django.po
src/social/locale/ru/LC_MESSAGES/django.po
src/social/locale/uk/LC_MESSAGES/django.po
src/social/templatetags/social_tags.py
src/sponsors/locale/de/LC_MESSAGES/django.po
src/sponsors/locale/en/LC_MESSAGES/django.po
src/sponsors/locale/es/LC_MESSAGES/django.po
src/sponsors/locale/fr/LC_MESSAGES/django.po
src/sponsors/locale/it/LC_MESSAGES/django.po
src/sponsors/locale/lt/LC_MESSAGES/django.po
src/sponsors/locale/pl/LC_MESSAGES/django.po
src/sponsors/locale/ru/LC_MESSAGES/django.po
src/sponsors/locale/uk/LC_MESSAGES/django.po
src/suggest/forms.py
src/suggest/locale/de/LC_MESSAGES/django.po
src/suggest/locale/en/LC_MESSAGES/django.po
src/suggest/locale/es/LC_MESSAGES/django.po
src/suggest/locale/fr/LC_MESSAGES/django.po
src/suggest/locale/it/LC_MESSAGES/django.po
src/suggest/locale/lt/LC_MESSAGES/django.po
src/suggest/locale/pl/LC_MESSAGES/django.po
src/suggest/locale/ru/LC_MESSAGES/django.po
src/suggest/locale/uk/LC_MESSAGES/django.po
src/suggest/models.py
src/suggest/templates/publishing_suggest.html
src/waiter/locale/de/LC_MESSAGES/django.po
src/waiter/locale/en/LC_MESSAGES/django.po
src/waiter/locale/es/LC_MESSAGES/django.po
src/waiter/locale/fr/LC_MESSAGES/django.po
src/waiter/locale/it/LC_MESSAGES/django.po
src/waiter/locale/lt/LC_MESSAGES/django.po
src/waiter/locale/pl/LC_MESSAGES/django.po
src/waiter/locale/ru/LC_MESSAGES/django.po
src/waiter/locale/uk/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/de/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/django.pot
src/wolnelektury/locale-contrib/en/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/es/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/fr/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/it/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/lt/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/pl/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/ru/LC_MESSAGES/django.po
src/wolnelektury/locale-contrib/uk/LC_MESSAGES/django.po
src/wolnelektury/locale/de/LC_MESSAGES/django.po
src/wolnelektury/locale/en/LC_MESSAGES/django.po
src/wolnelektury/locale/es/LC_MESSAGES/django.po
src/wolnelektury/locale/fr/LC_MESSAGES/django.po
src/wolnelektury/locale/it/LC_MESSAGES/django.po
src/wolnelektury/locale/lt/LC_MESSAGES/django.po
src/wolnelektury/locale/pl/LC_MESSAGES/django.po
src/wolnelektury/locale/ru/LC_MESSAGES/django.po
src/wolnelektury/locale/uk/LC_MESSAGES/django.po
src/wolnelektury/settings/__init__.py
src/wolnelektury/settings/basic.py
src/wolnelektury/settings/static.py
src/wolnelektury/static/css/master.book.css
src/wolnelektury/static/css/new.book.css
src/wolnelektury/static/img/banners/960x150_wolneLektury.jpg [new file with mode: 0644]
src/wolnelektury/static/scss/main/book_box.scss
src/wolnelektury/static/scss/main/dialogs.scss
src/wolnelektury/static/scss/main/header.scss
src/wolnelektury/templates/base.html
src/wolnelektury/templates/main_page.html
src/wolnelektury/templates/superbase.html
src/wolnelektury/views.py

index 09c2bc9..ba01bbe 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index fad7e91..e2d5161 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 09c2bc9..ba01bbe 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ac58896..3a39004 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 09c2bc9..ba01bbe 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index d330127..57ef90f 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index c1aa66d..115699f 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-01-27 16:36+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index dad6de3..fb5d218 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index dad6de3..fb5d218 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 40cc717..36babb2 100644 (file)
@@ -9,6 +9,7 @@ When outputting a queryset of selected models, instead of returning
 XML or JSON stanzas, SSI include statements are returned.
 
 """
+from django.conf import settings
 from django.core.urlresolvers import reverse
 from django.db.models.query import QuerySet
 from piston.emitters import Emitter, XMLEmitter, JSONEmitter
@@ -41,10 +42,11 @@ class SsiQS(object):
 
 class SsiEmitterMixin(object):
     def construct(self):
-        if isinstance(self.data, QuerySet) and self.data.model in (Book, Fragment, Tag):
+        ssify_api = getattr(settings, 'SSIFY_API', True)
+        if ssify_api and isinstance(self.data, QuerySet) and self.data.model in (Book, Fragment, Tag):
             return SsiQS(self.data)
         else:
-            return super(SsiEmitterMixin, self).construct()  # WTF
+            return super(SsiEmitterMixin, self).construct()
 
 
 class SsiJsonEmitter(SsiEmitterMixin, JSONEmitter):
index 0dc9cd6..b81afda 100644 (file)
@@ -206,7 +206,9 @@ class AnonymousBooksHandler(AnonymousBaseHandler, BookDetails):
         if daisy:
             books = books.filter(media__type='daisy').distinct()
 
-        if books.exists():
+        books = books.only('slug', 'title', 'cover')
+
+        if books:
             return books
         else:
             return rc.NOT_FOUND
@@ -249,7 +251,7 @@ def _tags_getter(category):
 def _tag_getter(category):
     @classmethod
     def get_tag(cls, book):
-        return ', '.join(tag.name for tag in book.tags.filter(category=category))
+        return ', '.join(book.tags.filter(category=category).values_list('name', flat=True))
     return get_tag
 
 
index ad00a1b..7ec9728 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 80c9ba3..2082308 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ad00a1b..7ec9728 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index dcfe86b..3c659da 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ad00a1b..7ec9728 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index e99e0a3..01c11bc 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a957909..e6b4840 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-06-14 11:45+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index f18808e..b245676 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index f18808e..b245676 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ed4d624..ccf27bc 100755 (executable)
@@ -147,7 +147,7 @@ def add_book(db, book):
         'parent_number': book.parent_number,
         'sort_key': book.sort_key,
         'size_str': pretty_size(html_file_size),
-        'authors': ", ".join(t.name for t in book.tags.filter(category='author')),
+        'authors': book.author_unicode(),
     })
 
 
index 2a65c59..0b7e4d4 100644 (file)
@@ -52,8 +52,7 @@ class AudiobookFeed(Feed):
         return item.name
 
     def item_categories(self, item):
-        return sorted(set(author.name for author in
-                      item.book.tags.filter(category='author').iterator()))
+        return sorted(item.book.authors().values_list('name', flat=True))
 
     def item_description(self, item):
         lines = []
index 4261252..b1242e7 100644 (file)
@@ -8,7 +8,7 @@ from django.db import models
 from django.db.models.fields.files import FieldFile
 from catalogue import app_settings
 from catalogue.constants import LANGUAGES_3TO2
-from catalogue.utils import remove_zip, truncate_html_words
+from catalogue.utils import remove_zip, truncate_html_words, gallery_path, gallery_url
 from celery.task import Task, task
 from celery.utils.log import get_task_logger
 from waiter.utils import clear_cache
@@ -117,7 +117,8 @@ class BuildTxt(BuildEbook):
 class BuildPdf(BuildEbook):
     @staticmethod
     def transform(wldoc, fieldfile):
-        return wldoc.as_pdf(morefloats=settings.LIBRARIAN_PDF_MOREFLOATS, cover=True)
+        return wldoc.as_pdf(morefloats=settings.LIBRARIAN_PDF_MOREFLOATS, cover=True,
+                            ilustr_path=gallery_path(wldoc.book_info.url.slug))
 
     def build(self, fieldfile):
         BuildEbook.build(self, fieldfile)
@@ -129,7 +130,15 @@ class BuildPdf(BuildEbook):
 class BuildEpub(BuildEbook):
     @staticmethod
     def transform(wldoc, fieldfile):
-        return wldoc.as_epub(cover=True)
+        return wldoc.as_epub(cover=True, ilustr_path=gallery_path(wldoc.book_info.url.slug))
+
+
+@BuildEbook.register('mobi')
+@task(ignore_result=True)
+class BuildMobi(BuildEbook):
+    @staticmethod
+    def transform(wldoc, fieldfile):
+        return wldoc.as_mobi(cover=True, ilustr_path=gallery_path(wldoc.book_info.url.slug))
 
 
 @BuildEbook.register('html')
@@ -144,9 +153,7 @@ class BuildHtml(BuildEbook):
 
         book = fieldfile.instance
 
-        html_output = self.transform(
-                        book.wldocument(parse_dublincore=False),
-                        fieldfile)
+        html_output = self.transform(book.wldocument(parse_dublincore=False), fieldfile)
 
         # Delete old fragments, create from scratch if necessary.
         book.fragments.all().delete()
@@ -210,6 +217,17 @@ class BuildHtml(BuildEbook):
             return True
         return False
 
+    @staticmethod
+    def transform(wldoc, fieldfile):
+        # ugly, but we can't use wldoc.book_info here
+        from librarian import DCNS
+        url_elem = wldoc.edoc.getroot().find('.//' + DCNS('identifier.url'))
+        if url_elem is None:
+            gallery = ''
+        else:
+            gallery = gallery_url(slug=url_elem.text.rsplit('/', 1)[1])
+        return wldoc.as_html(options={'gallery': "'%s'" % gallery})
+
 
 @BuildEbook.register('cover_thumb')
 @task(ignore_result=True)
index 82a5d1f..ea732db 100644 (file)
@@ -15,6 +15,7 @@ from catalogue.tasks import build_custom_pdf
 class BookImportForm(forms.Form):
     book_xml_file = forms.FileField(required=False)
     book_xml = forms.CharField(required=False)
+    gallery_url = forms.CharField(required=False)
 
     def clean(self):
         from django.core.files.base import ContentFile
@@ -22,13 +23,14 @@ class BookImportForm(forms.Form):
         if not self.cleaned_data['book_xml_file']:
             if self.cleaned_data['book_xml']:
                 self.cleaned_data['book_xml_file'] = \
-                        ContentFile(self.cleaned_data['book_xml'].encode('utf-8'))
+                    ContentFile(self.cleaned_data['book_xml'].encode('utf-8'))
             else:
                 raise forms.ValidationError(_("Please supply an XML."))
         return super(BookImportForm, self).clean()
 
     def save(self, commit=True, **kwargs):
-        return Book.from_xml_file(self.cleaned_data['book_xml_file'], overwrite=True, **kwargs)
+        return Book.from_xml_file(self.cleaned_data['book_xml_file'], overwrite=True,
+                                  remote_gallery_url=self.cleaned_data['gallery_url'], **kwargs)
 
 
 FORMATS = [(f, f.upper()) for f in Book.ebook_formats]
index f74fad3..97c63d0 100644 (file)
@@ -59,7 +59,7 @@ def update_counters():
     def count_for_book(book, count_by_combination=None, parent_combinations=None):
         if not parent_combinations:
             parent_combinations = set()
-        tags = sorted(tuple(t.pk for t in book.tags.filter(category__in=('author', 'genre', 'epoch', 'kind'))))
+        tags = sorted(book.tags.filter(category__in=('author', 'genre', 'epoch', 'kind')).values_list('pk', flat=True))
         combs = list(combinations(tags))
         for c in combs:
             if c not in parent_combinations:
index 4d0b228..ca80d5e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:38+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -101,130 +101,130 @@ msgstr "Sammlungen"
 msgid "All things"
 msgstr "Sammlungen"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Bitte stellen Sie die XML bereit."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "Zeige die Fußnoten nicht"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "Zeige die Motive nicht "
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "Benutze voreingestellte Schrift nicht"
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr ""
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "Zeilenabstand"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Normaler Zeilenabstand"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr "Zeilenabstand 1,5"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Doppelter Zeilenabstand"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Schriftgröße"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "Voreingestellt"
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Groß"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "Titel"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "Sortierschlüssel"
 
-#: models/book.py:48
+#: models/book.py:51
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Ergebnisse nach Autoren"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "Slug"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "Sprachenkode"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "Beschreibung"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "Erstellungsdatum"
 
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "Elternnummer"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr "zusätzliche Informationen"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "Umschlag"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "Buch"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "Bücher"
 
-#: models/book.py:269
+#: models/book.py:292
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Buch mit dem Slug = \"%s\" ist nicht vorhanden."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Buch %s ist bereits vorhanden"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "%s XML-Datei"
@@ -513,7 +513,7 @@ msgid "Infobox"
 msgstr "Infobox"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr ""
 
@@ -666,7 +666,7 @@ msgstr "Siehe XML-Quelle"
 msgid "Work's themes "
 msgstr "Motive des Werkes"
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
@@ -869,7 +869,7 @@ msgstr "in Wikipedia"
 msgid "in Culture.pl"
 msgstr ""
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 #, fuzzy
 #| msgid "Leading"
 msgid "Loading"
index 5c9c814..5515d3e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:38+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -101,130 +101,130 @@ msgstr "collections"
 msgid "All things"
 msgstr "collections"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Please supply an XML."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "Don't show footnotes"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "Don't display themes"
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "Don't use our custom font"
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr ""
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "Leading"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Normal leading"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr "One and a half leading"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Double leading"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Font size"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "Default"
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Big"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "Title"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "Sort key"
 
-#: models/book.py:48
+#: models/book.py:51
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Results by authors"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "Slug"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "language code"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "Description"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "creation date"
 
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "Parent number"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr "Additional information"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "cover"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "book"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "Books"
 
-#: models/book.py:269
+#: models/book.py:292
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Book with stub = \"%s\" does not exist."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Book %s already exists"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "%s file"
@@ -515,7 +515,7 @@ msgid "Infobox"
 msgstr "Infobox"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr ""
 
@@ -669,7 +669,7 @@ msgstr "View XML source"
 msgid "Work's themes "
 msgstr "Work's themes "
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
@@ -870,7 +870,7 @@ msgstr "in Wikipedia"
 msgid "in Culture.pl"
 msgstr ""
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 #, fuzzy
 #| msgid "Leading"
 msgid "Loading"
index 5a8e240..9658c9e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:39+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -101,130 +101,130 @@ msgstr "colecciones"
 msgid "All things"
 msgstr "colecciones"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Por favor, suministre un XML."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "No mostres notas a pie de página"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "No mostres temas"
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "No uses nuestro tipo de la fuente de personalización "
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr ""
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "Interlineado"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Interlineado normal"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr "Interlineado uno y medio"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Interlineado doble"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Tamaño de la fuente"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "Valor por defecto"
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Grande"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "título"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "clave de clasificación"
 
-#: models/book.py:48
+#: models/book.py:51
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Resultados por autor"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "código de idioma"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "descripción"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "fecha de creación"
 
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "cifra matriz"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr "información adicional"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "tapa"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "libro"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "libros"
 
-#: models/book.py:269
+#: models/book.py:292
 #, fuzzy, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Libro con slug = \"%s\" no existe."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Libro %s ya existe"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "%s archivo"
@@ -521,7 +521,7 @@ msgid "Infobox"
 msgstr "Infobox"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr ""
 
@@ -676,7 +676,7 @@ msgstr "Ver código fuente XML"
 msgid "Work's themes "
 msgstr "Temas de las obras"
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
@@ -879,7 +879,7 @@ msgstr "en Wikipedia"
 msgid "in Culture.pl"
 msgstr ""
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 #, fuzzy
 #| msgid "Leading"
 msgid "Loading"
index 0635404..c181fff 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:38+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -100,130 +100,130 @@ msgstr "collections"
 msgid "All things"
 msgstr "collections"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Fournissez un XML, s'il vous plaît."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "Ne montre pas d'annotations"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "N'affiche pas de thèmes"
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "N'utilise pas notre caractère usuel"
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr ""
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "Interligne"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Interligne normal"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr "Interligne et demi"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Interligne double"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Taille des caractères"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "Implicite"
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Grand(e)(s)"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "titre"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "critère de tri"
 
-#: models/book.py:48
+#: models/book.py:51
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Résultats par l'auteur"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "ébauche"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "code de langue"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "description"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "date de création"
 
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "nombre de parent"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr "information supplémentaire"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "couverture"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "livre"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "livres"
 
-#: models/book.py:269
+#: models/book.py:292
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Livre \"%s\" n'existe pas."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Livre %s existe déjà"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "fichier %s"
@@ -514,7 +514,7 @@ msgid "Infobox"
 msgstr "Infobox"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr ""
 
@@ -667,7 +667,7 @@ msgstr "Voir source XML"
 msgid "Work's themes "
 msgstr "Les thèmes de l'oeuvre"
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury (Lectures Libres)"
 
@@ -872,7 +872,7 @@ msgstr "sur Wikipédia"
 msgid "in Culture.pl"
 msgstr ""
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 #, fuzzy
 #| msgid "Leading"
 msgid "Loading"
index b6d093a..75d52fb 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:39+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -101,130 +101,130 @@ msgstr " raccolte"
 msgid "All things"
 msgstr " raccolte"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Si prega di fornire un XML."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "Non mostrare le note"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "Non visualizzare i temi"
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "Non utilizzare il nostro font personalizzato"
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr ""
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "Interlinea"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Interlinea normale"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr " Interlinea 1,5"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Interlinea doppia"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Grandezza del carattere"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "Predefinito"
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Grande"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "titolo"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "chiave di ordinamento"
 
-#: models/book.py:48
+#: models/book.py:51
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Risultati per autore"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "codice della lingua"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "descrizione"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "data di creazione"
 
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "numero del genitore"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr " ulteriori informazioni"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "copertina"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "libro"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "Libri"
 
-#: models/book.py:269
+#: models/book.py:292
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Il libro \"%s\" non esiste."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Il libro %s esiste già"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "i %s di file"
@@ -517,7 +517,7 @@ msgid "Infobox"
 msgstr "Infobox"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr ""
 
@@ -672,7 +672,7 @@ msgstr "Visualizza la fonte XML"
 msgid "Work's themes "
 msgstr "Temi dell'opera"
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
@@ -874,7 +874,7 @@ msgstr "su Wikipedia"
 msgid "in Culture.pl"
 msgstr ""
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 #, fuzzy
 #| msgid "Leading"
 msgid "Loading"
index 553d09f..c101dc4 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:40+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -101,131 +101,131 @@ msgstr "kolekcijos"
 msgid "All things"
 msgstr "kolekcijos"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Prašome pateikti XML."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "Nerodyti išnašų"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "Nerodyti motyvų"
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "Nenaudoti derinčių šriftų"
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr ""
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "eilučių intervalas"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Normalus intervalas"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr "Pusantro intervalo"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Dvigubasis intervalas"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Šrifto dydis"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "Numatytasis "
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Didelis"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "pavadinimas"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "rikiavimo raktas"
 
-#: models/book.py:48
+#: models/book.py:51
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Rezultatai pagal autorius"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "kalbos kodas"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "aprašymas"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "sukūrimo data"
 
 # sprawdz
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "pirminis numeris"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr "papildomos informacijos"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "viršelis"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "knyga"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "knygos"
 
-#: models/book.py:269
+#: models/book.py:292
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Knyga \"%s\" neegzistuoja."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Knyga %s jau egzistuoja"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "%s failas "
@@ -517,7 +517,7 @@ msgid "Infobox"
 msgstr "Infobox"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr ""
 
@@ -673,7 +673,7 @@ msgstr "Žiūrėti XML šaltinį"
 msgid "Work's themes "
 msgstr "Kūrinio motyvai"
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
@@ -875,7 +875,7 @@ msgstr "Vikipedijoje"
 msgid "in Culture.pl"
 msgstr ""
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 #, fuzzy
 #| msgid "Leading"
 msgid "Loading"
index c96290a..398b3a3 100644 (file)
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WolneLektury\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2015-12-31 16:45+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: Fundacja Nowoczesna Polska <fundacja@nowoczesnapolska.org."
@@ -80,128 +80,128 @@ msgstr "Wszystkie półki"
 msgid "All things"
 msgstr "Wszystkie przedmioty"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Proszę podać XML."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "Bez przypisów"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "Bez motywów"
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "Bez naszego kroju pisma"
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr "Bez okładki"
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "Interlinia"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Zwykła interlinia"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr "Powiększona interlinia"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Podwójna interlinia"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Rozmiar tekstu"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "Domyślnie"
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Duży"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr "Kolejka jest pełna. Proszę spróbować ponownie później."
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "tytuł"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "klucz sortowania"
 
-#: models/book.py:48
+#: models/book.py:51
 msgid "sort key by author"
 msgstr "klucz sortowania wg autora"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "Kod języka"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "opis"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "data utworzenia"
 
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "numer rodzica"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr "dodatkowe informacje"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "okładka"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr "podgląd okładki"
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "książka"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "książki"
 
-#: models/book.py:269
+#: models/book.py:292
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Utwór \"%s\" nie istnieje."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Książka %s już istnieje"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr "Ten utwór wymaga uwspółcześnienia"
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "plik %s"
@@ -478,7 +478,7 @@ msgid "Infobox"
 msgstr "Informacje"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr "Zamknij"
 
@@ -575,7 +575,7 @@ msgstr "Zwiń fragment"
 
 #: templates/catalogue/inline_tag_list.html:6
 msgid "Chosen"
-msgstr "Wybrane"
+msgstr "Wybrano"
 
 #: templates/catalogue/inline_tag_list.html:14
 #: templates/catalogue/inline_tag_list.html:23
@@ -584,7 +584,7 @@ msgstr "Dostępne"
 
 #: templates/catalogue/inline_tag_list.html:32
 msgid "Other"
-msgstr "Inne"
+msgstr "Zobacz też"
 
 #: templates/catalogue/picture_detail.html:29
 msgid "Work is licensed under "
@@ -622,7 +622,7 @@ msgstr "Źródłowy plik XML"
 msgid "Work's themes "
 msgstr "Motywy w utworze"
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
@@ -814,7 +814,7 @@ msgstr "w Wikipedii"
 msgid "in Culture.pl"
 msgstr "w Culture.pl"
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 msgid "Loading"
 msgstr "Ładowanie"
 
index 9301f02..a044b14 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:40+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -101,130 +101,130 @@ msgstr "сборы"
 msgid "All things"
 msgstr "сборы"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Укажите, пожалуйста, XML."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "Не показывать сноски"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "Не показывать темы"
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "Не используйте наш специальный шрифт"
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr ""
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "Ведение"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Нормальное ведение"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr "1,5 ведения"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Двойное ведение"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Размер шрифта"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "Умолчание"
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Большой"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "заглавие"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "ключ сортировки "
 
-#: models/book.py:48
+#: models/book.py:51
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Результаты по авторам"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "код языка"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "описание"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "дата создания"
 
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "номер родителя"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr "дополнительная информация"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "обложка"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "книга"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "книги"
 
-#: models/book.py:269
+#: models/book.py:292
 #, fuzzy, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Книга со slug = \"%s\"  не существует."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Книга %s уже существует"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, fuzzy, python-format
 msgid "%s file"
 msgstr "XML файл"
@@ -519,7 +519,7 @@ msgid "Infobox"
 msgstr "Инфобокс"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr ""
 
@@ -674,7 +674,7 @@ msgstr "Просмотр XML-источник"
 msgid "Work's themes "
 msgstr "Темы труда"
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "на WolneLektury.pl"
 
@@ -876,7 +876,7 @@ msgstr "в Википедии"
 msgid "in Culture.pl"
 msgstr ""
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 #, fuzzy
 #| msgid "Leading"
 msgid "Loading"
index 1f3fc38..377ec28 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:40+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -100,130 +100,130 @@ msgstr "колекції"
 msgid "All things"
 msgstr "колекції"
 
-#: forms.py:27
+#: forms.py:28
 msgid "Please supply an XML."
 msgstr "Введіть будь ласка XML."
 
-#: forms.py:45
+#: forms.py:47
 msgid "Don't show footnotes"
 msgstr "Сховати примітки"
 
-#: forms.py:46
+#: forms.py:48
 msgid "Don't disply themes"
 msgstr "Сховати теми"
 
-#: forms.py:47
+#: forms.py:49
 msgid "Don't use our custom font"
 msgstr "Не використовувати нашого настроюваного шрифту"
 
-#: forms.py:48
+#: forms.py:50
 msgid "Without cover"
 msgstr ""
 
-#: forms.py:51
+#: forms.py:53
 msgid "Leading"
 msgstr "Leading"
 
-#: forms.py:52
+#: forms.py:54
 msgid "Normal leading"
 msgstr "Normal leading"
 
-#: forms.py:53
+#: forms.py:55
 msgid "One and a half leading"
 msgstr "One and a half leading"
 
-#: forms.py:54
+#: forms.py:56
 msgid "Double leading"
 msgstr "Double leading"
 
-#: forms.py:56
+#: forms.py:58
 msgid "Font size"
 msgstr "Розмір шрифту"
 
-#: forms.py:57
+#: forms.py:59
 msgid "Default"
 msgstr "За умовчанням"
 
-#: forms.py:58
+#: forms.py:60
 msgid "Big"
 msgstr "Великий"
 
-#: forms.py:80
+#: forms.py:82
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:45 models/collection.py:14
+#: models/book.py:48 models/collection.py:14
 msgid "title"
 msgstr "заголовок"
 
-#: models/book.py:46 models/tag.py:35
+#: models/book.py:49 models/tag.py:35
 msgid "sort key"
 msgstr "ключ сортування"
 
-#: models/book.py:48
+#: models/book.py:51
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Результати за авторами"
 
-#: models/book.py:49 models/book.py:50 models/collection.py:15
+#: models/book.py:52 models/book.py:53 models/collection.py:15
 #: models/collection.py:18 models/tag.py:34
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:51
+#: models/book.py:54
 msgid "language code"
 msgstr "мовний код"
 
-#: models/book.py:52 models/book.py:173 models/collection.py:16
+#: models/book.py:55 models/book.py:182 models/collection.py:16
 #: models/tag.py:38 models/tag.py:156
 msgid "description"
 msgstr "опис"
 
-#: models/book.py:53 models/book.py:54 models/bookmedia.py:34 models/tag.py:45
+#: models/book.py:56 models/book.py:57 models/bookmedia.py:34 models/tag.py:45
 #: models/tag.py:46
 msgid "creation date"
 msgstr "дата створення"
 
-#: models/book.py:55
+#: models/book.py:58
 msgid "parent number"
 msgstr "номер батька"
 
-#: models/book.py:56 models/bookmedia.py:35
+#: models/book.py:59 models/bookmedia.py:35
 msgid "extra information"
 msgstr "додаткова інформація"
 
-#: models/book.py:62
+#: models/book.py:65
 msgid "cover"
 msgstr "обкладинка"
 
-#: models/book.py:68
+#: models/book.py:71
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:93 models/collection.py:22
+#: models/book.py:96 models/collection.py:22
 msgid "book"
 msgstr "книжка"
 
-#: models/book.py:94
+#: models/book.py:97
 msgid "books"
 msgstr "книжки"
 
-#: models/book.py:269
+#: models/book.py:292
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Книжка \"%s\" не існує."
 
-#: models/book.py:282
+#: models/book.py:305
 #, python-format
 msgid "Book %s already exists"
 msgstr "Книжка %s вже існує"
 
-#: models/book.py:529
+#: models/book.py:555
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:557 models/bookmedia.py:29
+#: models/book.py:583 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "файл %s"
@@ -516,7 +516,7 @@ msgid "Infobox"
 msgstr "Інфобокс"
 
 #: templates/catalogue/book_text.html:56
-#: templates/catalogue/viewer_base.html:53
+#: templates/catalogue/viewer_base.html:54
 msgid "Close"
 msgstr ""
 
@@ -669,7 +669,7 @@ msgstr "Дивитись джерело XML"
 msgid "Work's themes "
 msgstr "Теми у творі"
 
-#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:9
+#: templates/catalogue/player.html:11 templates/catalogue/viewer_base.html:10
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
@@ -871,7 +871,7 @@ msgstr "на Вікіпедії"
 msgid "in Culture.pl"
 msgstr ""
 
-#: templates/catalogue/viewer_base.html:55
+#: templates/catalogue/viewer_base.html:56
 #, fuzzy
 #| msgid "Leading"
 msgid "Loading"
index 676f9c0..0ed9716 100644 (file)
@@ -4,7 +4,9 @@
 #
 from collections import OrderedDict
 from random import randint
+import os.path
 import re
+import urllib
 from django.conf import settings
 from django.db import connection, models, transaction
 from django.db.models import permalink
@@ -19,9 +21,10 @@ from newtagging import managers
 from catalogue import constants
 from catalogue.fields import EbookField
 from catalogue.models import Tag, Fragment, BookMedia
-from catalogue.utils import create_zip
+from catalogue.utils import create_zip, gallery_url, gallery_path
 from catalogue import app_settings
 from catalogue import tasks
+from wolnelektury.utils import makedirs
 
 bofh_storage = BofhFileSystemStorage()
 
@@ -103,8 +106,11 @@ class Book(models.Model):
         except AttributeError:
             return ''
 
-    def author_str(self):
-        return ", ".join(str(t) for t in self.tags.filter(category='author'))
+    def authors(self):
+        return self.tags.filter(category='author')
+
+    def author_unicode(self):
+        return ", ".join(self.authors().values_list('name', flat=True))
 
     def save(self, force_insert=False, force_update=False, **kwargs):
         from sortify import sortify
@@ -113,8 +119,8 @@ class Book(models.Model):
         self.title = unicode(self.title)  # ???
 
         try:
-            author = self.tags.filter(category='author')[0].sort_key
-        except IndexError:
+            author = self.authors().first().sort_key
+        except AttributeError:
             author = u''
         self.sort_key_author = author
 
@@ -131,6 +137,12 @@ class Book(models.Model):
     def create_url(slug):
         return 'catalogue.views.book_detail', [slug]
 
+    def gallery_path(self):
+        return gallery_path(self.slug)
+
+    def gallery_url(self):
+        return gallery_url(self.slug)
+
     @property
     def name(self):
         return self.title
@@ -141,6 +153,9 @@ class Book(models.Model):
     def language_name(self):
         return dict(settings.LANGUAGES).get(self.language_code(), "")
 
+    def is_foreign(self):
+        return self.language_code() != settings.LANGUAGE_CODE
+
     def has_media(self, type_):
         if type_ in Book.formats:
             return bool(getattr(self, "%s_file" % type_))
@@ -236,6 +251,21 @@ class Book(models.Model):
             index.index.rollback()
             raise e
 
+    def download_pictures(self, remote_gallery_url):
+        gallery_path = self.gallery_path()
+        # delete previous files, so we don't include old files in ebooks
+        if os.path.isdir(gallery_path):
+            for filename in os.listdir(gallery_path):
+                file_path = os.path.join(gallery_path, filename)
+                os.unlink(file_path)
+        ilustr_elements = list(self.wldocument().edoc.findall('//ilustr'))
+        if ilustr_elements:
+            makedirs(gallery_path)
+            for ilustr in ilustr_elements:
+                ilustr_src = ilustr.get('src')
+                ilustr_path = os.path.join(gallery_path, ilustr_src)
+                urllib.urlretrieve('%s/%s' % (remote_gallery_url, ilustr_src), ilustr_path)
+
     @classmethod
     def from_xml_file(cls, xml_file, **kwargs):
         from django.core.files import File
@@ -254,7 +284,7 @@ class Book(models.Model):
 
     @classmethod
     def from_text_and_meta(cls, raw_file, book_info, overwrite=False, dont_build=None, search_index=True,
-                           search_index_tags=True):
+                           search_index_tags=True, remote_gallery_url=None):
         if dont_build is None:
             dont_build = set()
         dont_build = set.union(set(dont_build), set(app_settings.DONT_BUILD))
@@ -322,6 +352,9 @@ class Book(models.Model):
         cls.repopulate_ancestors()
         tasks.update_counters.delay()
 
+        if remote_gallery_url:
+            book.download_pictures(remote_gallery_url)
+
         # No saves beyond this point.
 
         # Build cover.
@@ -448,7 +481,7 @@ class Book(models.Model):
         return books
 
     def pretty_title(self, html_links=False):
-        names = [(tag.name, tag.get_absolute_url()) for tag in self.tags.filter(category='author')]
+        names = [(tag.name, tag.get_absolute_url()) for tag in self.authors().only('name', 'category', 'slug')]
         books = self.parents() + [self]
         names.extend([(b.title, b.get_absolute_url()) for b in books])
 
@@ -478,8 +511,7 @@ class Book(models.Model):
         """
 
         books_by_parent = {}
-        books = cls.objects.all().order_by('parent_number', 'sort_key').only(
-                'title', 'parent', 'slug')
+        books = cls.objects.order_by('parent_number', 'sort_key').only('title', 'parent', 'slug')
         if book_filter:
             books = books.filter(book_filter).distinct()
 
@@ -499,7 +531,7 @@ class Book(models.Model):
             books_by_author[tag] = []
 
         for book in books_by_parent.get(None, ()):
-            authors = list(book.tags.filter(category='author'))
+            authors = list(book.authors().only('pk'))
             if authors:
                 for author in authors:
                     books_by_author[author].append(book)
index b87e9eb..3083181 100644 (file)
@@ -3,6 +3,7 @@
 {% load common_tags catalogue_tags %}
 {% load ssify %}
 {% load build_absolute_uri from fnp_common %}
+{% load cache %}
 
 {% block titleextra %}{{ book.pretty_title }}{% endblock %}
 {% block ogimage %}{% if book.cover %}{{ book.cover.url|build_absolute_uri:request }}{% endif %}{% endblock %}
 <section class="see-also" style="display: inline-block;">
 <h1>{% trans "Other versions" %}:</h1>
 {% for rel in book.other_versions %}
-    {% ssi_include 'catalogue_book_mini' pk=rel.pk %}
+    {% cache 86400 book_mini_box rel.pk %}
+      {% include 'catalogue/book_mini_box.html' with book=rel %}
+    {% endcache %}
+    {#% ssi_include 'catalogue_book_mini' pk=rel.pk %#}
 {% endfor %}
 </section>
 {% endif %}
index 88ec16d..b74d651 100755 (executable)
@@ -1,22 +1,24 @@
 {% spaceless %}
-<div class="book-mini-box">
-    <div class="book-mini-box-inner">
-    {% if with_link %}
-    <a href="{{ book.get_absolute_url }}">
-    {% endif %}
-        {% if book.cover_thumb %}
-            <img src="{{ book.cover_thumb.url }}" alt="{{ author_str }} – {{ book.title }}" class="cover" />
+  {% with book.author_unicode as author %}
+    <div class="book-mini-box">
+      <div class="book-mini-box-inner">
+        {% if not no_link %}
+          <a href="{{ book.get_absolute_url }}">
         {% endif %}
-        {% if show_lang %}
+          {% if book.cover_thumb %}
+            <img src="{{ book.cover_thumb.url }}" alt="{{ author }} – {{ book.title }}" class="cover" />
+          {% endif %}
+          {% if book.is_foreign %}
             <span class="language" title="{{ book.language_name }}">{{ book.language_code }}</span>
-        {% endif %}
-        <div class="desc">
-            <span class="mono author">{{ author_str }}</span>
+          {% endif %}
+          <div class="desc">
+            <span class="mono author">{{ author }}</span>
             <span class="title">{{ book.title }}</span>
-        </div>
-    {% if with_link %}
-    </a>
-    {% endif %}
+          </div>
+        {% if not no_link %}
+          </a>
+        {% endif %}
+      </div>
     </div>
-</div>
+  {% endwith %}
 {% endspaceless %}
\ No newline at end of file
index 339cfc7..f51e565 100644 (file)
@@ -2,6 +2,7 @@
 {% load i18n %}
 {% load catalogue_tags ssify %}
 {% load thumbnail %}
+{% load cache %}
 
 
 {% block title %}{{ book.pretty_title }}{% endblock %}
     <ul>
     {% spaceless %}
     {% for other_version in book.other_versions %}
-        <li><a class="display-other" 
-            data-other="{{ other_version.html_file.url }}"
-            href="{% url 'book_text' other_version.slug %}">
-                {% ssi_include 'catalogue_book_mini_nolink' pk=other_version.pk %}
-                </a>
+        <li>
+          <a class="display-other"
+              data-other="{{ other_version.html_file.url }}"
+              href="{% url 'book_text' other_version.slug %}">
+            {% cache 86400 book_mini_box other_version.pk %}
+              {% include 'catalogue/book_mini_box.html' with book=other_version no_link=True %}
+            {% endcache %}
+            {#% ssi_include 'catalogue_book_mini_nolink' pk=other_version.pk %#}
+          </a>
         </li>
     {% endfor %}
     {% endspaceless %}
index 81e0b38..1d9206b 100644 (file)
@@ -1,13 +1,17 @@
 {% spaceless %}
 {% load i18n %}
 {% load ssi_include from ssify %}
+{% load cache %}
 <div class="collection-box white-box">
     <h2><a href="{{ obj.get_absolute_url }}">{% trans "Collection" %}: {{ obj }}</a></h2>
     {% if obj.description %}
     {{ obj.description|safe|truncatewords_html:40 }}
     {% endif %}
-    {% for b in obj.get_books|slice:":5" %}
-        {% ssi_include 'catalogue_book_mini' pk=b.pk %}
+    {% for book in obj.get_books|slice:":5" %}
+        {% cache 86400 book_mini_box book.pk %}
+          {% include 'catalogue/book_mini_box.html' %}
+        {% endcache %}
+        {#% ssi_include 'catalogue_book_mini' pk=book.pk %#}
     {% endfor %}
     {% with obj.get_books.count|add:-5 as more %}
         {% if more > 0 %}
index cf53e2d..802fcb1 100755 (executable)
@@ -4,7 +4,6 @@
 {% if choices %}
     {% if category_choices %}
         <ul>
-        <li class="header">{% trans "Chosen" %}:</li>
         {% for tag in category_choices %}
             <li class="active">{{ tag }} <a href="{% catalogue_url list_type choices -tag %}">X</a></li>
         {% endfor %}
@@ -13,7 +12,6 @@
 {% endif %}
 {% if tags %}
     <ul>
-        <li class="header">{% trans "Available" %}:</li>
         {% for tag in tags %}
             <li><a href="{% catalogue_url list_type choices tag %}">{{ tag }}{% if tag.count %}&nbsp;({{ tag.count }}){% endif %}</a></li>
         {% endfor %}
index 8e8c9bb..91f0fa6 100755 (executable)
@@ -4,6 +4,7 @@
     {% load i18n pipeline %}
     {% load catalogue_tags %}
     {% load thumbnail %}
+    {% load piwik_tags %}
     <head>
         <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
         <meta name="description"
 </div>
 
 <div style="clear: both"></div>
-
-<div class="jp-type-playlist">
-  <div id="jplayer" class="jp-jplayer"
-    data-supplied="{% if have_oggs %}oga,{% endif %}mp3"></div>
-  <div id="jp_container_1" class="jp-audio">
-    <div class="jp-type-single">
-      <div class="jp-gui jp-interface">
-        <ul class="jp-controls">
-          <li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
-          <li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
-          <li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
-          <li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
-          <li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
-          <li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
-        </ul>
-        <div class="jp-progress">
-          <div class="jp-seek-bar">
-            <div class="jp-play-bar"></div>
-          </div>
-        </div>
-        <div class="jp-volume-bar">
-          <div class="jp-volume-bar-value"></div>
-        </div>
-        <div class="jp-time-holder">
-          <div class="jp-current-time"></div>
-          <div class="jp-duration"></div>
-        </div>
-      </div>
-
-      <div class="jp-playlist">
-        <ul>
-
-        {% for i in audiobooks %}
-          <li>
-            <div class='play'>{{ i.mp3.name }}
-            <div class='extra-info'>
-              {% trans "Artist:" %}: <span class='artist'>{{ i.mp3.extra_info.artist_name }}</span>,
-              {% trans "director:" %}: <span class='director'>{{ i.mp3.extra_info.director_name }}</span>
-            </div>
-            </div>
-          </li>
-        {% endfor %}
-
-        </ul>
-      </div>
-
-      <div class="jp-no-solution">
-        <span>Update Required</span>
-        To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a>.
-      </div>
-    </div>
-  </div>
-</div>
-
+        {% include "catalogue/snippets/jplayer.html" %}
 
         {% if projects|length > 1 %}
             <p>{% trans "Audiobooks were prepared as a part of the projects:" %}</p>
         <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
         {% javascript "player" %}
 
-        {{ piwik_tag|safe }}
+        {% tracking_code %}
     </body>
 </html>
index 6407d5a..03d7793 100755 (executable)
@@ -2,13 +2,17 @@
 {% load catalogue_random_book from catalogue_tags %}
 {% load picture_random_picture from picture_tags %}
 {% load ssi_include from ssify %}
+{% load cache %}
 
 {% for pic in pics %}
     {% ssi_include 'picture_mini' pk=pic.pk %}
 {% endfor %}
 
 {% for book in books %}
-    {% ssi_include 'catalogue_book_mini' pk=book.pk %}
+    {% cache 86400 book_mini_box book.pk %}
+      {% include 'catalogue/book_mini_box.html' %}
+    {% endcache %}
+    {#% ssi_include 'catalogue_book_mini' pk=book.pk %#}
 {% endfor %}
 
 {% if random %}
index 416b9de..2f2394b 100644 (file)
@@ -2,6 +2,7 @@
 {% load i18n %}
 {% load static from staticfiles %}
 {% load pipeline %}
+{% load piwik_tags %}
 <html class="no-js">
     <head>
         <meta charset="utf-8">
@@ -67,7 +68,7 @@
         </script>
         {% javascript "book_text" %}
 
-        {{ piwik_tag|safe }}
+        {% tracking_code %}
         {% block extrabody %}{% endblock %}
         <script src="{% static "js/contrib/modernizr.custom.19652.js" %}"></script>
     </body>
index 947fbf2..6f50ad7 100644 (file)
@@ -378,7 +378,7 @@ def plain_list(context, object_list, with_initials=True, by_author=False, choice
                 initial = obj.get_initial().upper()
             if initial != last_initial:
                 last_initial = initial
-                names.append((obj.author_str() if by_author else initial, []))
+                names.append((obj.author_unicode() if by_author else initial, []))
         names[-1][1].append(obj)
     return {
         'paged': paged,
index e5d5b0c..a445268 100644 (file)
@@ -97,7 +97,7 @@ class BookImportLogicTests(WLTestCase):
 
         book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info)
         self.assert_([('theme', 'love')],
-                     [(tag.category, tag.slug) for tag in book.fragments.all()[0].tags.filter(category='theme')])
+                     book.fragments.all()[0].tags.filter(category='theme').values_list('category', 'slug'))
 
     def test_book_with_no_theme(self):
         """ fragments with no themes shouldn't be created at all """
index 2ba617e..d5aa72c 100644 (file)
@@ -232,7 +232,7 @@ class TestIdenticalTag(WLTestCase):
 
         related_themes = book.related_themes()
         for category in 'author', 'kind', 'genre', 'epoch':
-            self.assertTrue('tag' in [tag.slug for tag in book.tags.filter(category=category)],
+            self.assertTrue('tag' in book.tags.filter(category=category).values_list('slug', flat=True),
                             'missing related tag for %s' % category)
         self.assertTrue('tag' in [tag.slug for tag in related_themes])
 
@@ -276,7 +276,7 @@ class BookTagsTests(WLTestCase):
         book = models.Book.objects.get(slug='parent')
         related_themes = book.related_themes()
 
-        self.assertEqual([t.slug for t in book.tags.filter(category='author')],
+        self.assertEqual([t.slug for t in book.authors()],
                          ['common-man'])
         self.assertEqual([t.slug for t in book.tags.filter(category='kind')],
                          ['kind'])
index e79b439..e94c67d 100644 (file)
@@ -4,6 +4,7 @@
 #
 from collections import defaultdict
 import hashlib
+import os.path
 import random
 import re
 import time
@@ -345,3 +346,11 @@ class AppSettings(object):
 
 def delete_from_cache_by_language(cache, key_template):
     cache.delete_many([key_template % lc for lc, ln in settings.LANGUAGES])
+
+
+def gallery_path(slug):
+    return os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, slug)
+
+
+def gallery_url(slug):
+    return '%s%s%s/' % (settings.MEDIA_URL, settings.IMAGE_DIR, slug)
index 98dafc5..1955137 100644 (file)
@@ -352,7 +352,7 @@ def _no_diacritics_regexp(query):
 
     def repl(m):
         l = m.group()
-        return u"(%s)" % '|'.join(names[l])
+        return u"(?:%s)" % '|'.join(names[l])
 
     return re.sub(u'[%s]' % (u''.join(names.keys())), repl, query)
 
@@ -640,13 +640,14 @@ class CustomPDFFormView(AjaxableFormView):
 
 @ssi_included
 def book_mini(request, pk, with_link=True):
-    book = get_object_or_404(Book, pk=pk)
-    author_str = ", ".join(tag.name for tag in book.tags.filter(category='author'))
+    # book = get_object_or_404(Book, pk=pk)
+    try:
+        book = Book.objects.only('cover_thumb', 'title', 'language', 'slug').get(pk=pk)
+    except Book.DoesNotExist:
+        raise Http404
     return render(request, 'catalogue/book_mini_box.html', {
         'book': book,
-        'author_str': author_str,
-        'with_link': with_link,
-        'show_lang': book.language_code() != settings.LANGUAGE_CODE,
+        'no_link': not with_link,
     })
 
 
index d333cd3..8886470 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-04-11 22:56+0100\n"
 "Last-Translator: Kamil <kjaklukowski@gmail.com>\n"
 "Language-Team: \n"
index 18b2ba6..635de59 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 20:05+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 68f29f0..2ecb9a7 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-18 13:02+0100\n"
 "Last-Translator: Anna Jopp <aniajopp@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index e7d784e..e5ad2e6 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-22 20:52+0100\n"
 "Last-Translator: Ela Janota <amarillis5@wp.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 47672b5..4fc0a0e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-21 16:52+0100\n"
 "Last-Translator: xxx\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 3c05f5f..f3a44a9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-01 16:13+0100\n"
 "Last-Translator: Aneta\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index c13dc77..40caae6 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2010-05-19 16:19\n"
 "Last-Translator: <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 1e5a966..b560694 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 22:10+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 3182261..468f751 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 17:29+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a90ee76..fe24a22 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 45ae17e..567623c 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a90ee76..fe24a22 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 884bf76..eab8f9f 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a90ee76..fe24a22 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 7fb55c3..2345fba 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index cb79b05..592353e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WolneLektury-dictionary\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2014-10-24 11:58+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a8b8fa4..a121563 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a8b8fa4..a121563 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 309c457..cd7f6ba 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index c2609a7..a8705f8 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 309c457..cd7f6ba 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 0500031..2b2c45f 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 309c457..cd7f6ba 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 857c266..bbd6773 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 79521fd..6544aea 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2015-04-16 13:13+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 62fb327..f171a27 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 62fb327..f171a27 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 3ebd4cb..b63a244 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Kamil <kjaklukowski@gmail.com>\n"
 "Language-Team: de <yourteam@example.com>\n"
index ef3bfbb..21cf79f 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 401e8bb..0f22e0f 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: \n"
 "Last-Translator: KG <kamila.gawron87@gmail.com>\n"
 "Language-Team: es <yourteam@example.com>\n"
index ff57511..fb8736a 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index bd4b5e9..474bc91 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index e1dbbc2..fe08390 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 9959c6c..7a19446 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-01-27 16:38+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 2203bf4..b8c6829 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 2557447..00df8d6 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Natalia Kertyczak <natalczyk@o2.pl>\n"
 "Language-Team: uk <yourteam@example.com>\n"
index 29a47cd..c9b9f8e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 34deae9..226e293 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 29a47cd..c9b9f8e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index e71ce87..b9a308b 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 29a47cd..c9b9f8e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index b22ec2e..f503401 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 99fb025..45da5a9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-01-27 16:38+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index eb7b0f1..9939f7f 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index eb7b0f1..9939f7f 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ab2f118..6a9e972 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ad260a0..d0a6681 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ab2f118..6a9e972 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a62f0fb..2fcaa38 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ab2f118..6a9e972 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 9e4e430..f3ce10b 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 882d2cc..901374e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index c486f2c..1f05fc6 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index c486f2c..1f05fc6 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 5779114..06615bb 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-13 12:19+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: \n"
index b427d55..e89b7f1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 20:05+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 8b0944f..f6b456c 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-28 12:01+0100\n"
 "Last-Translator: Aneta <afroneta@wp.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 9ddc31f..882ec77 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-23 17:28+0100\n"
 "Last-Translator: Ela Janota <amarillis5@wp.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 01d117c..36870df 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-18 13:41+0100\n"
 "Last-Translator: xxx\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ba6edcb..4c06368 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-01 16:13+0100\n"
 "Last-Translator: Aneta\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 477eb3e..959fea5 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2010-05-19 16:20\n"
 "Last-Translator: <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 3084397..fae547e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 22:11+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index af6fac7..23e1a37 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-29 23:08+0100\n"
 "Last-Translator: Anna Vasiutynska <was_ania@op.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 0c18eb6..6d0a9b2 100644 (file)
@@ -2,16 +2,19 @@
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
-from oaipmh import server, common, metadata, error
-from catalogue.models import Book, Tag
-from api.models import Deleted
-from api.handlers import WL_BASE
-from librarian import WLURI
 from datetime import datetime
 from lxml import etree
+
 from django.conf import settings
+from django.contrib.contenttypes.models import ContentType
 from django.contrib.sites.models import Site
 from django.utils import timezone
+from oaipmh import server, common, metadata, error
+
+from api.handlers import WL_BASE
+from api.models import Deleted
+from catalogue.models import Book
+from librarian import WLURI
 
 
 def make_time_naive(d):
@@ -73,75 +76,76 @@ class Catalogue(common.ResumptionOAIPMH):
 
         try:
             earliest_delete = \
-                Deleted.objects.exclude(slug__exact=u'').ordery_by('deleted_at')[0].deleted_at
+                Deleted.objects.exclude(slug__exact=u'').order_by('deleted_at')[0].deleted_at
         except IndexError:
             earliest_delete = year_zero
 
         self.earliest_datestamp = earliest_change if earliest_change <= earliest_delete else earliest_delete
 
-    # @staticmethod
-    # def metadata(book):
-    #     try:
-    #         xml = etree.parse(book.xml_file)
-    #     finally:
-    #         book.xml_file.close()
-    #     md = wl_dc_reader(xml)
-    #     m = md.getMap()
-    #     if book.parent:
-    #         m['isPartOf'] = [str(WLURI.from_slug(book.parent.slug))]
-    #     return m
-
-    # WTF
-    # def record_for_book(self, book, headers_only=False):
-    #     meta = None
-    #     identifier = self.slug_to_identifier(book.slug)
-    #     if isinstance(book, Book):
-    #         # setSpec = map(self.tag_to_setspec, book.tags.filter(category__in=self.TAG_CATEGORIES))
-    #         header = common.Header(identifier, make_time_naive(book.changed_at), [], False)
-    #         if not headers_only:
-    #             meta = common.Metadata(self.metadata(book))
-    #         about = None
-    #     elif isinstance(book, Deleted):
-    #         header = common.Header(identifier, make_time_naive(book.deleted_at), [], True)
-    #         if not headers_only:
-    #             meta = common.Metadata({})
-    #         about = None
-    #     if headers_only:
-    #         return header
-    #     return header, meta, about
-
-    # def identify(self, **kw):
-    #     ident = common.Identify(
-    #         'Wolne Lektury',  # generate
-    #         '%s/oaipmh' % unicode(WL_BASE),  # generate
-    #         '2.0',  # version
-    #         [m[1] for m in settings.MANAGERS],  # adminEmails
-    #         make_time_naive(self.earliest_datestamp),  # earliest datestamp of any change
-    #         'persistent',  # deletedRecord
-    #         'YYYY-MM-DDThh:mm:ssZ',  # granularity
-    #         ['identity'],  # compression
-    #         []  # descriptions
-    #         )
-    #     return ident
-
-    # def books(self, tag, from_, until):
-    #     if tag:
-    #         # we do not support sets, since they are problematic for deleted books.
-    #         raise error.NoSetHierarchyError("Wolne Lektury does not support sets.")
-    #         # books = Book.tagged.with_all([tag])
-    #     else:
-    #         books = Book.objects.all()
-    #     deleted = Deleted.objects.exclude(slug__exact=u'')
-    #
-    #     books = books.order_by('changed_at')
-    #     deleted = deleted.order_by('deleted_at')
-    #     if from_:
-    #         books = books.filter(changed_at__gte=from_)
-    #         deleted = deleted.filter(deleted_at__gte=from_)
-    #     if until:
-    #         books = books.filter(changed_at__lte=until)
-    #         deleted = deleted.filter(deleted_at__lte=until)
-    #     return list(books) + list(deleted)
+    @staticmethod
+    def metadata(book):
+        try:
+            xml = etree.parse(book.xml_file)
+        finally:
+            book.xml_file.close()
+        md = wl_dc_reader(xml)
+        m = md.getMap()
+        if book.parent:
+            m['isPartOf'] = [str(WLURI.from_slug(book.parent.slug))]
+        return m
+
+    def record_for_book(self, book, headers_only=False):
+        meta = None
+        identifier = self.slug_to_identifier(book.slug)
+        if isinstance(book, Book):
+            # setSpec = map(self.tag_to_setspec, book.tags.filter(category__in=self.TAG_CATEGORIES))
+            header = common.Header(identifier, make_time_naive(book.changed_at), [], False)
+            if not headers_only:
+                meta = common.Metadata(self.metadata(book))
+            about = None
+        elif isinstance(book, Deleted):
+            header = common.Header(identifier, make_time_naive(book.deleted_at), [], True)
+            if not headers_only:
+                meta = common.Metadata({})
+            about = None
+        else:
+            raise TypeError('Unknown book class')
+        if headers_only:
+            return header
+        return header, meta, about
+
+    def identify(self, **kw):
+        ident = common.Identify(
+            'Wolne Lektury',  # generate
+            '%s/oaipmh' % unicode(WL_BASE),  # generate
+            '2.0',  # version
+            [m[1] for m in settings.MANAGERS],  # adminEmails
+            make_time_naive(self.earliest_datestamp),  # earliest datestamp of any change
+            'persistent',  # deletedRecord
+            'YYYY-MM-DDThh:mm:ssZ',  # granularity
+            ['identity'],  # compression
+            []  # descriptions
+            )
+        return ident
+
+    def books(self, tag, from_, until):
+        if tag:
+            # we do not support sets, since they are problematic for deleted books.
+            raise error.NoSetHierarchyError("Wolne Lektury does not support sets.")
+            # books = Book.tagged.with_all([tag])
+        else:
+            books = Book.objects.all()
+        deleted = Deleted.objects.exclude(slug__exact=u'')
+
+        books = books.order_by('changed_at')
+        deleted = deleted.order_by('deleted_at')
+        if from_:
+            books = books.filter(changed_at__gte=from_)
+            deleted = deleted.filter(deleted_at__gte=from_)
+        if until:
+            books = books.filter(changed_at__lte=until)
+            deleted = deleted.filter(deleted_at__lte=until)
+        return list(books) + list(deleted)
 
     # @staticmethod
     # def tag_to_setspec(tag):
@@ -158,82 +162,79 @@ class Catalogue(common.ResumptionOAIPMH):
     #         return tag
     #     raise error.NoSetHierarchyError("Setspec should have two components: category:slug")
 
-    # def getRecord(self, **kw):
-    #     """Returns (header, metadata, about) for given record."""
-    #     slug = self.identifier_to_slug(kw['identifier'])
-    #     try:
-    #         book = Book.objects.get(slug=slug)
-    #         return self.record_for_book(book)
-    #     except Book.DoesNotExist:
-    #         book_type = ContentType.objects.get_for_model(Book)
-    #         try:
-    #             deleted_book = Deleted.objects.get(content_type=book_type,
-    #                                               slug=slug)
-    #         except:
-    #             raise error.IdDoesNotExistError("No item for this identifier")
-    #         return self.record_for_book(deleted_book)
-
-    # def validate_kw(self, kw):
-    #     if 'resumptionToken' in kw:
-    #         raise error.BadResumptionTokenError("No resumption token support at this point")
-    #     if 'metadataPrefix' in kw and not self.metadata_registry.hasWriter(kw['metadataPrefix']):
-    #         raise error.CannotDisseminateFormatError("This format is not supported")
-
-    # def identifier_to_slug(self, ident):
-    #     return ident.split(':')[-1]
-
-    # def slug_to_identifier(self, slug):
-    #     return self.oai_id % slug
-
-    # def listIdentifiers(self, **kw):
-    #     self.validate_kw(kw)
-    #     records = [self.record_for_book(book, headers_only=True) for
-    #                book in self.books(None,
-    #                        kw.get('from_', None),
-    #                        kw.get('until', None))]
-    #     return records, None
-
-    # def listRecords(self, **kw):
-    #     """
-    #         can get a resumptionToken kw.
-    #         returns result, token
-    #     """
-    #     self.validate_kw(kw)
-    #     records = [self.record_for_book(book) for
-    #                book in self.books(None,
-    #                        kw.get('from_', None),
-    #                        kw.get('until', None))]
-    #
-    #     return records, None
-
-    # def listMetadataFormats(self, **kw):
-    #     formats = [
-    #         ('oai_dc',
-    #          'http://www.openarchives.org/OAI/2.0/oai_dc.xsd',
-    #          server.NS_OAIDC),
-    #         ('qdc',
-    #          'http://dublincore.org/schemas/xmls/qdc/2006/01/06/dcterms.xsd',
-    #          NS_DCTERMS)]
-    #     if 'identifier' in kw:
-    #         slug = self.identifier_to_slug(kw['identifier'])
-    #         try:
-    #             b = Book.objects.get(slug=slug)
-    #             return formats
-    #         except:
-    #             try:
-    #                 d = Deleted.objects.get(slug=slug)
-    #                 return []
-    #             except:
-    #                 raise error.IdDoesNotExistError("This id does not exist")
-    #     else:
-    #         return formats
-
-    # def listSets(self, **kw):
-    #     raise error.NoSetHierarchyError("Wolne Lektury does not support sets.")
-    #     # tags = []
-    #     # for category in Catalogue.TAG_CATEGORIES:
-    #     #     for tag in Tag.objects.filter(category=category):
-    #     #         tags.append(("%s:%s" % (tag.category, tag.slug),
-    #     #                      tag.name,
-    #     #                      tag.description))
-    #     # return tags, None
+    def getRecord(self, **kw):
+        """Returns (header, metadata, about) for given record."""
+        slug = self.identifier_to_slug(kw['identifier'])
+        try:
+            book = Book.objects.get(slug=slug)
+            return self.record_for_book(book)
+        except Book.DoesNotExist:
+            book_type = ContentType.objects.get_for_model(Book)
+            try:
+                deleted_book = Deleted.objects.get(content_type=book_type, slug=slug)
+            except:
+                raise error.IdDoesNotExistError("No item for this identifier")
+            return self.record_for_book(deleted_book)
+
+    def validate_kw(self, kw):
+        if 'resumptionToken' in kw:
+            raise error.BadResumptionTokenError("No resumption token support at this point")
+        if 'metadataPrefix' in kw and not self.metadata_registry.hasWriter(kw['metadataPrefix']):
+            raise error.CannotDisseminateFormatError("This format is not supported")
+
+    def identifier_to_slug(self, ident):
+        return ident.split(':')[-1]
+
+    def slug_to_identifier(self, slug):
+        return self.oai_id % slug
+
+    def listIdentifiers(self, **kw):
+        self.validate_kw(kw)
+        records = [self.record_for_book(book, headers_only=True) for
+                   book in self.books(None, kw.get('from_'), kw.get('until'))]
+        return records, None
+
+    def listRecords(self, **kw):
+        """
+            can get a resumptionToken kw.
+            returns result, token
+        """
+        self.validate_kw(kw)
+        records = [self.record_for_book(book) for
+                   book in self.books(None,
+                           kw.get('from_', None),
+                           kw.get('until', None))]
+
+        return records, None
+
+    def listMetadataFormats(self, **kw):
+        formats = [
+            ('oai_dc',
+             'http://www.openarchives.org/OAI/2.0/oai_dc.xsd',
+             server.NS_OAIDC),
+            ('qdc',
+             'http://dublincore.org/schemas/xmls/qdc/2006/01/06/dcterms.xsd',
+             NS_DCTERMS)]
+        if 'identifier' in kw:
+            slug = self.identifier_to_slug(kw['identifier'])
+            try:
+                Book.objects.get(slug=slug)
+                return formats
+            except Book.DoesNotExist:
+                try:
+                    Deleted.objects.get(slug=slug)
+                    return []
+                except Deleted.DoesNotExist:
+                    raise error.IdDoesNotExistError("This id does not exist")
+        else:
+            return formats
+
+    def listSets(self, **kw):
+        raise error.NoSetHierarchyError("Wolne Lektury does not support sets.")
+        # tags = []
+        # for category in Catalogue.TAG_CATEGORIES:
+        #     for tag in Tag.objects.filter(category=category):
+        #         tags.append(("%s:%s" % (tag.category, tag.slug),
+        #                      tag.name,
+        #                      tag.description))
+        # return tags, None
index 001b69d..189ff0f 100644 (file)
@@ -190,14 +190,14 @@ class AcquisitionFeed(Feed):
 
     def item_author_name(self, book):
         try:
-            return book.tags.filter(category='author')[0].name
-        except KeyError:
+            return book.authors().first().name
+        except AttributeError:
             return u''
 
     def item_author_link(self, book):
         try:
-            return book.tags.filter(category='author')[0].get_absolute_url()
-        except KeyError:
+            return book.authors().first().get_absolute_url()
+        except AttributeError:
             return u''
 
     def item_enclosure_url(self, book):
index caaf156..dd13db1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-04-15 13:43+0100\n"
 "Last-Translator: Kamil <kjaklukowski@gmail.com>\n"
 "Language-Team: \n"
index 36375a5..e31bff8 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 20:05+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 633de34..f0fa375 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-05-17 22:05+0100\n"
 "Last-Translator: KG <kamila.gawron87@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 018f7b5..22190b4 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-22 20:58+0100\n"
 "Last-Translator: Ela Janota <amarillis5@wp.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 13a89a8..6e9c9b1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-21 17:06+0100\n"
 "Last-Translator: xxx\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 9d249ac..5e8207b 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-04-03 18:01+0100\n"
 "Last-Translator: Karolina Zuber <suomija@o2.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 7739004..f72a2c8 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-06-11 15:47+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 2eac44e..9970d5c 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 22:11+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 5fa8d7a..7c0cfea 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-05-28 14:18+0100\n"
 "Last-Translator: Natalia Kertyczak <natalczyk@o2.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 7922470..412f3f1 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 89f2ca5..f490b07 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 7922470..412f3f1 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index c7e179d..2c5e095 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 7922470..412f3f1 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index bf62654..3670bba 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a46b9c2..8b8d4ac 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2014-10-24 11:48+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index abc0c17..915ba7a 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index abc0c17..915ba7a 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index dc7142c..e10d2fa 100644 (file)
@@ -112,8 +112,8 @@ class Picture(models.Model):
         self.sort_key = sortify(self.title)[:120]
 
         try:
-            author = self.tags.filter(category='author')[0].sort_key
-        except IndexError:
+            author = self.authors().first().sort_key
+        except AttributeError:
             author = u''
         self.sort_key_author = author
 
@@ -124,11 +124,11 @@ class Picture(models.Model):
     def __unicode__(self):
         return self.title
 
-    def author_str(self):
-        return ", ".join(str(t) for t in self.tags.filter(category='author'))
+    def authors(self):
+        return self.tags.filter(category='author')
 
     def tag_unicode(self, category):
-        return ", ".join(unicode(t) for t in self.tags.filter(category=category))
+        return ", ".join(self.tags.filter(category=category).values_list('name', flat=True))
 
     def author_unicode(self):
         return self.tag_unicode('author')
@@ -319,7 +319,7 @@ class Picture(models.Model):
             pics_by_author[tag] = []
 
         for pic in pics.iterator():
-            authors = list(pic.tags.filter(category='author'))
+            authors = list(pic.authors().only('pk'))
             if authors:
                 for author in authors:
                     pics_by_author[author].append(pic)
@@ -338,9 +338,7 @@ class Picture(models.Model):
         return self._info
 
     def pretty_title(self, html_links=False):
-        picture = self
-        names = [(tag.name, tag.get_absolute_url())
-                 for tag in self.tags.filter(category='author')]
+        names = [(tag.name, tag.get_absolute_url()) for tag in self.authors().only('name', 'category', 'slug')]
         names.append((self.title, self.get_absolute_url()))
 
         if html_links:
index d8ebbf7..1ad2acc 100644 (file)
@@ -7,10 +7,10 @@
     <a href="{{ picture.get_absolute_url }}">
     {% endif %}
         {% if picture.image_file %}
-            <img src="{% thumbnail picture.image_file "139x193" crop="center" as thumb %}{{ thumb.url }}{% empty %}{{ picture.image_file.url }}{% endthumbnail %}" alt="{{ author_str }} – {{ picture.title }}" class="cover" />
+            <img src="{% thumbnail picture.image_file "139x193" crop="center" as thumb %}{{ thumb.url }}{% empty %}{{ picture.image_file.url }}{% endthumbnail %}" alt="{{ author }} – {{ picture.title }}" class="cover" />
         {% endif %}
         <div class="desc">
-            <span class="mono author">{{ author_str }}</span>
+            <span class="mono author">{{ author }}</span>
             <span class="title">{{ picture.title }}</span>
         </div>
     {% if with_link %}
index b555056..5de38b2 100644 (file)
@@ -127,10 +127,9 @@ def import_picture(request):
 @ssi_included
 def picture_mini(request, pk, with_link=True):
     picture = get_object_or_404(Picture, pk=pk)
-    author_str = ", ".join(tag.name for tag in picture.tags.filter(category='author'))
     return render(request, 'picture/picture_mini_box.html', {
         'picture': picture,
-        'author_str': author_str,
+        'author': picture.author_unicode(),
         'with_link': with_link,
     })
 
index 77c6031..bd11f30 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index b34f906..bdf2969 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 77c6031..bd11f30 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 97a76d7..9441797 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 77c6031..bd11f30 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index b4aef79..fce7d8b 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 8ccde4f..7a17ed6 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ed0aa8a..9986130 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ed0aa8a..9986130 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 420b61c..a9c13d4 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 54c683c..158c30e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 420b61c..a9c13d4 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index fd66177..bb6035e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 420b61c..a9c13d4 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index b395a6f..8d98311 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 63c97b7..a13e0db 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-01-27 16:40+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a6caa4f..b224ca3 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a6caa4f..b224ca3 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 87d9d66..96f211b 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-09 11:35+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 4df7ed5..a5a6963 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-10 13:31+0100\n"
 "Last-Translator: Kamil <kjaklukowski@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 55c4962..51d0464 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-05-17 23:20+0100\n"
 "Last-Translator: KG <kamila.gawron87@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 1c4ba23..0d7a1a7 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 20:25+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 90c75e3..8d48f58 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 03c9044..8b396c8 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-02 18:24+0100\n"
 "Last-Translator: Karolina Zuber <suomija@o2.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 40e6b0d..27f6210 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-01-27 16:41+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ab9953f..dd69502 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 22:11+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 68eaffc..1268c23 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-04-10 22:12+0100\n"
 "Last-Translator: Natalia Kertyczak <natalczyk@o2.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 3891858..b3be6eb 100755 (executable)
@@ -27,7 +27,8 @@ class ObjectSetsForm(forms.Form):
         self._user = user
         data = kwargs.setdefault('data', {})
         if 'tags' not in data and user.is_authenticated():
-            data['tags'] = ', '.join(t.name for t in obj.tags.filter(category='set', user=user).iterator() if t.name)
+            data['tags'] = ', '.join(
+                obj.tags.filter(category='set', user=user).exclude(name__in=(None, '')).values_list('name', flat=True))
         super(ObjectSetsForm, self).__init__(*args, **kwargs)
 
     def save(self, request):
index 582b7ce..f07d339 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 16dafe8..93bd47a 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 582b7ce..f07d339 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index e634ef8..3ea27e2 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 582b7ce..f07d339 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 554b132..addbac2 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 557ba3d..e7deb64 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2014-01-24 10:06+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 515ce34..8a1a8e6 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 515ce34..8a1a8e6 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 9ba3acc..484b52e 100755 (executable)
@@ -21,36 +21,36 @@ def likes_book(request, book_id):
     return likes(request.user, Book.objects.get(pk=book_id), request)
 
 
-def choose_cite(request, book_id=None, tag_ids=None):
+def choose_cite(book_id=None, tag_ids=None):
     """Choose a cite for main page, for book or for set of tags."""
-    try:
-        assert request.user.is_staff
-        assert 'choose_cite' in request.GET
-        cite = Cite.objects.get(pk=request.GET['choose_cite'])
-    except (AssertionError, Cite.DoesNotExist):
-        if book_id is not None:
-            cites = Cite.objects.filter(Q(book=book_id) | Q(book__ancestor=book_id))
-        elif tag_ids is not None:
-            tags = Tag.objects.filter(pk__in=tag_ids)
-            cites = cites_for_tags(tags)
-        else:
-            cites = Cite.objects.all()
-        stickies = cites.filter(sticky=True)
-        count = stickies.count()
+    if book_id is not None:
+        cites = Cite.objects.filter(Q(book=book_id) | Q(book__ancestor=book_id))
+    elif tag_ids is not None:
+        tags = Tag.objects.filter(pk__in=tag_ids)
+        cites = cites_for_tags(tags)
+    else:
+        cites = Cite.objects.all()
+    stickies = cites.filter(sticky=True)
+    count = stickies.count()
+    if count:
+        cite = stickies[randint(0, count - 1)]
+    else:
+        count = cites.count()
         if count:
-            cite = stickies[randint(0, count - 1)]
+            cite = cites[randint(0, count - 1)]
         else:
-            count = cites.count()
-            if count:
-                cite = cites[randint(0, count - 1)]
-            else:
-                cite = None
+            cite = None
     return cite
 
 
 @ssi_variable(register, name='choose_cite', patch_response=[add_never_cache_headers])
 def choose_cite_tag(request, book_id=None, tag_ids=None):
-    cite = choose_cite(request, book_id, tag_ids)
+    try:
+        assert request.user.is_staff
+        assert 'choose_cite' in request.GET
+        cite = Cite.objects.get(pk=request.GET['choose_cite'])
+    except (AssertionError, Cite.DoesNotExist):
+        cite = choose_cite(book_id, tag_ids)
     return cite.pk if cite is not None else None
 
 
index 921f7d1..b90b051 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2010-06-23 11:48+0100\n"
 "Last-Translator: Iwona Fiałkowska <ifialkowska@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index e2385e2..ad8b1f4 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 20:05+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 9e53ebd..9d737e3 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-28 12:01+0100\n"
 "Last-Translator: Aneta <afroneta@wp.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index e30792b..51f04ec 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-22 21:00+0100\n"
 "Last-Translator: Ela Janota <amarillis5@wp.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 09602b1..171e9d4 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-21 17:43+0100\n"
 "Last-Translator: xxxx\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 0e1d79f..4e56798 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-01 16:13+0100\n"
 "Last-Translator: Aneta\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 84924d0..f2b19a4 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2010-05-19 16:18\n"
 "Last-Translator: <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index daf7a8b..6b40016 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 22:11+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 618a104..a3a2186 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 17:30+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 03e1232..57e5eee 100644 (file)
@@ -56,20 +56,23 @@ The suggestion has been referred to the project coordinator.""") +
 
 class PublishingSuggestForm(forms.Form):
     contact = forms.CharField(label=_('Contact'), max_length=120, required=False)
-    books = forms.CharField(label=_('books'), widget=forms.Textarea, required=False)
-    audiobooks = forms.CharField(label=_('audiobooks'), widget=forms.Textarea, required=False)
+    books = forms.CharField(label=_('books'), widget=forms.Textarea, required=True)
+    ebook = forms.BooleanField(label=_('ebook'), required=False, initial=True)
+    audiobook = forms.BooleanField(label=_('audiobook'), required=False)
 
     def clean(self):
-        if not self.cleaned_data['books'] and not self.cleaned_data['audiobooks']:
-            msg = ugettext(u"One of these fields is required.")
-            self._errors["books"] = self.error_class([msg])
-            self._errors["audiobooks"] = self.error_class([msg])
+        if not self.cleaned_data['ebook'] and not self.cleaned_data['audiobook']:
+            msg = ugettext(u"One of these options is required.")
+            self._errors['ebook'] = self.error_class([msg])
+            self._errors['audiobook'] = self.error_class([msg])
         return super(PublishingSuggestForm, self).clean()
 
     def save(self, request):
         contact = self.cleaned_data['contact']
-        books = self.cleaned_data['books']
-        audiobooks = self.cleaned_data['audiobooks']
+        suggestion_text = self.cleaned_data['books'].strip(', \n\r')
+
+        books = suggestion_text if self.cleaned_data['ebook'] else ''
+        audiobooks = suggestion_text if self.cleaned_data['audiobook'] else ''
 
         suggestion = PublishingSuggestion(
             contact=contact, books=books,
@@ -78,34 +81,35 @@ class PublishingSuggestForm(forms.Form):
             suggestion.user = request.user
         suggestion.save()
 
-        mail_managers(u'Konsultacja planu wydawniczego na WolneLektury.pl', u'''\
-Zgłoszono nową sugestię nt. planu wydawniczego w serwisie WolneLektury.pl.
-%(url)s
+        if not suggestion.is_spam():
+            mail_managers(u'Konsultacja planu wydawniczego na WolneLektury.pl', u'''\
+    Zgłoszono nową sugestię nt. planu wydawniczego w serwisie WolneLektury.pl.
+    %(url)s
 
-Użytkownik: %(user)s
-Kontakt: %(contact)s
+    Użytkownik: %(user)s
+    Kontakt: %(contact)s
 
-Książki:
-%(books)s
+    Książki:
+    %(books)s
 
-Audiobooki:
-%(audiobooks)s''' % {
-            'url': request.build_absolute_uri(reverse('admin:suggest_suggestion_change', args=[suggestion.id])),
-            'user': str(request.user) if request.user.is_authenticated() else '',
-            'contact': contact,
-            'books': books,
-            'audiobooks': audiobooks,
+    Audiobooki:
+    %(audiobooks)s''' % {
+                'url': request.build_absolute_uri(reverse('admin:suggest_suggestion_change', args=[suggestion.id])),
+                'user': str(request.user) if request.user.is_authenticated() else '',
+                'contact': contact,
+                'books': books,
+                'audiobooks': audiobooks,
             }, fail_silently=True)
 
-        try:
-            validate_email(contact)
-        except ValidationError:
-            pass
-        else:
-            send_mail(
-                u'[WolneLektury] ' + ugettext(u'Thank you for your suggestion.'),
-                ugettext(u"""\
+            try:
+                validate_email(contact)
+            except ValidationError:
+                pass
+            else:
+                send_mail(
+                    u'[WolneLektury] ' + ugettext(u'Thank you for your suggestion.'),
+                    ugettext(u"""\
 Thank you for your comment on WolneLektury.pl.
 The suggestion has been referred to the project coordinator.""") +
-                u"\n\n-- \n" + ugettext(u'''Message sent automatically. Please do not reply.'''),
-                'no-reply@wolnelektury.pl', [contact], fail_silently=True)
+                    u"\n\n-- \n" + ugettext(u'''Message sent automatically. Please do not reply.'''),
+                    'no-reply@wolnelektury.pl', [contact], fail_silently=True)
index 7779a70..22c732b 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-08 11:33+0100\n"
 "Last-Translator: \n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,11 +24,11 @@ msgstr "Kontakt"
 msgid "Description"
 msgstr "Beschreibung"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Vielen Dank für Ihren Vorschlag."
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -36,52 +36,66 @@ msgstr ""
 "Vielen Dank für Ihren Kommentar zu WolneLekturz.pl\n"
 "Ihr Kommentar ist an den Projekt - Koordinator weitergeleitet worden. "
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr ""
 "Diese Nachricht wird automatisch generiert. Bitte sie nicht beantworten."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "Bücher"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
+#: forms.py:60
+#, fuzzy
+#| msgid "books"
+msgid "ebook"
+msgstr "Bücher"
+
+#: forms.py:61
+#, fuzzy
+#| msgid "audiobooks"
+msgid "audiobook"
 msgstr "Audiobücher"
 
-#: forms.py:64
-msgid "One of these fields is required."
+#: forms.py:65
+#, fuzzy
+#| msgid "One of these fields is required."
+msgid "One of these options is required."
 msgstr "Erfüllen Sie bitte ein von diesen Feldern. "
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "Kontakt"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "Beschreibung"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "Erstellungsdatum"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "IP-Adresse"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "Vorschlag"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "Vorschläge"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "Audiobücher"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "Vorschlag publizieren"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "Vorschläge publizieren"
 
@@ -93,10 +107,16 @@ msgstr "Hast Du kein Buch gefunden? Mach einen Vorschlag."
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "Ich würde gerne auf WolneLektury ... finden."
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "Bericht senden"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr "Melden Sie einen Bug oder einen Vorschlag"
@@ -104,3 +124,14 @@ msgstr "Melden Sie einen Bug oder einen Vorschlag"
 #: views.py:15 views.py:23
 msgid "Report was sent successfully."
 msgstr "Der Bericht wurde erfolgreich gesendet."
+
+#, fuzzy
+#~| msgid ""
+#~| "Thank you for your comment on WolneLektury.pl.\n"
+#~| "The suggestion has been referred to the project coordinator."
+#~ msgid ""
+#~ "    Thank you for your comment on WolneLektury.pl.\n"
+#~ "    The suggestion has been referred to the project coordinator."
+#~ msgstr ""
+#~ "Vielen Dank für Ihren Kommentar zu WolneLekturz.pl\n"
+#~ "Ihr Kommentar ist an den Projekt - Koordinator weitergeleitet worden. "
index de89d9b..70149f3 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-10 13:06+0100\n"
 "Last-Translator: Kamil <kjaklukowski@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,11 +25,11 @@ msgstr "Contact"
 msgid "Description"
 msgstr "Description"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Thank you for your suggestion."
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -37,51 +37,65 @@ msgstr ""
 "Thank you for your suggestion concerning WolneLektury.pl \n"
 "Your suggestion was sent to the project coordinator."
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr "This message was sent automatically. Please do not reply."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "books"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
+#: forms.py:60
+#, fuzzy
+#| msgid "books"
+msgid "ebook"
+msgstr "books"
+
+#: forms.py:61
+#, fuzzy
+#| msgid "audiobooks"
+msgid "audiobook"
 msgstr "audiobooks"
 
-#: forms.py:64
-msgid "One of these fields is required."
+#: forms.py:65
+#, fuzzy
+#| msgid "One of these fields is required."
+msgid "One of these options is required."
 msgstr "One of these fields is required."
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "Contact"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "description"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "creation date"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "IP address"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "suggestion"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "suggestions"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "audiobooks"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "publishing suggestion"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "publishing suggestions"
 
@@ -93,10 +107,16 @@ msgstr "Didn't find a book? Make a suggestion."
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "I would like to find the following items on WolneLektury.pl:"
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "send a suggestion"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr "Report an error or make a suggestion"
@@ -104,3 +124,14 @@ msgstr "Report an error or make a suggestion"
 #: views.py:15 views.py:23
 msgid "Report was sent successfully."
 msgstr "publishing suggestion"
+
+#, fuzzy
+#~| msgid ""
+#~| "Thank you for your comment on WolneLektury.pl.\n"
+#~| "The suggestion has been referred to the project coordinator."
+#~ msgid ""
+#~ "    Thank you for your comment on WolneLektury.pl.\n"
+#~ "    The suggestion has been referred to the project coordinator."
+#~ msgstr ""
+#~ "Thank you for your suggestion concerning WolneLektury.pl \n"
+#~ "Your suggestion was sent to the project coordinator."
index 44036d3..f84e5bc 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-18 13:20+0100\n"
 "Last-Translator: Anna Jopp <aniajopp@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,11 +24,11 @@ msgstr "Contacto"
 msgid "Description"
 msgstr "Descripción"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Gracias por tu sugerencia"
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -36,51 +36,65 @@ msgstr ""
 "Gracias por tu comentario en WolneLektury.pl La sugerencia ha sido remitida "
 "a el coordinador del proyecto"
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr "La mensaje enviado automaticamente. No conteste por favor."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "libros"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
+#: forms.py:60
+#, fuzzy
+#| msgid "books"
+msgid "ebook"
+msgstr "libros"
+
+#: forms.py:61
+#, fuzzy
+#| msgid "audiobooks"
+msgid "audiobook"
 msgstr "audiolibros"
 
-#: forms.py:64
-msgid "One of these fields is required."
+#: forms.py:65
+#, fuzzy
+#| msgid "One of these fields is required."
+msgid "One of these options is required."
 msgstr "Uno de estos campos es requerido"
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "Contacto"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "Descripción"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "Fecha de creación"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "Dirección IP"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "sugerencia"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "sugerencias"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "audiolibros"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "Sugerencia de publicación"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "Sugerencias de publicación"
 
@@ -92,10 +106,16 @@ msgstr "No encontraste un libro? Haz una sugerencia."
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "Me gustaría encontrar estos en WolneLektury.pl"
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "Envia un report"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr "Reporta un error o una sugerencia"
@@ -103,3 +123,14 @@ msgstr "Reporta un error o una sugerencia"
 #: views.py:15 views.py:23
 msgid "Report was sent successfully."
 msgstr "la noticia ha sido enviada con éxito "
+
+#, fuzzy
+#~| msgid ""
+#~| "Thank you for your comment on WolneLektury.pl.\n"
+#~| "The suggestion has been referred to the project coordinator."
+#~ msgid ""
+#~ "    Thank you for your comment on WolneLektury.pl.\n"
+#~ "    The suggestion has been referred to the project coordinator."
+#~ msgstr ""
+#~ "Gracias por tu comentario en WolneLektury.pl La sugerencia ha sido "
+#~ "remitida a el coordinador del proyecto"
index ec5b855..e47cf45 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-23 17:55+0100\n"
 "Last-Translator: Ela Janota <amarillis5@wp.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,11 +24,11 @@ msgstr "Contact"
 msgid "Description"
 msgstr "Description"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Merci pour votre suggestion."
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -36,51 +36,65 @@ msgstr ""
 "Merci pour votre commentaire sur Wolne Lektury.pl.\n"
 "Votre suggestion a été adressée au coordinateur du projet."
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr "Message envoyé automatiquement. Merci de n'y pas répondre."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "livres"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
+#: forms.py:60
+#, fuzzy
+#| msgid "books"
+msgid "ebook"
+msgstr "livres"
+
+#: forms.py:61
+#, fuzzy
+#| msgid "audiobooks"
+msgid "audiobook"
 msgstr "livres audio"
 
-#: forms.py:64
-msgid "One of these fields is required."
+#: forms.py:65
+#, fuzzy
+#| msgid "One of these fields is required."
+msgid "One of these options is required."
 msgstr "L'une des ces rubriques est obligatoire."
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "contact"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "description"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "date de création"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "adresse IP"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "suggestion"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "suggestions"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "livres audio"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "suggestion sur publication"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "suggestions sur publication"
 
@@ -92,10 +106,16 @@ msgstr "Vous n'avez pas trouvé un livre? Faites une suggestion."
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "J'aimerais trouver dans Wolne Lektury.pl:..."
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "Envoyez un rapport"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr "Rapportez une erreur ou faites une suggestion"
@@ -103,3 +123,14 @@ msgstr "Rapportez une erreur ou faites une suggestion"
 #: views.py:15 views.py:23
 msgid "Report was sent successfully."
 msgstr "Votre rapport a été envoyé"
+
+#, fuzzy
+#~| msgid ""
+#~| "Thank you for your comment on WolneLektury.pl.\n"
+#~| "The suggestion has been referred to the project coordinator."
+#~ msgid ""
+#~ "    Thank you for your comment on WolneLektury.pl.\n"
+#~ "    The suggestion has been referred to the project coordinator."
+#~ msgstr ""
+#~ "Merci pour votre commentaire sur Wolne Lektury.pl.\n"
+#~ "Votre suggestion a été adressée au coordinateur du projet."
index 0861a56..000cac9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-02-21 17:57+0100\n"
 "Last-Translator: xxx\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,11 +25,11 @@ msgstr "Contatto"
 msgid "Description"
 msgstr "Descrizione"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Grazie per la sua proposta"
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -37,52 +37,66 @@ msgstr ""
 "Grazie per il commento su WolneLektury.pl. La sua proposta è stata inviata "
 "al coordinatore del progetto. // "
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr ""
 "Il messaggio è stato inviato automaticamente. Si prega di non rispondere."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "libri"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
+#: forms.py:60
+#, fuzzy
+#| msgid "books"
+msgid "ebook"
+msgstr "libri"
+
+#: forms.py:61
+#, fuzzy
+#| msgid "audiobooks"
+msgid "audiobook"
 msgstr "audiolibri"
 
-#: forms.py:64
-msgid "One of these fields is required."
+#: forms.py:65
+#, fuzzy
+#| msgid "One of these fields is required."
+msgid "One of these options is required."
 msgstr "E' richiesto uno di questi campi. "
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "contatto"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "descrizione"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "data di creazione"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "Indirizzo IP"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "proposta"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "proposte"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "audiolibri"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "pubblica la proposta"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "pubblica le proposte"
 
@@ -94,10 +108,16 @@ msgstr "Non hai trovato il libro?Fai una proposta."
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "Vorrei trovare in WolneLektury.pl questo..."
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "Invia una notifica"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr " Segnala un'errore o un proposta"
@@ -105,3 +125,14 @@ msgstr " Segnala un'errore o un proposta"
 #: views.py:15 views.py:23
 msgid "Report was sent successfully."
 msgstr "La notifica è stata inviata con successo."
+
+#, fuzzy
+#~| msgid ""
+#~| "Thank you for your comment on WolneLektury.pl.\n"
+#~| "The suggestion has been referred to the project coordinator."
+#~ msgid ""
+#~ "    Thank you for your comment on WolneLektury.pl.\n"
+#~ "    The suggestion has been referred to the project coordinator."
+#~ msgstr ""
+#~ "Grazie per il commento su WolneLektury.pl. La sua proposta è stata "
+#~ "inviata al coordinatore del progetto. // "
index b89a690..0389576 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-02 18:19+0100\n"
 "Last-Translator: Karolina Zuber <suomija@o2.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,11 +24,11 @@ msgstr "Kontaktas"
 msgid "Description"
 msgstr "Aprašymas"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Ačiū už jūsų pasiūlymą."
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -36,51 +36,65 @@ msgstr ""
 "Ačiū už jūsų komentarą WolneLektury.pl interneto svetainėje \n"
 "Pasiūlymas buvo pateiktas projekto koordinatoriui."
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr "Tai automatiškai sugeneruotas laiškas. Prašome į jį neatsakyti."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "knygas"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
+#: forms.py:60
+#, fuzzy
+#| msgid "books"
+msgid "ebook"
+msgstr "knygas"
+
+#: forms.py:61
+#, fuzzy
+#| msgid "audiobooks"
+msgid "audiobook"
 msgstr "audio knygas"
 
-#: forms.py:64
-msgid "One of these fields is required."
+#: forms.py:65
+#, fuzzy
+#| msgid "One of these fields is required."
+msgid "One of these options is required."
 msgstr "Vienas iš šių laukelių yra reikalaujamas."
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "kontaktas"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "aprašymas"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "sukūrimo data"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "IP adresas"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "pasiūlymas"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "pasiūlymai"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "audio knygas"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "publikavimo pasiūlymas"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "publikavimo pasiūlymai"
 
@@ -92,10 +106,16 @@ msgstr "Neradote knygos? Teikite pasiūlymus."
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "Interneto svetainėje WolneLektury.pl norėčiau rasti šias..."
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "Siųsti pranešimą"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr "Praneškite apie klaidą arba teikite pasiūlymus"
@@ -103,3 +123,14 @@ msgstr "Praneškite apie klaidą arba teikite pasiūlymus"
 #: views.py:15 views.py:23
 msgid "Report was sent successfully."
 msgstr "Pranešimas sėkmingai išsiųstas."
+
+#, fuzzy
+#~| msgid ""
+#~| "Thank you for your comment on WolneLektury.pl.\n"
+#~| "The suggestion has been referred to the project coordinator."
+#~ msgid ""
+#~ "    Thank you for your comment on WolneLektury.pl.\n"
+#~ "    The suggestion has been referred to the project coordinator."
+#~ msgstr ""
+#~ "Ačiū už jūsų komentarą WolneLektury.pl interneto svetainėje \n"
+#~ "Pasiūlymas buvo pateiktas projekto koordinatoriui."
index afcf972..47abd2c 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2011-06-09 13:06+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,11 +25,11 @@ msgstr "Kontakt"
 msgid "Description"
 msgstr "Opis"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Dziękujemy za zgłoszenie."
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -37,51 +37,59 @@ msgstr ""
 "Dziękujemy za zgłoszenie uwag do serwisu Wolne Lektury.\n"
 "Sugestia została przekazana koordynatorce projektu."
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr "Wiadomość wysłana automatycznie. Proszę nie odpowiadać."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "książki"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
-msgstr "audiobooki"
+#: forms.py:60
+msgid "ebook"
+msgstr "ebook"
+
+#: forms.py:61
+msgid "audiobook"
+msgstr "audiobook"
 
-#: forms.py:64
-msgid "One of these fields is required."
-msgstr "Proszę wypełnić co najmniej jedno z tych pól."
+#: forms.py:65
+msgid "One of these options is required."
+msgstr "Proszę zaznaczyć co najmniej jedną opcję."
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "kontakt"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "opis"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "data utworzenia"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "adres IP"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "sugestia"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "sugestie"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "audiobooki"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "sugestia publikacji"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "sugestie publikacji"
 
@@ -93,10 +101,18 @@ msgstr "Nie znalazłeś utworu na stronie? Zgłoś sugestię."
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "Chciałabym/chciałbym znaleźć w bibliotece Wolne Lektury następujące"
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "Wyślij zgłoszenie"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+"Pamiętaj, że możemy publikować jedynie książki w domenie publicznej, czyli "
+"70 lat po śmierci autora!"
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr "Zgłoś błąd lub sugestię"
index 9df682f..528abfe 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 22:11+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,11 +24,11 @@ msgstr "Контакт"
 msgid "Description"
 msgstr "Описание"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Спасибо за Ваше предложение."
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -36,51 +36,65 @@ msgstr ""
 "Спасибо за Ваш комментарий на  WolneLektury.pl. \n"
 "Предложение было передано координатору проекта."
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr "Сообщение отправлено автоматически. Пожалуйста, не отвечайте."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "книги"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
+#: forms.py:60
+#, fuzzy
+#| msgid "books"
+msgid "ebook"
+msgstr "книги"
+
+#: forms.py:61
+#, fuzzy
+#| msgid "audiobooks"
+msgid "audiobook"
 msgstr "аудиокниги"
 
-#: forms.py:64
-msgid "One of these fields is required."
+#: forms.py:65
+#, fuzzy
+#| msgid "One of these fields is required."
+msgid "One of these options is required."
 msgstr "Требуется одно из этих полей."
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "контакт"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "описание"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "дата создания"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "IP-адрес"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "предложение"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "предложения"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "аудиокниги"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "издательское предложение"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "издательские предложения"
 
@@ -92,10 +106,16 @@ msgstr "Вы не нашли книгу? Сделайте предложение
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "Я хотел/а бы найти на сайте WolneLektury.pl этих..."
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "Отправить отчет"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr "Сообщитe об ошибке или предложении"
@@ -103,3 +123,14 @@ msgstr "Сообщитe об ошибке или предложении"
 #: views.py:15 views.py:23
 msgid "Report was sent successfully."
 msgstr "Отчет отправлен успешно."
+
+#, fuzzy
+#~| msgid ""
+#~| "Thank you for your comment on WolneLektury.pl.\n"
+#~| "The suggestion has been referred to the project coordinator."
+#~ msgid ""
+#~ "    Thank you for your comment on WolneLektury.pl.\n"
+#~ "    The suggestion has been referred to the project coordinator."
+#~ msgstr ""
+#~ "Спасибо за Ваш комментарий на  WolneLektury.pl. \n"
+#~ "Предложение было передано координатору проекта."
index 4cf438a..fc97e89 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-04 17:31+0100\n"
 "Last-Translator: xxx <xxx>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,11 +24,11 @@ msgstr "Контакт"
 msgid "Description"
 msgstr "Опис"
 
-#: forms.py:49 forms.py:106
+#: forms.py:49 forms.py:110
 msgid "Thank you for your suggestion."
 msgstr "Дякуємо за Ваші пропозиції."
 
-#: forms.py:50 forms.py:107
+#: forms.py:50 forms.py:111
 msgid ""
 "Thank you for your comment on WolneLektury.pl.\n"
 "The suggestion has been referred to the project coordinator."
@@ -36,52 +36,64 @@ msgstr ""
 "Дякуємо за Ваш коментар на WolneLektury.pl.\n"
 "Вашу пропозицію передано координатору проекту."
 
-#: forms.py:53 forms.py:110
+#: forms.py:53 forms.py:114
 msgid "Message sent automatically. Please do not reply."
 msgstr "Повідомлення надіслано автоматично. Просимо не відповідати."
 
-#: forms.py:59 models.py:28
+#: forms.py:59 models.py:31
 msgid "books"
 msgstr "книжки"
 
-#: forms.py:60 models.py:29
-msgid "audiobooks"
+#: forms.py:60
+#, fuzzy
+#| msgid "books"
+msgid "ebook"
+msgstr "книжки"
+
+#: forms.py:61
+#, fuzzy
+#| msgid "audiobooks"
+msgid "audiobook"
 msgstr "аудіокниги"
 
-#: forms.py:64
+#: forms.py:65
 #, fuzzy
-msgid "One of these fields is required."
+msgid "One of these options is required."
 msgstr "Одне з цих полів є обов'язковим."
 
-#: models.py:11 models.py:27
+#: models.py:14 models.py:30
 msgid "contact"
 msgstr "контакт"
 
-#: models.py:12
+#: models.py:15
 msgid "description"
 msgstr "опис"
 
-#: models.py:13 models.py:30
+#: models.py:16 models.py:33
 msgid "creation date"
 msgstr "дата створення"
 
-#: models.py:14 models.py:31
+#: models.py:17 models.py:34
 msgid "IP address"
 msgstr "IP-адреса"
 
-#: models.py:19
+#: models.py:22
 msgid "suggestion"
 msgstr "пропозиція"
 
-#: models.py:20
+#: models.py:23
 msgid "suggestions"
 msgstr "пропозиції"
 
-#: models.py:36
+#: models.py:32
+msgid "audiobooks"
+msgstr "аудіокниги"
+
+#: models.py:39
 msgid "publishing suggestion"
 msgstr "пропозиція публікації"
 
-#: models.py:37
+#: models.py:40
 msgid "publishing suggestions"
 msgstr "пропозиції публікацій"
 
@@ -93,10 +105,16 @@ msgstr "Не знайшли книжки, якої шукали? Вишліть
 msgid "I'd like to find in WolneLektury.pl these…"
 msgstr "Я хотів би/хотіла би знайти на сайті WolneLektury.pl наступні..."
 
-#: templates/publishing_suggest.html:19 views.py:22
+#: templates/publishing_suggest.html:20 views.py:22
 msgid "Send report"
 msgstr "Вислати повідомлення"
 
+#: templates/publishing_suggest.html:21
+msgid ""
+"Remember that we can only publish books in public domain, ie. 70 years after "
+"the death of the author!"
+msgstr ""
+
 #: views.py:13 views.py:21
 msgid "Report a bug or suggestion"
 msgstr "Повідомити про помилку або надіслати пропозицію"
@@ -104,3 +122,14 @@ msgstr "Повідомити про помилку або надіслати п
 #: views.py:15 views.py:23
 msgid "Report was sent successfully."
 msgstr "Ваше повідомлення надіслано успішно."
+
+#, fuzzy
+#~| msgid ""
+#~| "Thank you for your comment on WolneLektury.pl.\n"
+#~| "The suggestion has been referred to the project coordinator."
+#~ msgid ""
+#~ "    Thank you for your comment on WolneLektury.pl.\n"
+#~ "    The suggestion has been referred to the project coordinator."
+#~ msgstr ""
+#~ "Дякуємо за Ваш коментар на WolneLektury.pl.\n"
+#~ "Вашу пропозицію передано координатору проекту."
index 87454a2..b499ee8 100644 (file)
@@ -2,6 +2,9 @@
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
+import re
+from datetime import timedelta
+
 from django.db import models
 from django.contrib.auth.models import User
 from django.utils.translation import ugettext_lazy as _
@@ -36,5 +39,35 @@ class PublishingSuggestion(models.Model):
         verbose_name = _('publishing suggestion')
         verbose_name_plural = _('publishing suggestions')
 
+    def is_spam(self):
+        suggestion_text = (self.books or self.audiobooks).strip(' \r\n,')
+        # similar = PublishingSuggestion.objects.filter(
+        #     books__in=('', suggestion_text), audiobooks__in=('', suggestion_text))
+        similar = PublishingSuggestion.objects.filter(books=self.books, audiobooks=self.audiobooks).exclude(pk=self.pk)
+        http = 'http' in suggestion_text
+        spam = False
+        if re.search(r'([^\W\d_])\1\1\1', suggestion_text):
+            # same letter repetition outside URL
+            spam = True
+        elif re.search(r'[^\W\d_]\d|\d[^\W\d_]', suggestion_text) and not http:
+            # string of letters and digits outside URL
+            spam = True
+        elif re.search(r'[^\W\d_]{17}', suggestion_text):
+            # long string of letters (usually gibberish)
+            spam = True
+        elif ' ' not in suggestion_text:
+            # single word - usually spam
+            spam = True
+        elif len(suggestion_text) < 11:
+            # too short
+            spam = True
+        elif similar.filter(created_at__range=(self.created_at - timedelta(1), self.created_at)):
+            # the same suggestion within 24h
+            spam = True
+        elif similar.filter(ip=self.ip):
+            # the same suggestion from the same IP
+            spam = True
+        return spam
+
     def __unicode__(self):
         return unicode(self.created_at)
index 2ac0ec2..33f95a5 100755 (executable)
 
     <li>{% trans "I'd like to find in WolneLektury.pl these…" %}</li>
 
-    <li><span class="error">{{ form.books.errors }}</span><label for="id_books">{{ form.books.label }}:</label> {{ form.books }}</li>
+    <li><label for="id_books">{{ form.books.label }}:</label> {{ form.books }}</li>
 
-    <li><span class="error">{{ form.audiobooks.errors }}</span><label for="id_audiobooks">{{ form.audiobooks.label }}:</label> {{ form.audiobooks }}</li>
+    <li class="checkbox"><span class="error">{{ form.ebook.errors }}</span><label for="id_ebook">{{ form.ebook.label }}:</label> {{ form.ebook }}</li>
+    <li class="checkbox"><span class="error">{{ form.audiobook.errors }}</span><label for="id_audiobook">{{ form.audiobook.label }}:</label> {{ form.audiobook }}</li>
 
     <li><input type="submit" value="{% trans "Send report" %}"/></li>
+    <li>{% trans "Remember that we can only publish books in public domain, ie. 70 years after the death of the author!" %}</li>
 </ol>
 </form>
index 649cb51..05befb7 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 8d430c6..4f7bcae 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 649cb51..05befb7 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index ed1a21a..f8c1ede 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 649cb51..05befb7 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index c844021..3cc6430 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 891bb5d..835915a 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-22 15:54+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a06653d..685d4aa 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index a06653d..685d4aa 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 78e78c4..94d22c7 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-08-14 17:50+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language: de\n"
index 9e88dc7..4956556 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 37838f2..d5c8bce 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-08-14 17:50+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language: en\n"
index bf9c58c..3882ad2 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-08-14 17:50+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language: es\n"
index af0610f..a7e1c43 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-22 14:23+0100\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: fr\n"
index caddd63..01e93b4 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-22 14:23+0100\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: it\n"
index 90a308b..22e99b3 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-08-14 17:50+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language: lt\n"
index c333a06..8a65437 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 15:46+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language: pl\n"
index 2767b37..e738bda 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-03-22 14:23+0100\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: ru\n"
index 87e11f7..12eaa30 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2016-02-01 09:36+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2012-08-14 17:49+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language: uk\n"
index c1282c1..700f82b 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:43+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: \n"
@@ -277,22 +277,32 @@ msgstr ""
 "einzuloggen. Wenn es aus Versehen passiert ist, gehen Sie bitte <a href="
 "\"%(login_url)s\">Registrieren</a> voran."
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "in WolneLektury.pl"
 
-#: templates/superbase.html:51
-#, python-format
+#: templates/superbase.html:54
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
+#| msgid_plural ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "Sie haben <a href='%(b)s'>%(c)s</a> freies Werk <a href='%(r)s'>zur "
@@ -304,58 +314,58 @@ msgstr[1] ""
 "Verfügung</a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 #, fuzzy
 #| msgid "Language versions"
 msgid "Language"
 msgstr "Sprachversionen"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 #, fuzzy
 msgid "My shelf"
 msgstr "Mein Bücherregal"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Administration"
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Ausloggen"
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Einloggen"
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Registrieren"
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr ""
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Motive"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Audiobücher"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr ""
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Suchen"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Schließen"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Laden"
 
index 6f4da60..829ad7f 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:43+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -266,22 +266,32 @@ msgid ""
 "\">sign in</a>."
 msgstr ""
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
-#: templates/superbase.html:51
-#, python-format
+#: templates/superbase.html:54
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
+#| msgid_plural ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
@@ -293,57 +303,57 @@ msgstr[1] ""
 "href='%(r)s'>right to</a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 #, fuzzy
 #| msgid "Language versions"
 msgid "Language"
 msgstr "Language versions"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 msgid "My shelf"
 msgstr "My shelf"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Administration"
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Logout"
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Sign in"
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Register"
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr ""
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Themes"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Audiobooks"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr ""
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Search"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Close"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Loading"
 
index 7fc6e5a..910802c 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:43+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -273,22 +273,32 @@ msgstr ""
 "cuentas de usuario existentes. Si se ha equivocado, pase a<a href="
 "\"%(login_url)s\">sign in</a>, por favor."
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "Regístrate en WolneLektury.pl"
 
-#: templates/superbase.html:51
-#, python-format
+#: templates/superbase.html:54
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
+#| msgid_plural ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "                    <a href='%(b)s'>%(c)s</a> tienes lecturas libres <a "
@@ -300,57 +310,57 @@ msgstr[1] ""
 "href='%(r)s'>right to</a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 #, fuzzy
 #| msgid "Language versions"
 msgid "Language"
 msgstr "Versiones de idiomas"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 msgid "My shelf"
 msgstr "Mi estante"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Administración"
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Cerrar sesión"
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Iniciar sesión"
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Registrarse"
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr ""
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Temas"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Audiolibros"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr ""
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Buscar"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Cerrar"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Cargando"
 
index 1179dfb..1068aa1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:43+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -268,22 +268,32 @@ msgid ""
 "\">sign in</a>."
 msgstr ""
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury (Lectures Libres)"
 
-#: templates/superbase.html:51
-#, python-format
+#: templates/superbase.html:54
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
+#| msgid_plural ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "                    <a href='%(b)s'>%(c)s</a> lecture gratuite <a "
@@ -295,57 +305,57 @@ msgstr[1] ""
 "href='%(r)s'>auxquelles vous avez droit</a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 #, fuzzy
 #| msgid "Language versions"
 msgid "Language"
 msgstr "Version linguistique"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 msgid "My shelf"
 msgstr "Mon étagère"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Administration"
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Déconnexion"
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Connexion"
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Inscrivez-vous"
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr ""
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Thèmes"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Livres audio"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr ""
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Rechercher"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Fermer"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Chargement en cours"
 
index 3c73fbc..b5242f1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:43+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -265,22 +265,32 @@ msgid ""
 "\">sign in</a>."
 msgstr ""
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
-#: templates/superbase.html:51
-#, python-format
+#: templates/superbase.html:54
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
+#| msgid_plural ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "                    <a href='%(b)s'>%(c)s</a> hai una lettura libera <a "
@@ -292,57 +302,57 @@ msgstr[1] ""
 "href='%(r)s'>right to</a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 #, fuzzy
 #| msgid "Language versions"
 msgid "Language"
 msgstr "Versioni in altre lingue"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 msgid "My shelf"
 msgstr "Il mio scaffale"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Amministrazione"
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Esci"
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Accedi"
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Registrati"
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr ""
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Temi"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Audiolibri"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr ""
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Cerca"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Chiudi"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Caricamento"
 
index 064f459..2de8bc8 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:43+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -281,22 +281,32 @@ msgstr ""
 "viena iš jūsų egzistuojančių paskyrų. Jei įvyko klaida, prašome pradėti čia "
 "<a href=\"%(login_url)s\">sign in</a>."
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
-#: templates/superbase.html:51
-#, python-format
+#: templates/superbase.html:54
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
+#| msgid_plural ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "                    <a href='%(b)s'>%(c)s</a> nemokamas kūrinys į kurį <a "
@@ -313,57 +323,57 @@ msgstr[2] ""
 "href='%(r)s'>turite teisę</a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 #, fuzzy
 #| msgid "Language versions"
 msgid "Language"
 msgstr "Kalbų versijos"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 msgid "My shelf"
 msgstr "Mano lentyna"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Administracija "
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Atsijungti"
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Prisijungti  "
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Registruotis "
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr ""
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Motyvai"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Audio knygos"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr ""
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Ieškoti"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Uždaryti"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Kraunasi"
 
index 7cc6474..79ac4aa 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WolneLektury\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2015-12-31 16:45+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: \n"
@@ -274,22 +274,22 @@ msgstr ""
 "Logowanie przy użyciu zewnętrznego konta zostało anulowane. Jeśli był to "
 "błąd, przejdź do <a href=\"%(login_url)s\">strony logowania</a>."
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
-#: templates/superbase.html:51
+#: templates/superbase.html:54
 #, python-format
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "                    <a href='%(b)s'>%(c)s</a> darmowy utwór do której <a "
@@ -306,55 +306,55 @@ msgstr[2] ""
 "<a href='%(r)s'>masz prawo</a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 msgid "Language"
 msgstr "Język"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 msgid "My shelf"
 msgstr "Moja półka"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Administracja"
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Wyloguj"
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Zaloguj się"
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Załóż konto"
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr "Literatura"
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Motywy"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Audiobooki"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr "Galeria"
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Szukaj"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Zamknij"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Ładowanie"
 
index b983d2b..af0ffa9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:43+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -279,22 +279,32 @@ msgid ""
 "\">sign in</a>."
 msgstr ""
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "на WolneLektury.pl"
 
-#: templates/superbase.html:51
-#, python-format
+#: templates/superbase.html:54
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
+#| msgid_plural ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "                    <a href='%(b)s'>%(c)s</a> бесплатное чтение, котором Вы "
@@ -311,57 +321,57 @@ msgstr[2] ""
 "<a href='%(r)s'>вправе пользоваться </a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 #, fuzzy
 #| msgid "Language versions"
 msgid "Language"
 msgstr "Языковые версии"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 msgid "My shelf"
 msgstr "Создать полку"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Администрация"
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Выход"
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Вход"
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Зарегистроваться"
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr ""
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Мотивы"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Аудиокниги"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr ""
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Поиск"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Закройте"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Погрузка"
 
index 352dd51..4bbd7bb 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 09:35+0100\n"
+"POT-Creation-Date: 2016-03-30 13:22+0200\n"
 "PO-Revision-Date: 2013-04-09 10:43+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -278,22 +278,32 @@ msgstr ""
 "Якщо це помилка, перейдіть до сторінки <a href=\"%(login_url)s\">реєстрації</"
 "a>."
 
-#: templates/superbase.html:21
+#: templates/superbase.html:23
 msgid "Wolne Lektury"
 msgstr "Wolne Lektury"
 
-#: templates/superbase.html:51
-#, python-format
+#: templates/superbase.html:54
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
+#| msgid_plural ""
+#| "\n"
+#| "                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
+#| "href='%(r)s'>right to</a>\n"
+#| "                    "
 msgid ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free reading you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free reading you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgid_plural ""
 "\n"
-"                    <a href='%(b)s'>%(c)s</a> free readings you have <a "
-"href='%(r)s'>right to</a>\n"
-"                    "
+"                            <a href='%(b)s'>%(c)s</a> free readings you have "
+"<a href='%(r)s'>right to</a>\n"
+"                        "
 msgstr[0] ""
 "\n"
 "                    <a href='%(b)s'>%(c)s</a> безкоштовний текст, до якого "
@@ -310,57 +320,57 @@ msgstr[2] ""
 "маєш <a href='%(r)s'>право</a>\n"
 "                    "
 
-#: templates/superbase.html:61
+#: templates/superbase.html:64
 #, fuzzy
 #| msgid "Language versions"
 msgid "Language"
 msgstr "Мовні версії"
 
-#: templates/superbase.html:85
+#: templates/superbase.html:90
 msgid "My shelf"
 msgstr "Моя полиця"
 
-#: templates/superbase.html:88
+#: templates/superbase.html:94
 msgid "Administration"
 msgstr "Адміністрація"
 
-#: templates/superbase.html:90
+#: templates/superbase.html:100
 msgid "Logout"
 msgstr "Вийти "
 
-#: templates/superbase.html:93 views.py:67 views.py:68
+#: templates/superbase.html:104 views.py:67 views.py:68
 msgid "Sign in"
 msgstr "Увійти"
 
-#: templates/superbase.html:93 views.py:86 views.py:87 views.py:115
+#: templates/superbase.html:106 views.py:86 views.py:87 views.py:115
 msgid "Register"
 msgstr "Зареєструватися"
 
-#: templates/superbase.html:100
+#: templates/superbase.html:113
 msgid "Literature"
 msgstr ""
 
-#: templates/superbase.html:101
+#: templates/superbase.html:114
 msgid "Themes"
 msgstr "Теми"
 
-#: templates/superbase.html:102
+#: templates/superbase.html:115
 msgid "Audiobooks"
 msgstr "Аудіокниги"
 
-#: templates/superbase.html:103
+#: templates/superbase.html:116
 msgid "Gallery"
 msgstr ""
 
-#: templates/superbase.html:114
+#: templates/superbase.html:128
 msgid "Search"
 msgstr "Пошук"
 
-#: templates/superbase.html:142
+#: templates/superbase.html:162
 msgid "Close"
 msgstr "Закрити"
 
-#: templates/superbase.html:144
+#: templates/superbase.html:164
 msgid "Loading"
 msgstr "Завантажується"
 
index 5d19d26..7c1dd29 100644 (file)
@@ -11,16 +11,6 @@ from .static import *
 from .paths import *
 
 
-TEMPLATE_CONTEXT_PROCESSORS = (
-    'django.contrib.auth.context_processors.auth',
-    'django.core.context_processors.debug',
-    'django.core.context_processors.i18n',
-    'django.core.context_processors.media',
-    'django.core.context_processors.request',
-    'wolnelektury.context_processors.extra_settings',
-    'search.context_processors.search_form',
-)
-
 MIDDLEWARE_CLASSES = [
     'django.middleware.csrf.CsrfViewMiddleware',
     'ssify.middleware.SsiMiddleware',
index ef14739..0f49d6b 100644 (file)
@@ -38,9 +38,23 @@ USE_TZ = True
 
 SITE_ID = 1
 
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = [
-    'django.template.loaders.filesystem.Loader',
-    'django.template.loaders.app_directories.Loader',
-    # 'django.template.loaders.eggs.Loader',
-]
+TEMPLATES = [{
+    'BACKEND': 'django.template.backends.django.DjangoTemplates',
+    'OPTIONS': {
+        'loaders': (
+            ('django.template.loaders.cached.Loader', (
+                'django.template.loaders.filesystem.Loader',
+                'django.template.loaders.app_directories.Loader',
+            )),
+        ),
+        'context_processors': (
+            'django.contrib.auth.context_processors.auth',
+            'django.core.context_processors.debug',
+            'django.core.context_processors.i18n',
+            'django.core.context_processors.media',
+            'django.core.context_processors.request',
+            'wolnelektury.context_processors.extra_settings',
+            'search.context_processors.search_form',
+        ),
+    },
+}]
index e876ec8..6f7938d 100644 (file)
@@ -17,6 +17,8 @@ SEARCH_INDEX = path.join(VAR_DIR, 'search_index/')
 MEDIA_URL = '/media/'
 STATIC_URL = '/static/'
 
+IMAGE_DIR = 'book/pictures/'
+
 # CSS and JavaScript file groups
 
 PIPELINE = {
index 29c8476..1c615df 100644 (file)
@@ -1,6 +1,6 @@
 body {
     font-size: 16px;
-    font: Georgia, "Times New Roman", serif;
+    font-family: Georgia, "Times New Roman", serif;
     line-height: 1.5em;
     margin: 0;
 }
@@ -28,6 +28,8 @@ a {
 
 img {
     border: none;
+    max-width: 36em;
+    margin-top: 1em;
 }
 
 #logo {
@@ -39,8 +41,8 @@ img {
 
 #menu {
     position: fixed;
-    left: 0em;
-    top: 0em;
+    left: 0;
+    top: 0;
     width: 100%;
     height: 1.5em;
     background: #333;
@@ -95,7 +97,7 @@ img {
 
 #toc, #themes, #nota_red, #info, #other-versions, #objects {
     position: fixed;
-    left: 0em;
+    left: 0;
     top: 1.5em;
     width: 37em;
     padding: 1.5em;
@@ -111,7 +113,7 @@ img {
 }
 #download {
     position: fixed;
-    left: 0em;
+    left: 0;
     top: 1.5em;
     width: 37em;
     padding: 1.5em;
index a5f4c06..0c00de3 100644 (file)
@@ -10,6 +10,11 @@ a {
     text-decoration: none;
 }
 
+img {
+    max-width: 37.5rem;
+    margin-top: 1em;
+}
+
 /* ================================== */
 /* = Header with logo and menu      = */
 /* ================================== */
diff --git a/src/wolnelektury/static/img/banners/960x150_wolneLektury.jpg b/src/wolnelektury/static/img/banners/960x150_wolneLektury.jpg
new file mode 100644 (file)
index 0000000..038d390
Binary files /dev/null and b/src/wolnelektury/static/img/banners/960x150_wolneLektury.jpg differ
index bf87d75..592f8ef 100755 (executable)
@@ -1,3 +1,6 @@
+@import "../tools";
+@import "const";
+
 @mixin inner-box {
   display: block;
   color: black;
     @include size(width, 415px);
     top: 0;
     @include size(margin-left, 550px);
-    margin-top: 0em;
+    margin-top: 0;
   }
 }
 
   @include size(margin-right, 11.25px);
   position: absolute;
   right: 0;
+  z-index: 10;
 
-  button::-moz-focus-inner {
-    padding: 0;
-    border: 0
+  button {
+    cursor: pointer;
+    &::-moz-focus-inner {
+      padding: 0;
+      border: 0
+    }
   }
   .if-unlike button {
     font-size: 1em;
index a2d33ab..5825979 100755 (executable)
     .errorlist {
         color: #BF3024;
     }
+
+    .checkbox {
+        label {
+            display: inline;
+        }
+
+        input {
+            width: auto;
+        }
+    }
 }
 
 
index e720b4d..14516b8 100755 (executable)
@@ -1,6 +1,24 @@
+@import "../tools";
+
 $header_bg: #191919;
 $small_logo: .9;
 
+#banners {
+  display: inline-block;
+  width: 100%;
+
+  > a {
+    display: block;
+    width: 100%;
+  }
+
+  img {
+    display: block;
+    margin: 0 auto;
+    width: 100%
+  }
+}
+
 header#main {
   @include size(line-height, 20px); /* Make links easier to click when wrapped. */
   background-color: $header_bg;
@@ -222,24 +240,24 @@ header#main {
         @include size(border-radius, 5px);
         @include box-shadow(0 0 6.5px #444444 inset);
 
-        font-family: Georgia;
+        font-family: Georgia, serif;
         @include size(font-size, 13px);
         background-color: white;
         color: black;
 
         /* styling search placeholder */
         &::placeholder {
-          font-family: Georgia;
+          font-family: Georgia, serif;
           font-style: italic;
           color: #767676;
         }
         &::-webkit-input-placeholder {
-          font-family: Georgia;
+          font-family: Georgia, serif;
           font-style: italic;
           color: #767676;
         }
         &::-moz-placeholder {
-          font-family: Georgia;
+          font-family: Georgia, serif;
           font-style: italic;
           color: #767676;
         }
index fac9319..345b80f 100644 (file)
@@ -1,4 +1,4 @@
 {% extends "superbase.html" %}
 
 
-{% block ogtitle %}{% block titleextra %}{% endblock %}{% endblock %}
+{% block ogtitle %}{% block titleextra %}{{ page_title }}{% endblock %}{% endblock %}
index 564f415..1f9cbf2 100755 (executable)
@@ -2,6 +2,7 @@
 {% load static from staticfiles %}
 {% load i18n catalogue_tags infopages_tags social_tags %}
 {% load ssi_include from ssify %}
+{% load cache %}
 
 
 {% block title %}{% trans "Wolne Lektury internet library" %}{% endblock %}
 
 {% block body %}{% spaceless %}
 
-    {% choose_cite as cite_pk %}
-    {{ cite_pk.if }}
-        {% ssi_include 'social_cite_main' pk=cite_pk %}
-    {{ cite_pk.endif }}
-
-    <section id="main-library">
-        <h1>W naszej cyfrowej bibliotece znajdziesz</h1>
-        <div class="main-library-row">
-            <div class="covers">
-            {% for b in best %}
-                {% ssi_include 'catalogue_book_mini' pk=b.pk %}
-            {% endfor %}
-            </div>
-            <a href="{% url "book_list" %}">
-                <div class="note white-box normal-text" style="font-size: 18px">
-                    i wiele innych książek, wierszy, obrazów, audiobooków…
-                </div>
-            </a>
-        </div>
-    </section>
-
-    <section id="main-theme">
-        <h1>Motywy i tematy</h1>
-        <div class="white-box normal-text">
-        <h2>{% trans "Theme" %}: {{ theme }}</h2>
-        <p>Utwory, w których występuje ten motyw:</p>
-        {% for book in theme_books %}
-            {% ssi_include 'catalogue_book_mini' pk=book.pk %}
+  {% choose_cite as cite_pk %}
+  {{ cite_pk.if }}
+    {% ssi_include 'social_cite_main' pk=cite_pk %}
+  {{ cite_pk.endif }}
+
+  <section id="main-library">
+    <h1>W naszej cyfrowej bibliotece znajdziesz</h1>
+    <div class="main-library-row">
+      <div class="covers">
+        {% for book in best %}
+          {% cache 86400 book_mini_box book.pk %}
+            {% include 'catalogue/book_mini_box.html' %}
+          {% endcache %}
+          {#% ssi_include 'catalogue_book_mini' pk=b.pk %#}
         {% endfor %}
-        {% if theme_fragment %}
-            {% ssi_include 'catalogue_fragment_promo' pk=theme_fragment.pk %}
-        {% endif %}
+      </div>
+      <a href="{% url "book_list" %}">
+        <div class="note white-box normal-text" style="font-size: 18px">
+          i wiele innych książek, wierszy, obrazów, audiobooków…
         </div>
-        <a class="more" href="{% url 'theme_catalogue' %}">Zobacz katalog motywów</a>
-    </section>
-
-    {% comment %}
-    <section class="tag-box-section">
-        <h1>Autorzy</h1>
-      <a class="tag-box" href="{{ author.get_absolute_url }}">
-      {% ssi_include "catalogue_tag_box" pk=author.pk %}
       </a>
-        <a class="more" href="{% url 'author_catalogue' %}">Zobacz katalog autorów</a>
-    </section>
+    </div>
+  </section>
+
+  <section id="main-theme">
+    <h1>Motywy i tematy</h1>
+    <div class="white-box normal-text">
+      <h2>{% trans "Theme" %}: {{ theme }}</h2>
+      <p>Utwory, w których występuje ten motyw:</p>
+      {% for book in theme_books %}
+        {% cache 86400 book_mini_box book.pk %}
+          {% include 'catalogue/book_mini_box.html' %}
+        {% endcache %}
+        {#% ssi_include 'catalogue_book_mini' pk=book.pk %#}
+      {% endfor %}
+      {% if theme_fragment %}
+        {% ssi_include 'catalogue_fragment_promo' pk=theme_fragment.pk %}
+      {% endif %}
+    </div>
+    <a class="more" href="{% url 'theme_catalogue' %}">Zobacz katalog motywów</a>
+  </section>
+
+  {% comment %}
+  <section class="tag-box-section">
+    <h1>Autorzy</h1>
+    <a class="tag-box" href="{{ author.get_absolute_url }}">
+      {% ssi_include "catalogue_tag_box" pk=author.pk %}
+    </a>
+    <a class="more" href="{% url 'author_catalogue' %}">Zobacz katalog autorów</a>
+  </section>
 
-    <section class="tag-box-section">
-        <h1>Gatunki</h1>
-      <a class="tag-box" href="{{ genre.get_absolute_url }}">
+  <section class="tag-box-section">
+    <h1>Gatunki</h1>
+    <a class="tag-box" href="{{ genre.get_absolute_url }}">
       {% ssi_include "catalogue_tag_box" pk=genre.pk %}
-      </a>
-        <a class="more" href="{% url 'genre_catalogue' %}">Zobacz katalog gatunków</a>
-    </section>
+    </a>
+    <a class="more" href="{% url 'genre_catalogue' %}">Zobacz katalog gatunków</a>
+  </section>
 
-    <section class="tag-box-section">
-        <h1>Rodzaje</h1>
-      <a class="tag-box" href="{{ kind.get_absolute_url }}">
+  <section class="tag-box-section">
+    <h1>Rodzaje</h1>
+    <a class="tag-box" href="{{ kind.get_absolute_url }}">
       {% ssi_include "catalogue_tag_box" pk=kind.pk %}
-      </a>
-        <a class="more" href="{% url 'kind_catalogue' %}">Zobacz katalog rodzajów</a>
-    </section>
+    </a>
+    <a class="more" href="{% url 'kind_catalogue' %}">Zobacz katalog rodzajów</a>
+  </section>
 
-    <section class="tag-box-section">
-        <h1>Epoki</h1>
-      <a class="tag-box" href="{{ epoch.get_absolute_url }}">
+  <section class="tag-box-section">
+    <h1>Epoki</h1>
+    <a class="tag-box" href="{{ epoch.get_absolute_url }}">
       {% ssi_include "catalogue_tag_box" pk=epoch.pk %}
-      </a>
-        <a class="more" href="{% url 'epoch_catalogue' %}">Zobacz katalog epok</a>
-    </section>
-    {% endcomment %}
-
-    {% if collection %}
-        <section>
-            <h1>Kolekcje</h1>
-            {% ssi_include 'catalogue_collection_box' pk=collection.pk %}
-            <a class="more" href="{% url 'catalogue_collections' %}">Zobacz katalog kolekcji</a>
-        </section>
-    {% endif %}
+    </a>
+    <a class="more" href="{% url 'epoch_catalogue' %}">Zobacz katalog epok</a>
+  </section>
+  {% endcomment %}
 
+  {% if collection %}
     <section>
-        <h1>{% trans "Recent publications" %}</h1>
-            {% for book in last_published %}
-                {% ssi_include 'catalogue_book_mini' pk=book.pk %}
-            {% endfor %}
-        <a class="more" href="{% url 'recent_list' %}">{% trans "More recent publications" %}</a>
+      <h1>Kolekcje</h1>
+      {% ssi_include 'catalogue_collection_box' pk=collection.pk %}
+      <a class="more" href="{% url 'catalogue_collections' %}">Zobacz katalog kolekcji</a>
     </section>
-
-    <div class="clearboth"></div>
-
-    <section class="infopages-box">
-        <h1>{% trans "News" %}</h1>
-        {% ssi_include 'latest_blog_posts' %}
-    </section>
-
-
-    <section class="infopages-box">
-        <h1>{% trans "Utilities" %}</h1>
-
-        <ul>
-            <li><a href="{% url 'suggest' %}" id="suggest" class="ajaxable">{% trans "Report a bug or suggestion" %}</a></li>
-            <!--li><a href="http://turniej.wolnelektury.pl">Turniej Elektrybałtów</a></li-->
-            <li><a href="{% url 'reporting_catalogue_pdf' %}">{% trans "Download the catalogue in PDF format." %}</a></li>
-           <li><a href="{% url 'dictionary_notes' %}">{% trans "Footnotes" %}</a></li>
-            <li><a href="{% url 'suggest_publishing' %}" id="suggest-publishing" class="ajaxable">{% trans "Missing a book?" %}</a></li>
-            <li><a href="{% url 'publish_plan' %}">{% trans "Publishing plan" %}</a></li>
-            <li><a href="{% url 'api' %}">API</a></li>
-            <li><a href="{% url 'oaipmh' %}">OAI-PMH</a></li>
-            <li><a href="{% url 'lesmianator' %}" lang="pl">Leśmianator</a></li>
-            <li><a href="http://polski.wolnelektury.pl" lang="pl">Materiały do nauki j. polskiego</a></li>
-
-        </ul>
-    </section>
-
-
-    <section class="infopages-box">
-        <h1>{% trans "Information" %}</h1>
-        <ul>
-            <li><a href="https://nowoczesnapolska.org.pl/prywatnosc/">{% trans "Privacy policy" %}</a></li>
-            {% infopages_on_main %}
-        </ul>
-
-        <div class="social-links">
-            <a href="https://pl-pl.facebook.com/pages/Wolne-Lektury/203084073268" title='Wolne Lektury @ Facebook'>
-                <img src="{% static "img/social/f.png" %}" alt="Wolne Lektury @ Facebook" />
-            </a>
-            <a href="https://nk.pl/profile/30441509" title='Wolne Lektury @ NK'>
-                <img src="{% static "img/social/nk.png" %}" alt="Wolne Lektury @ NK.pl" />
-            </a>
-        </div>
-    </section>
-
+  {% endif %}
+
+  <section>
+    <h1>{% trans "Recent publications" %}</h1>
+      {% for book in last_published %}
+        {% cache 86400 book_mini_box book.pk %}
+          {% include 'catalogue/book_mini_box.html' %}
+        {% endcache %}
+        {#% ssi_include 'catalogue_book_mini' pk=book.pk %#}
+      {% endfor %}
+    <a class="more" href="{% url 'recent_list' %}">{% trans "More recent publications" %}</a>
+  </section>
+
+  <div class="clearboth"></div>
+
+  <section class="infopages-box">
+    <h1>{% trans "News" %}</h1>
+    {% ssi_include 'latest_blog_posts' %}
+  </section>
+
+
+  <section class="infopages-box">
+    <h1>{% trans "Utilities" %}</h1>
+
+    <ul>
+      <li><a href="{% url 'suggest' %}" id="suggest" class="ajaxable">{% trans "Report a bug or suggestion" %}</a></li>
+      <!--li><a href="http://turniej.wolnelektury.pl">Turniej Elektrybałtów</a></li-->
+      <li><a href="{% url 'reporting_catalogue_pdf' %}">{% trans "Download the catalogue in PDF format." %}</a></li>
+<li><a href="{% url 'dictionary_notes' %}">{% trans "Footnotes" %}</a></li>
+      <li><a href="{% url 'suggest_publishing' %}" id="suggest-publishing" class="ajaxable">{% trans "Missing a book?" %}</a></li>
+      <li><a href="{% url 'publish_plan' %}">{% trans "Publishing plan" %}</a></li>
+      <li><a href="{% url 'api' %}">API</a></li>
+      {#<li><a href="{% url 'oaipmh' %}">OAI-PMH</a></li>#}
+      <li><a href="{% url 'lesmianator' %}" lang="pl">Leśmianator</a></li>
+      <li><a href="http://polski.wolnelektury.pl" lang="pl">Materiały do nauki j. polskiego</a></li>
+    </ul>
+  </section>
+
+
+  <section class="infopages-box">
+    <h1>{% trans "Information" %}</h1>
+    <ul>
+      <li><a href="https://nowoczesnapolska.org.pl/prywatnosc/">{% trans "Privacy policy" %}</a></li>
+      {% infopages_on_main %}
+    </ul>
+
+    <div class="social-links">
+      <a href="https://pl-pl.facebook.com/pages/Wolne-Lektury/203084073268" title='Wolne Lektury @ Facebook'>
+        <img src="{% static "img/social/f.png" %}" alt="Wolne Lektury @ Facebook" />
+      </a>
+      <a href="https://nk.pl/profile/30441509" title='Wolne Lektury @ NK'>
+        <img src="{% static "img/social/nk.png" %}" alt="Wolne Lektury @ NK.pl" />
+      </a>
+    </div>
+  </section>
 
 {% endspaceless %}{% endblock %}
 
 
 {% block add_footer %}{% spaceless %}
-{{ cite_pk.if }}
+  {{ cite_pk.if }}
     <p>{% trans "Image used:" %}
-    {% ssi_include 'social_cite_info' pk=cite_pk %}
+      {% ssi_include 'social_cite_info' pk=cite_pk %}
     </p>
-{{ cite_pk.endif }}
+  {{ cite_pk.endif }}
 {% endspaceless %}{% endblock %}
index f8be8a7..d3abd31 100644 (file)
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 {% spaceless %}
-<html lang="{{ LANGUAGE_CODE }}" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">
+    <html lang="{{ LANGUAGE_CODE }}" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">
     {% load pipeline i18n %}
     {% load static from staticfiles %}
     {% load catalogue_tags funding_tags reporting_stats %}
         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
         <meta name="application-name" content="Wolne Lektury" />
         <meta property="og:site_name" content="Wolne Lektury" />
-        <meta property="og:title" content="{% block ogtitle %}{% endblock %}" />
+        <meta property="og:title" content="{% block ogtitle %}{{ page_title }}{% endblock %}" />
         <meta property="og:type" content="{% block ogtype %}website{% endblock %}" />
         <meta property="og:image" content="{% block ogimage %}{{ FULL_STATIC_URL }}img/wiatrak.jpg{% endblock %}" />
         <meta name="description" content="{% block metadescription %}Darmowe, opracowane, pełne teksty lektur, e-booki, audiobooki i pliki DAISY na wolnej licencji.{% endblock %}" />
         {% block ogextra %}{% endblock %}
 
-        <title>{% block title %}{% trans "Wolne Lektury" %} :: {% block titleextra %}{% endblock %}{% endblock %}</title>
-        <link rel="icon" href="{% static 'img/favicon.png' %}" type="image/png" />
-        <link rel="search" type="application/opensearchdescription+xml" title="Wolne Lektury" href="{% static 'opensearch.xml' %}" />
+        <title>
+            {% block title %}{% block titleextra %}{{ page_title }}{% endblock %} :: {% trans "Wolne Lektury" %}{% endblock %}</title>
+        <link rel="icon" href="{% static 'img/favicon.png' %}" type="image/png"/>
+        <link rel="search" type="application/opensearchdescription+xml" title="Wolne Lektury"
+              href="{% static 'opensearch.xml' %}"/>
         {% stylesheet "main" %}
         {% block extrahead %}
         {% endblock %}
     </head>
     <body id="{% block bodyid %}base{% endblock %}">
 
-        {% block bodycontent %}
+    {% block bodycontent %}
 
         {% if not funding_no_show_current %}
             {% current_offer as current_offer %}
             {{ current_offer.if }}
-                {% ssi_include 'funding_top_bar' pk=current_offer %}
+            {% ssi_include 'funding_top_bar' pk=current_offer %}
             {{ current_offer.endif }}
         {% endif %}
 
         <div id="whole-header">
-        <div id="header-wrapper">
-        <header id="main">
+            <div id="header-wrapper">
+                <header id="main">
 
-            <a href="/" id="logo">
-                <img src="{% static 'img/logo-neon.png' %}" alt="Wolne Lektury" />
-            </a>
+                    <a href="/" id="logo">
+                        <img src="{% static 'img/logo-neon.png' %}" alt="Wolne Lektury"/>
+                    </a>
 
-            <p id="tagline">
-                    {% url 'book_list' as b %}
-                    {% url 'infopage' 'prawa' as r %}
+                    <p id="tagline">
+                        {% url 'book_list' as b %}
+                        {% url 'infopage' 'prawa' as r %}
                         {% count_books book_count %}
-                    {% blocktrans count book_count as c %}
-                    <a href='{{b}}'>{{c}}</a> free reading you have <a href='{{r}}'>right to</a>
-                    {% plural %}
-                    <a href='{{b}}'>{{c}}</a> free readings you have <a href='{{r}}'>right to</a>
-                    {% endblocktrans %}
-            </p>
-
-            <div id="lang-menu" class="hoverget">
+                        {% blocktrans count book_count as c %}
+                            <a href='{{ b }}'>{{ c }}</a> free reading you have <a href='{{ r }}'>right to</a>
+                        {% plural %}
+                            <a href='{{ b }}'>{{ c }}</a> free readings you have <a href='{{ r }}'>right to</a>
+                        {% endblocktrans %}
+                    </p>
+
+                    <div id="lang-menu" class="hoverget">
                 <span id='lang-button' class='hoverclick'>
                     <span class="lang-flag">⚐</span>
                     <span class="label"> {% trans "Language" %}</span>
                 </span>
-                <div id="lang-menu-items">
-                {% for lang in LANGUAGES %}
-                    <form action="{% url 'django.views.i18n.set_language' %}" method="post">
-                    {% ssi_csrf_token %}
-                    <input type="hidden" name="language" value="{{ lang.0 }}" />
-                    <button type="submit" lang="{{ lang.0 }}" class="{% ifequal lang.0 LANGUAGE_CODE %}active{% endifequal %}">{{ lang.1 }}</button>
-                    </form>
-                {% endfor %}
-                </div>
-            </div>
-
-            <a id="show-menu"></a>
-            <nav id="menu">
-
-            <ul id="user-info">
-                {% user_username as user_username %}
-                {% user_is_staff as user_is_staff %}
-                {{ user_username.if }}<li>
-                        <a href="{% url 'user_settings' %}">
-                            <strong>{{ user_username }}</strong>
-                        </a>
-                    </li>
-                <li><a href="{% url 'social_my_shelf' %}" id="user-shelves-link">{% trans "My shelf" %}</a>
-                </li>
-                {{ user_username.endif }}
-                {{ user_is_staff.if }}<li><a href="/admin/">{% trans "Administration" %}</a></li>
-                {{ user_is_staff.endif }}
-                {{ user_username.if }}<li><a href="{% url 'logout' %}?next={% block logout %}{{ request.get_full_path }}{% endblock %}">{% trans "Logout" %}</a></li>
-                {{ user_username.else }}
-                    <li>
-                    <a href="{% url 'login' %}?next={{ request.path }}" id="login">{% trans "Sign in" %}</a> / <a href="{% url 'register' %}?next={{ request.path }}" id="register">{% trans "Register" %}</a>
-                    </li>
-                {{ user_username.endif }}
-            </ul>
+                        <div id="lang-menu-items">
+                            {% for lang in LANGUAGES %}
+                                <form action="{% url 'django.views.i18n.set_language' %}" method="post">
+                                    {% ssi_csrf_token %}
+                                    <input type="hidden" name="language" value="{{ lang.0 }}"/>
+                                    <button type="submit" lang="{{ lang.0 }}"
+                                            class="{% ifequal lang.0 LANGUAGE_CODE %}active{% endifequal %}">{{ lang.1 }}</button>
+                                </form>
+                            {% endfor %}
+                        </div>
+                    </div>
+
+                    <a id="show-menu"></a>
+                    <nav id="menu">
+
+                        <ul id="user-info">
+                            {% user_username as user_username %}
+                            {% user_is_staff as user_is_staff %}
+                            {{ user_username.if }}
+                            <li>
+                                <a href="{% url 'user_settings' %}">
+                                    <strong>{{ user_username }}</strong>
+                                </a>
+                            </li>
+                            <li><a href="{% url 'social_my_shelf' %}" id="user-shelves-link">{% trans "My shelf" %}</a>
+                            </li>
+                            {{ user_username.endif }}
+                            {{ user_is_staff.if }}
+                            <li><a href="/admin/">{% trans "Administration" %}</a></li>
+                            {{ user_is_staff.endif }}
+                            {{ user_username.if }}
+                            <li><a href="{% url 'logout' %}?next=
+
+
+                                    {% block logout %}{{ request.get_full_path }}{% endblock %}">{% trans "Logout" %}</a>
+                            </li>
+                            {{ user_username.else }}
+                            <li>
+                                <a href="{% url 'login' %}?next={{ request.path }}" id="login">{% trans "Sign in" %}</a>
+                                / <a href="{% url 'register' %}?next={{ request.path }}"
+                                     id="register">{% trans "Register" %}</a>
+                            </li>
+                            {{ user_username.endif }}
+                        </ul>
 
 
             <ul id="main-menu">
             </ul>
 
 
-            </nav>
+                    </nav>
 
-            <form id="search-area" action="{% url 'search' %}">
-                <div id="search-field">
-                    <label for="search">{{search_form.q.label}}</label>
-                        {{search_form.q}}
-                </div><button type='submit'>{% trans "Search" %}</button>
-            </form>
+                    <form id="search-area" action="{% url 'search' %}">
+                        <div id="search-field">
+                            <label for="search">{{ search_form.q.label }}</label>
+                            {{ search_form.q }}
+                        </div>
+                        <button type='submit'>{% trans "Search" %}</button>
+                    </form>
 
-        </header>
-        </div>
+                </header>
+            </div>
         </div>
 
 
 
         <div id="main-content">
+            <div id="banners">
+                <a href="https://nowoczesnapolska.org.pl/pomoz-nam/wesprzyj-nas/">
+                    <img src="{% static 'img/banners/960x150_wolneLektury.jpg' %}"
+                         alt="Wesprzyj działalność Nowoczesnej Polski"/>
+                </a>
+            </div>
             {% block body %}
             {% endblock %}
             <div class="clearboth"></div>
 
 
         <div id="footer-wrapper">
-        <footer id="main">
-            {% ssi_include 'chunk' key='footer' %}
-            {% block add_footer %}{% endblock %}
-            {% ssi_include 'sponsor_page' name='footer' %}
-        </footer>
+            <footer id="main">
+                {% ssi_include 'chunk' key='footer' %}
+                {% block add_footer %}{% endblock %}
+                {% ssi_include 'sponsor_page' name='footer' %}
+            </footer>
         </div>
 
 
         </div>
 
 
-        {% endblock bodycontent %}
+    {% endblock bodycontent %}
 
 
-        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
-        <script type="text/javascript">var LANGUAGE_CODE="{{ LANGUAGE_CODE }}"; var STATIC_URL="{{ STATIC_URL }}";</script>
-        {% javascript "base" %}
+    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+    <script type="text/javascript">var LANGUAGE_CODE = "{{ LANGUAGE_CODE }}";
+    var STATIC_URL = "{{ STATIC_URL }}";</script>
+    {% javascript "base" %}
 
-        {% tracking_code %}
+    {% tracking_code %}
 
-               {% block extrabody %}
-               {% endblock %}
+    {% block extrabody %}
+    {% endblock %}
 
-        <script src="{% static "js/contrib/modernizr.custom.19652.js" %}"></script>
+    <script src="{% static "js/contrib/modernizr.custom.19652.js" %}"></script>
     </body>
-</html>
+    </html>
 {% endspaceless %}
index c179280..1a6738b 100644 (file)
@@ -35,10 +35,10 @@ def main_page(request):
     #         pass
 
     # FIXME: find this theme and books properly.
-    if Fragment.objects.count():
+    if Fragment.objects.exists():
         while True:
             ctx['theme'] = Tag.objects.filter(category='theme').order_by('?')[:1][0]
-            tf = Fragment.tagged.with_any([ctx['theme']]).order_by('?')[:100]
+            tf = Fragment.tagged.with_any([ctx['theme']]).select_related('book').order_by('?')[:100]
             if not tf:
                 continue
             ctx['theme_fragment'] = tf[0]