add pictures in search
authorJan Szejko <janek37@gmail.com>
Mon, 26 Feb 2018 10:54:24 +0000 (11:54 +0100)
committerJan Szejko <janek37@gmail.com>
Mon, 26 Feb 2018 12:49:12 +0000 (13:49 +0100)
20 files changed:
doc/schema.xml
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/templates/catalogue/search_multiple_hits.html
src/picture/models.py
src/picture/tasks.py
src/picture/templates/picture/picture_searched.html [new file with mode: 0644]
src/picture/templates/picture/picture_short.html
src/search/index.py
src/search/management/commands/reindex_pictures.py [new file with mode: 0644]
src/search/templatetags/search_tags.py
src/search/views.py
src/wolnelektury/static/scss/main/search.scss

index 38d6eda..b36c762 100644 (file)
    <field name="snippets_revision" type="int" stored="true" indexed="false"/>
    <field name="fragment_anchor" type="string" stored="true" indexed="false"/>
 
    <field name="snippets_revision" type="int" stored="true" indexed="false"/>
    <field name="fragment_anchor" type="string" stored="true" indexed="false"/>
 
+   <field name="picture_id" type="int" indexed="true" stored="true" />
+   <field name="area_id" type="int" stored="true" indexed="false"/>
+
    <field name="tag_id" type="int" stored="true" indexed="true"/>
    <field name="tag_name" type="lowercase" stored="true" indexed="true" />
    <field name="tag_name_pl" type="text_pl_nonstop" stored="false" indexed="true" multiValued="true"/>
    <field name="tag_id" type="int" stored="true" indexed="true"/>
    <field name="tag_name" type="lowercase" stored="true" indexed="true" />
    <field name="tag_name_pl" type="text_pl_nonstop" stored="false" indexed="true" multiValued="true"/>
index 6a7d47a..8e44e1e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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"
 "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"
@@ -157,91 +157,99 @@ msgstr "Groß"
 msgid "Queue is full. Please try again later."
 msgstr ""
 
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "Titel"
 
 msgid "title"
 msgstr "Titel"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "Sortierschlüssel"
 
 msgid "sort key"
 msgstr "Sortierschlüssel"
 
-#: models/book.py:52
+#: models/book.py:58
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Ergebnisse nach Autoren"
 
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Ergebnisse nach Autoren"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "Slug"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "Slug"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "Sprachenkode"
 
 msgid "language code"
 msgstr "Sprachenkode"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "Beschreibung"
 
 msgid "description"
 msgstr "Beschreibung"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "Erstellungsdatum"
 
 msgid "creation date"
 msgstr "Erstellungsdatum"
 
-#: models/book.py:58
+#: models/book.py:64
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "Erstellungsdatum"
 
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "Erstellungsdatum"
 
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "Elternnummer"
 
 msgid "parent number"
 msgstr "Elternnummer"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr "zusätzliche Informationen"
 
 msgid "extra information"
 msgstr "zusätzliche Informationen"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr ""
 
 msgid "print on demand"
 msgstr ""
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr ""
 
 msgid "recommended"
 msgstr ""
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "Umschlag"
 
 msgid "cover"
 msgstr "Umschlag"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr ""
 
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr ""
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr ""
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "Buch"
 
 msgid "book"
 msgstr "Buch"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "Bücher"
 
 msgid "books"
 msgstr "Bücher"
 
-#: models/book.py:362
+#: models/book.py:378
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Buch mit dem Slug = \"%s\" ist nicht vorhanden."
 
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Buch mit dem Slug = \"%s\" ist nicht vorhanden."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Buch %s ist bereits vorhanden"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Buch %s ist bereits vorhanden"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr ""
 
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "%s XML-Datei"
 #, python-format
 msgid "%s file"
 msgstr "%s XML-Datei"
@@ -343,7 +351,7 @@ msgstr "Buchregal"
 msgid "thing"
 msgstr ""
 
 msgid "thing"
 msgstr ""
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "Tag"
 
 msgid "tag"
 msgstr "Tag"
 
@@ -359,7 +367,7 @@ msgstr "Objekt ID"
 msgid "category"
 msgstr "Kategorie"
 
 msgid "category"
 msgstr "Kategorie"
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "Tags"
 
 msgid "tags"
 msgstr "Tags"
 
@@ -411,14 +419,10 @@ msgid "Editor's Platform"
 msgstr "Editor-Plattform"
 
 #: templates/catalogue/book_detail.html:71
 msgstr "Editor-Plattform"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Buchbeschreibung in Lektury.Gazeta.pl"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Buchbeschreibung in Wikipedia"
 
 msgid "Book description on Wikipedia"
 msgstr "Buchbeschreibung in Wikipedia"
 
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "Passe dieses Buch zusammen"
 
 msgid "Mix this book"
 msgstr "Passe dieses Buch zusammen"
 
@@ -540,7 +544,7 @@ msgid "Print on demand –"
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Herunterladen"
 
 msgid "Download"
 msgstr "Herunterladen"
 
@@ -654,7 +658,7 @@ msgstr[1] ""
 msgid "All collections"
 msgstr "Sammlungen"
 
 msgid "All collections"
 msgstr "Sammlungen"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "PDF-Datei herunterladen"
 
 msgid "Download custom PDF"
 msgstr "PDF-Datei herunterladen"
 
@@ -710,11 +714,11 @@ msgstr "Quelle des Bildes"
 msgid "Image on the Editor's Platform"
 msgstr "Bild auf dem Editor-Plattform"
 
 msgid "Image on the Editor's Platform"
 msgstr "Bild auf dem Editor-Plattform"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "Siehe XML-Quelle"
 
 msgid "View XML source"
 msgstr "Siehe XML-Quelle"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Motive des Werkes"
 
 msgid "Work's themes "
 msgstr "Motive des Werkes"
 
@@ -795,6 +799,16 @@ msgstr "Suchen"
 msgid "Did you mean"
 msgstr "Haben Sie gemeint"
 
 msgid "Did you mean"
 msgstr "Haben Sie gemeint"
 
+#: templates/catalogue/search_multiple_hits.html:31
+#, fuzzy
+#| msgid "books"
+msgid "Books"
+msgstr "Bücher"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr ""
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -913,15 +927,11 @@ msgstr "Motive und Themen"
 msgid "No description."
 msgstr "Beschreibung"
 
 msgid "No description."
 msgstr "Beschreibung"
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "in Lektury.Gazeta.pl"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "in Wikipedia"
 
 msgid "in Wikipedia"
 msgstr "in Wikipedia"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr ""
 
 msgid "in Culture.pl"
 msgstr ""
 
@@ -931,7 +941,7 @@ msgstr ""
 msgid "Loading"
 msgstr "Zeilenabstand"
 
 msgid "Loading"
 msgstr "Zeilenabstand"
 
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -942,15 +952,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "Buch wurde erfolgreich importiert"
 
 msgid "Book imported successfully"
 msgstr "Buch wurde erfolgreich importiert"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Fehler beim Importieren der Datei: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Fehler beim Importieren der Datei: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Buchbeschreibung in Lektury.Gazeta.pl"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "in Lektury.Gazeta.pl"
+
 #~ msgid "Results by title"
 #~ msgstr "Ergebnisse nach Titeln"
 
 #~ msgid "Results by title"
 #~ msgstr "Ergebnisse nach Titeln"
 
index 51d8707..3f92d1b 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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"
 "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"
@@ -157,91 +157,99 @@ msgstr "Big"
 msgid "Queue is full. Please try again later."
 msgstr ""
 
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "Title"
 
 msgid "title"
 msgstr "Title"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "Sort key"
 
 msgid "sort key"
 msgstr "Sort key"
 
-#: models/book.py:52
+#: models/book.py:58
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Results by authors"
 
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Results by authors"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "Slug"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "Slug"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "language code"
 
 msgid "language code"
 msgstr "language code"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "Description"
 
 msgid "description"
 msgstr "Description"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "creation date"
 
 msgid "creation date"
 msgstr "creation date"
 
-#: models/book.py:58
+#: models/book.py:64
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "creation date"
 
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "creation date"
 
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "Parent number"
 
 msgid "parent number"
 msgstr "Parent number"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr "Additional information"
 
 msgid "extra information"
 msgstr "Additional information"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr ""
 
 msgid "print on demand"
 msgstr ""
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr ""
 
 msgid "recommended"
 msgstr ""
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "cover"
 
 msgid "cover"
 msgstr "cover"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr ""
 
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr ""
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr ""
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "book"
 
 msgid "book"
 msgstr "book"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "Books"
 
 msgid "books"
 msgstr "Books"
 
-#: models/book.py:362
+#: models/book.py:378
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Book with stub = \"%s\" does not exist."
 
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Book with stub = \"%s\" does not exist."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Book %s already exists"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Book %s already exists"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr ""
 
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "%s file"
 #, python-format
 msgid "%s file"
 msgstr "%s file"
@@ -342,7 +350,7 @@ msgstr "set"
 msgid "thing"
 msgstr ""
 
 msgid "thing"
 msgstr ""
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "tag"
 
 msgid "tag"
 msgstr "tag"
 
@@ -358,7 +366,7 @@ msgstr "object id"
 msgid "category"
 msgstr "Category"
 
 msgid "category"
 msgstr "Category"
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "tags"
 
 msgid "tags"
 msgstr "tags"
 
@@ -410,14 +418,10 @@ msgid "Editor's Platform"
 msgstr "Editor's Platform"
 
 #: templates/catalogue/book_detail.html:71
 msgstr "Editor's Platform"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Book description on Lektury.Gazeta.pl"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Book description on Wikipedia"
 
 msgid "Book description on Wikipedia"
 msgstr "Book description on Wikipedia"
 
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "Mix this book"
 
 msgid "Mix this book"
 msgstr "Mix this book"
 
@@ -542,7 +546,7 @@ msgid "Print on demand –"
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Download"
 
 msgid "Download"
 msgstr "Download"
 
@@ -656,7 +660,7 @@ msgstr[1] ""
 msgid "All collections"
 msgstr "collections"
 
 msgid "All collections"
 msgstr "collections"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "Download custom PDF"
 
 msgid "Download custom PDF"
 msgstr "Download custom PDF"
 
@@ -713,11 +717,11 @@ msgstr "Source of the image"
 msgid "Image on the Editor's Platform"
 msgstr "Image on the Editor's Platform"
 
 msgid "Image on the Editor's Platform"
 msgstr "Image on the Editor's Platform"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "View XML source"
 
 msgid "View XML source"
 msgstr "View XML source"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Work's themes "
 
 msgid "Work's themes "
 msgstr "Work's themes "
 
@@ -797,6 +801,16 @@ msgstr "Search"
 msgid "Did you mean"
 msgstr "Did you mean"
 
 msgid "Did you mean"
 msgstr "Did you mean"
 
+#: templates/catalogue/search_multiple_hits.html:31
+#, fuzzy
+#| msgid "books"
+msgid "Books"
+msgstr "Books"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr ""
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -914,15 +928,11 @@ msgstr "Motifs and themes"
 msgid "No description."
 msgstr "Description"
 
 msgid "No description."
 msgstr "Description"
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "in Lektury.Gazeta.pl"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "in Wikipedia"
 
 msgid "in Wikipedia"
 msgstr "in Wikipedia"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr ""
 
 msgid "in Culture.pl"
 msgstr ""
 
@@ -932,7 +942,7 @@ msgstr ""
 msgid "Loading"
 msgstr "Leading"
 
 msgid "Loading"
 msgstr "Leading"
 
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -943,15 +953,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "Book imported succesfully"
 
 msgid "Book imported successfully"
 msgstr "Book imported succesfully"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "An error occured while importing file: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "An error occured while importing file: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Book description on Lektury.Gazeta.pl"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "in Lektury.Gazeta.pl"
+
 #~ msgid "Results by title"
 #~ msgstr "Results by title"
 
 #~ msgid "Results by title"
 #~ msgstr "Results by title"
 
index abefe57..18fb2fa 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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"
 "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"
@@ -157,91 +157,99 @@ msgstr "Grande"
 msgid "Queue is full. Please try again later."
 msgstr ""
 
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "título"
 
 msgid "title"
 msgstr "título"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "clave de clasificación"
 
 msgid "sort key"
 msgstr "clave de clasificación"
 
-#: models/book.py:52
+#: models/book.py:58
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Resultados por autor"
 
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Resultados por autor"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "código de idioma"
 
 msgid "language code"
 msgstr "código de idioma"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "descripción"
 
 msgid "description"
 msgstr "descripción"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "fecha de creación"
 
 msgid "creation date"
 msgstr "fecha de creación"
 
-#: models/book.py:58
+#: models/book.py:64
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "fecha de creación"
 
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "fecha de creación"
 
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "cifra matriz"
 
 msgid "parent number"
 msgstr "cifra matriz"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr "información adicional"
 
 msgid "extra information"
 msgstr "información adicional"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr ""
 
 msgid "print on demand"
 msgstr ""
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr ""
 
 msgid "recommended"
 msgstr ""
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "tapa"
 
 msgid "cover"
 msgstr "tapa"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr ""
 
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr ""
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr ""
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "libro"
 
 msgid "book"
 msgstr "libro"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "libros"
 
 msgid "books"
 msgstr "libros"
 
-#: models/book.py:362
+#: models/book.py:378
 #, fuzzy, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Libro con slug = \"%s\" no existe."
 
 #, fuzzy, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Libro con slug = \"%s\" no existe."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Libro %s ya existe"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Libro %s ya existe"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr ""
 
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "%s archivo"
 #, python-format
 msgid "%s file"
 msgstr "%s archivo"
@@ -343,7 +351,7 @@ msgstr "colección"
 msgid "thing"
 msgstr ""
 
 msgid "thing"
 msgstr ""
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "tag"
 
 msgid "tag"
 msgstr "tag"
 
@@ -359,7 +367,7 @@ msgstr "id de objeto"
 msgid "category"
 msgstr "categoría"
 
 msgid "category"
 msgstr "categoría"
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "tags"
 
 msgid "tags"
 msgstr "tags"
 
@@ -411,10 +419,6 @@ msgid "Editor's Platform"
 msgstr "Plataforma de Editor"
 
 #: templates/catalogue/book_detail.html:71
 msgstr "Plataforma de Editor"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Descripción del libro en Lektury.Gazeta.pl"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Descripción del libro en Wikipedia"
 
 msgid "Book description on Wikipedia"
 msgstr "Descripción del libro en Wikipedia"
 
@@ -422,7 +426,7 @@ msgstr "Descripción del libro en Wikipedia"
 # ! relaciona lub combina - jeśli chodzi o powiązanie
 # ! prepara - jeśli chodzi o przygotowanie
 # (zmienić czasownik "mezcla" na któryś z powyższych jeśli kontekst jest inny)
 # ! relaciona lub combina - jeśli chodzi o powiązanie
 # ! prepara - jeśli chodzi o przygotowanie
 # (zmienić czasownik "mezcla" na któryś z powyższych jeśli kontekst jest inny)
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "Mezcla este libro"
 
 msgid "Mix this book"
 msgstr "Mezcla este libro"
 
@@ -547,7 +551,7 @@ msgid "Print on demand –"
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Descargar"
 
 msgid "Download"
 msgstr "Descargar"
 
@@ -662,7 +666,7 @@ msgstr[1] ""
 msgid "All collections"
 msgstr "colecciones"
 
 msgid "All collections"
 msgstr "colecciones"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "Descarga PDF personalizado"
 
 msgid "Download custom PDF"
 msgstr "Descarga PDF personalizado"
 
@@ -720,11 +724,11 @@ msgstr "Fuente de la imagen"
 msgid "Image on the Editor's Platform"
 msgstr "Imagen en la Plataforma de Editor"
 
 msgid "Image on the Editor's Platform"
 msgstr "Imagen en la Plataforma de Editor"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "Ver código fuente XML"
 
 msgid "View XML source"
 msgstr "Ver código fuente XML"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Temas de las obras"
 
 msgid "Work's themes "
 msgstr "Temas de las obras"
 
@@ -803,6 +807,16 @@ msgstr "Buscar"
 msgid "Did you mean"
 msgstr "¿Te has referido a...?"
 
 msgid "Did you mean"
 msgstr "¿Te has referido a...?"
 
+#: templates/catalogue/search_multiple_hits.html:31
+#, fuzzy
+#| msgid "books"
+msgid "Books"
+msgstr "libros"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr ""
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -925,15 +939,11 @@ msgstr "Motivos y temas"
 msgid "No description."
 msgstr "descripción"
 
 msgid "No description."
 msgstr "descripción"
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "en Lektury.Gazeta.pl"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "en Wikipedia"
 
 msgid "in Wikipedia"
 msgstr "en Wikipedia"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr ""
 
 msgid "in Culture.pl"
 msgstr ""
 
@@ -945,7 +955,7 @@ msgstr "Interlineado"
 
 # msgid "Today is %(month)s, %(day)s."
 # msgstr "Hoy es el %(día)s de %(mes)es"
 
 # msgid "Today is %(month)s, %(day)s."
 # msgstr "Hoy es el %(día)s de %(mes)es"
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -956,15 +966,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "El libro ha sido importado con éxito"
 
 msgid "Book imported successfully"
 msgstr "El libro ha sido importado con éxito"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Ha ocurrido un error al cargar el archivo: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Ha ocurrido un error al cargar el archivo: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Descripción del libro en Lektury.Gazeta.pl"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "en Lektury.Gazeta.pl"
+
 #~ msgid "Results by title"
 #~ msgstr "Resultados por título"
 
 #~ msgid "Results by title"
 #~ msgstr "Resultados por título"
 
index 5755ee3..36a29d9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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"
 "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"
@@ -156,91 +156,99 @@ msgstr "Grand(e)(s)"
 msgid "Queue is full. Please try again later."
 msgstr ""
 
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "titre"
 
 msgid "title"
 msgstr "titre"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "critère de tri"
 
 msgid "sort key"
 msgstr "critère de tri"
 
-#: models/book.py:52
+#: models/book.py:58
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Résultats par l'auteur"
 
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Résultats par l'auteur"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "ébauche"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "ébauche"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "code de langue"
 
 msgid "language code"
 msgstr "code de langue"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "description"
 
 msgid "description"
 msgstr "description"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "date de création"
 
 msgid "creation date"
 msgstr "date de création"
 
-#: models/book.py:58
+#: models/book.py:64
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "date de création"
 
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "date de création"
 
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "nombre de parent"
 
 msgid "parent number"
 msgstr "nombre de parent"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr "information supplémentaire"
 
 msgid "extra information"
 msgstr "information supplémentaire"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr ""
 
 msgid "print on demand"
 msgstr ""
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr ""
 
 msgid "recommended"
 msgstr ""
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "couverture"
 
 msgid "cover"
 msgstr "couverture"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr ""
 
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr ""
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr ""
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "livre"
 
 msgid "book"
 msgstr "livre"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "livres"
 
 msgid "books"
 msgstr "livres"
 
-#: models/book.py:362
+#: models/book.py:378
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Livre \"%s\" n'existe pas."
 
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Livre \"%s\" n'existe pas."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Livre %s existe déjà"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Livre %s existe déjà"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr ""
 
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "fichier %s"
 #, python-format
 msgid "%s file"
 msgstr "fichier %s"
@@ -342,7 +350,7 @@ msgstr "série"
 msgid "thing"
 msgstr ""
 
 msgid "thing"
 msgstr ""
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "tag"
 
 msgid "tag"
 msgstr "tag"
 
@@ -358,7 +366,7 @@ msgstr "ID de l'objet"
 msgid "category"
 msgstr "catégorie"
 
 msgid "category"
 msgstr "catégorie"
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "tags"
 
 msgid "tags"
 msgstr "tags"
 
@@ -410,14 +418,10 @@ msgid "Editor's Platform"
 msgstr "Plateforme d'éditeur"
 
 #: templates/catalogue/book_detail.html:71
 msgstr "Plateforme d'éditeur"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Description du livre sur Lektury.Gazeta.pl"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Description du livre sur Wikipédia"
 
 msgid "Book description on Wikipedia"
 msgstr "Description du livre sur Wikipédia"
 
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "Mixez ce livre"
 
 msgid "Mix this book"
 msgstr "Mixez ce livre"
 
@@ -541,7 +545,7 @@ msgid "Print on demand –"
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Téléchargez"
 
 msgid "Download"
 msgstr "Téléchargez"
 
@@ -655,7 +659,7 @@ msgstr[1] ""
 msgid "All collections"
 msgstr "collections"
 
 msgid "All collections"
 msgstr "collections"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "Téléchargez un PDF personnalisé"
 
 msgid "Download custom PDF"
 msgstr "Téléchargez un PDF personnalisé"
 
@@ -711,11 +715,11 @@ msgstr "Source d'image"
 msgid "Image on the Editor's Platform"
 msgstr "L'image sur la Plateforme d'éditeur"
 
 msgid "Image on the Editor's Platform"
 msgstr "L'image sur la Plateforme d'éditeur"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "Voir source XML"
 
 msgid "View XML source"
 msgstr "Voir source XML"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Les thèmes de l'oeuvre"
 
 msgid "Work's themes "
 msgstr "Les thèmes de l'oeuvre"
 
@@ -796,6 +800,16 @@ msgstr "Rechercher"
 msgid "Did you mean"
 msgstr "Est-ce que vous cherchez"
 
 msgid "Did you mean"
 msgstr "Est-ce que vous cherchez"
 
+#: templates/catalogue/search_multiple_hits.html:31
+#, fuzzy
+#| msgid "books"
+msgid "Books"
+msgstr "livres"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr ""
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -918,15 +932,11 @@ msgstr "Motifs et thèmes"
 msgid "No description."
 msgstr "description"
 
 msgid "No description."
 msgstr "description"
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "sur Lektury.Gazeta.pl"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "sur Wikipédia"
 
 msgid "in Wikipedia"
 msgstr "sur Wikipédia"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr ""
 
 msgid "in Culture.pl"
 msgstr ""
 
@@ -938,7 +948,7 @@ msgstr "Interligne"
 
 # msgid "Today is %(month)s, %(day)s."
 # msgstr "Aujourd'hui nous sommes le"
 
 # msgid "Today is %(month)s, %(day)s."
 # msgstr "Aujourd'hui nous sommes le"
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -949,15 +959,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "Livre importé avec succès"
 
 msgid "Book imported successfully"
 msgstr "Livre importé avec succès"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Erreur pendant l'importation du fichier: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Erreur pendant l'importation du fichier: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Description du livre sur Lektury.Gazeta.pl"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "sur Lektury.Gazeta.pl"
+
 #~ msgid "Results by title"
 #~ msgstr "Résultats par le titre"
 
 #~ msgid "Results by title"
 #~ msgstr "Résultats par le titre"
 
index e28079b..8802ef8 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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"
 "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"
@@ -157,91 +157,99 @@ msgstr "Grande"
 msgid "Queue is full. Please try again later."
 msgstr ""
 
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "titolo"
 
 msgid "title"
 msgstr "titolo"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "chiave di ordinamento"
 
 msgid "sort key"
 msgstr "chiave di ordinamento"
 
-#: models/book.py:52
+#: models/book.py:58
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Risultati per autore"
 
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Risultati per autore"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "codice della lingua"
 
 msgid "language code"
 msgstr "codice della lingua"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "descrizione"
 
 msgid "description"
 msgstr "descrizione"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "data di creazione"
 
 msgid "creation date"
 msgstr "data di creazione"
 
-#: models/book.py:58
+#: models/book.py:64
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "data di creazione"
 
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "data di creazione"
 
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "numero del genitore"
 
 msgid "parent number"
 msgstr "numero del genitore"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr " ulteriori informazioni"
 
 msgid "extra information"
 msgstr " ulteriori informazioni"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr ""
 
 msgid "print on demand"
 msgstr ""
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr ""
 
 msgid "recommended"
 msgstr ""
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "copertina"
 
 msgid "cover"
 msgstr "copertina"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr ""
 
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr ""
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr ""
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "libro"
 
 msgid "book"
 msgstr "libro"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "Libri"
 
 msgid "books"
 msgstr "Libri"
 
-#: models/book.py:362
+#: models/book.py:378
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Il libro \"%s\" non esiste."
 
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Il libro \"%s\" non esiste."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Il libro %s esiste già"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Il libro %s esiste già"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr ""
 
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "i %s di file"
 #, python-format
 msgid "%s file"
 msgstr "i %s di file"
@@ -342,7 +350,7 @@ msgstr "raccolta"
 msgid "thing"
 msgstr ""
 
 msgid "thing"
 msgstr ""
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "tag"
 
 msgid "tag"
 msgstr "tag"
 
@@ -358,7 +366,7 @@ msgstr ""
 msgid "category"
 msgstr "categoria"
 
 msgid "category"
 msgstr "categoria"
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "i tag"
 
 msgid "tags"
 msgstr "i tag"
 
@@ -410,14 +418,10 @@ msgid "Editor's Platform"
 msgstr " Piattaforma del editore"
 
 #: templates/catalogue/book_detail.html:71
 msgstr " Piattaforma del editore"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Descrizione del libro su Lektury.Gazeta.pl"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Descrizione del libro su Wikipedia"
 
 msgid "Book description on Wikipedia"
 msgstr "Descrizione del libro su Wikipedia"
 
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "Combina questo libro"
 
 msgid "Mix this book"
 msgstr "Combina questo libro"
 
@@ -544,7 +548,7 @@ msgid "Print on demand –"
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Scarica"
 
 msgid "Download"
 msgstr "Scarica"
 
@@ -658,7 +662,7 @@ msgstr[1] ""
 msgid "All collections"
 msgstr " raccolte"
 
 msgid "All collections"
 msgstr " raccolte"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "Scarica PDF personalizzato"
 
 msgid "Download custom PDF"
 msgstr "Scarica PDF personalizzato"
 
@@ -716,11 +720,11 @@ msgstr "Fonte dell'immagine"
 msgid "Image on the Editor's Platform"
 msgstr "Immagine sulla piattaforma del editore"
 
 msgid "Image on the Editor's Platform"
 msgstr "Immagine sulla piattaforma del editore"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "Visualizza la fonte XML"
 
 msgid "View XML source"
 msgstr "Visualizza la fonte XML"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Temi dell'opera"
 
 msgid "Work's themes "
 msgstr "Temi dell'opera"
 
@@ -800,6 +804,16 @@ msgstr "Cerca"
 msgid "Did you mean"
 msgstr "Volevi dire"
 
 msgid "Did you mean"
 msgstr "Volevi dire"
 
+#: templates/catalogue/search_multiple_hits.html:31
+#, fuzzy
+#| msgid "books"
+msgid "Books"
+msgstr "Libri"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr ""
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -921,15 +935,11 @@ msgstr "Motivi e temi"
 msgid "No description."
 msgstr "descrizione"
 
 msgid "No description."
 msgstr "descrizione"
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "su Lektury.Gazeta.pl"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "su Wikipedia"
 
 msgid "in Wikipedia"
 msgstr "su Wikipedia"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr ""
 
 msgid "in Culture.pl"
 msgstr ""
 
@@ -939,7 +949,7 @@ msgstr ""
 msgid "Loading"
 msgstr "Interlinea"
 
 msgid "Loading"
 msgstr "Interlinea"
 
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -950,15 +960,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "Libro scaricato con successo"
 
 msgid "Book imported successfully"
 msgstr "Libro scaricato con successo"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Errore dell'importazione del file: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Errore dell'importazione del file: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Descrizione del libro su Lektury.Gazeta.pl"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "su Lektury.Gazeta.pl"
+
 #~ msgid "Results by title"
 #~ msgstr "Risultati per titolo"
 
 #~ msgid "Results by title"
 #~ msgstr "Risultati per titolo"
 
index 94989fb..6431022 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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"
 "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"
@@ -157,92 +157,100 @@ msgstr "Didelis"
 msgid "Queue is full. Please try again later."
 msgstr ""
 
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "pavadinimas"
 
 msgid "title"
 msgstr "pavadinimas"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "rikiavimo raktas"
 
 msgid "sort key"
 msgstr "rikiavimo raktas"
 
-#: models/book.py:52
+#: models/book.py:58
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Rezultatai pagal autorius"
 
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Rezultatai pagal autorius"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "kalbos kodas"
 
 msgid "language code"
 msgstr "kalbos kodas"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "aprašymas"
 
 msgid "description"
 msgstr "aprašymas"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "sukūrimo data"
 
 msgid "creation date"
 msgstr "sukūrimo data"
 
-#: models/book.py:58
+#: models/book.py:64
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "sukūrimo data"
 
 # sprawdz
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "sukūrimo data"
 
 # sprawdz
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "pirminis numeris"
 
 msgid "parent number"
 msgstr "pirminis numeris"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr "papildomos informacijos"
 
 msgid "extra information"
 msgstr "papildomos informacijos"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr ""
 
 msgid "print on demand"
 msgstr ""
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr ""
 
 msgid "recommended"
 msgstr ""
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "viršelis"
 
 msgid "cover"
 msgstr "viršelis"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr ""
 
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr ""
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr ""
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "knyga"
 
 msgid "book"
 msgstr "knyga"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "knygos"
 
 msgid "books"
 msgstr "knygos"
 
-#: models/book.py:362
+#: models/book.py:378
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Knyga \"%s\" neegzistuoja."
 
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Knyga \"%s\" neegzistuoja."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Knyga %s jau egzistuoja"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Knyga %s jau egzistuoja"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr ""
 
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "%s failas "
 #, python-format
 msgid "%s file"
 msgstr "%s failas "
@@ -343,7 +351,7 @@ msgstr "rinkinys"
 msgid "thing"
 msgstr ""
 
 msgid "thing"
 msgstr ""
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "žymė"
 
 msgid "tag"
 msgstr "žymė"
 
@@ -359,7 +367,7 @@ msgstr "id obiektas"
 msgid "category"
 msgstr "kategorija  "
 
 msgid "category"
 msgstr "kategorija  "
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "žymės"
 
 msgid "tags"
 msgstr "žymės"
 
@@ -411,14 +419,10 @@ msgid "Editor's Platform"
 msgstr "Redaktoriaus Platformoje"
 
 #: templates/catalogue/book_detail.html:71
 msgstr "Redaktoriaus Platformoje"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Knygos aprašymas Lektury.Gazeta.pl interneto svetainėje"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Knygos aprašymas Vikipedijoje"
 
 msgid "Book description on Wikipedia"
 msgstr "Knygos aprašymas Vikipedijoje"
 
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "Maišyti šią knygą"
 
 msgid "Mix this book"
 msgstr "Maišyti šią knygą"
 
@@ -544,7 +548,7 @@ msgid "Print on demand –"
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Atsisiųsti"
 
 msgid "Download"
 msgstr "Atsisiųsti"
 
@@ -659,7 +663,7 @@ msgstr[1] ""
 msgid "All collections"
 msgstr "kolekcijos"
 
 msgid "All collections"
 msgstr "kolekcijos"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "Sukurti ir atsisiųsti PDF failą"
 
 msgid "Download custom PDF"
 msgstr "Sukurti ir atsisiųsti PDF failą"
 
@@ -717,11 +721,11 @@ msgstr "Paveikslėlio šaltinis"
 msgid "Image on the Editor's Platform"
 msgstr "Paveikslėlis Redaktoriaus Platformoje"
 
 msgid "Image on the Editor's Platform"
 msgstr "Paveikslėlis Redaktoriaus Platformoje"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "Žiūrėti XML šaltinį"
 
 msgid "View XML source"
 msgstr "Žiūrėti XML šaltinį"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Kūrinio motyvai"
 
 msgid "Work's themes "
 msgstr "Kūrinio motyvai"
 
@@ -801,6 +805,16 @@ msgstr "Ieškoti"
 msgid "Did you mean"
 msgstr "Gal turėjote omenyje"
 
 msgid "Did you mean"
 msgstr "Gal turėjote omenyje"
 
+#: templates/catalogue/search_multiple_hits.html:31
+#, fuzzy
+#| msgid "books"
+msgid "Books"
+msgstr "knygos"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr ""
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -920,15 +934,11 @@ msgstr "Motyvai ir temos"
 msgid "No description."
 msgstr "aprašymas"
 
 msgid "No description."
 msgstr "aprašymas"
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "Lektury.Gazeta.pl interneto svetainėje"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "Vikipedijoje"
 
 msgid "in Wikipedia"
 msgstr "Vikipedijoje"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr ""
 
 msgid "in Culture.pl"
 msgstr ""
 
@@ -938,7 +948,7 @@ msgstr ""
 msgid "Loading"
 msgstr "eilučių intervalas"
 
 msgid "Loading"
 msgstr "eilučių intervalas"
 
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -949,15 +959,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "Knyga buvo sėkmingai importuota"
 
 msgid "Book imported successfully"
 msgstr "Knyga buvo sėkmingai importuota"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Importuojant failą įvyko klaida: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Importuojant failą įvyko klaida: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Knygos aprašymas Lektury.Gazeta.pl interneto svetainėje"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "Lektury.Gazeta.pl interneto svetainėje"
+
 #~ msgid "Results by title"
 #~ msgstr "Rezultatai pagal pavadinimą"
 
 #~ msgid "Results by title"
 #~ msgstr "Rezultatai pagal pavadinimą"
 
index 8a2ffab..5c09127 100644 (file)
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WolneLektury\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: WolneLektury\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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."
 "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."
@@ -136,89 +136,95 @@ msgstr "Duży"
 msgid "Queue is full. Please try again later."
 msgstr "Kolejka jest pełna. Proszę spróbować ponownie później."
 
 msgid "Queue is full. Please try again later."
 msgstr "Kolejka jest pełna. Proszę spróbować ponownie później."
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "tytuł"
 
 msgid "title"
 msgstr "tytuł"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "klucz sortowania"
 
 msgid "sort key"
 msgstr "klucz sortowania"
 
-#: models/book.py:52
+#: models/book.py:58
 msgid "sort key by author"
 msgstr "klucz sortowania wg autora"
 
 msgid "sort key by author"
 msgstr "klucz sortowania wg autora"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "Kod języka"
 
 msgid "language code"
 msgstr "Kod języka"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "opis"
 
 msgid "description"
 msgstr "opis"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "data utworzenia"
 
 msgid "creation date"
 msgstr "data utworzenia"
 
-#: models/book.py:58
-#, fuzzy
-#| msgid "creation date"
+#: models/book.py:64
 msgid "change date"
 msgid "change date"
-msgstr "data utworzenia"
+msgstr "data modyfikacji"
 
 
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "numer rodzica"
 
 msgid "parent number"
 msgstr "numer rodzica"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr "dodatkowe informacje"
 
 msgid "extra information"
 msgstr "dodatkowe informacje"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr "druk na żądanie"
 
 msgid "print on demand"
 msgstr "druk na żądanie"
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr "polecane"
 
 msgid "recommended"
 msgstr "polecane"
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "okładka"
 
 msgid "cover"
 msgstr "okładka"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr "podgląd okładki"
 
 msgid "cover thumbnail"
 msgstr "podgląd okładki"
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr "mniaturka okładki dla aplikacji"
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr "okładka dla aplikacji"
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "książka"
 
 msgid "book"
 msgstr "książka"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "książki"
 
 msgid "books"
 msgstr "książki"
 
-#: models/book.py:362
+#: models/book.py:378
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Utwór \"%s\" nie istnieje."
 
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Utwór \"%s\" nie istnieje."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Książka %s już istnieje"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Książka %s już istnieje"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr "Ten utwór wymaga uwspółcześnienia"
 
 msgid "This work needs modernisation"
 msgstr "Ten utwór wymaga uwspółcześnienia"
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "plik %s"
 #, python-format
 msgid "%s file"
 msgstr "plik %s"
@@ -311,7 +317,7 @@ msgstr "półka"
 msgid "thing"
 msgstr "przedmiot"
 
 msgid "thing"
 msgstr "przedmiot"
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "tag"
 
 msgid "tag"
 msgstr "tag"
 
@@ -327,7 +333,7 @@ msgstr "id obiektu"
 msgid "category"
 msgstr "kategoria"
 
 msgid "category"
 msgstr "kategoria"
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "tagi"
 
 msgid "tags"
 msgstr "tagi"
 
@@ -375,14 +381,10 @@ msgid "Editor's Platform"
 msgstr "Platformie Redakcyjnej"
 
 #: templates/catalogue/book_detail.html:71
 msgstr "Platformie Redakcyjnej"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Opis lektury w Lektury.Gazeta.pl"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Opis lektury w Wikipedii"
 
 msgid "Book description on Wikipedia"
 msgstr "Opis lektury w Wikipedii"
 
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "Miksuj treść utworu"
 
 msgid "Mix this book"
 msgstr "Miksuj treść utworu"
 
@@ -492,7 +494,7 @@ msgid "Print on demand –"
 msgstr "Druk na żądanie z"
 
 #: templates/catalogue/book_short.html:104
 msgstr "Druk na żądanie z"
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Pobierz"
 
 msgid "Download"
 msgstr "Pobierz"
 
@@ -595,7 +597,7 @@ msgstr[2] "oraz %(c)s innych"
 msgid "All collections"
 msgstr "Wszystkie kolekcje"
 
 msgid "All collections"
 msgstr "Wszystkie kolekcje"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "Stwórz własny PDF"
 
 msgid "Download custom PDF"
 msgstr "Stwórz własny PDF"
 
@@ -653,11 +655,11 @@ msgstr "Źródło obrazu"
 msgid "Image on the Editor's Platform"
 msgstr "Obraz na Platformie Redakcyjnej"
 
 msgid "Image on the Editor's Platform"
 msgstr "Obraz na Platformie Redakcyjnej"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "Źródłowy plik XML"
 
 msgid "View XML source"
 msgstr "Źródłowy plik XML"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Motywy w utworze"
 
 msgid "Work's themes "
 msgstr "Motywy w utworze"
 
@@ -735,6 +737,14 @@ msgstr "Szukaj"
 msgid "Did you mean"
 msgstr "Czy chodziło Ci o"
 
 msgid "Did you mean"
 msgstr "Czy chodziło Ci o"
 
+#: templates/catalogue/search_multiple_hits.html:31
+msgid "Books"
+msgstr "Książki"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr "Obrazy"
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -835,15 +845,11 @@ msgstr "Motywy i tematy"
 msgid "No description."
 msgstr "Brak opisu."
 
 msgid "No description."
 msgstr "Brak opisu."
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "w serwisie Lektury.Gazeta.pl"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "w Wikipedii"
 
 msgid "in Wikipedia"
 msgstr "w Wikipedii"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr "w Culture.pl"
 
 msgid "in Culture.pl"
 msgstr "w Culture.pl"
 
@@ -851,7 +857,7 @@ msgstr "w Culture.pl"
 msgid "Loading"
 msgstr "Ładowanie"
 
 msgid "Loading"
 msgstr "Ładowanie"
 
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -862,15 +868,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "Książka zaimportowana"
 
 msgid "Book imported successfully"
 msgstr "Książka zaimportowana"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Błąd podczas importowania pliku: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Błąd podczas importowania pliku: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Opis lektury w Lektury.Gazeta.pl"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "w serwisie Lektury.Gazeta.pl"
+
 #~ msgid "Results by title"
 #~ msgstr "Znalezione w tytułach"
 
 #~ msgid "Results by title"
 #~ msgstr "Znalezione w tytułach"
 
index 3b53784..5cf183c 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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"
 "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"
@@ -157,91 +157,99 @@ msgstr "Большой"
 msgid "Queue is full. Please try again later."
 msgstr ""
 
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "заглавие"
 
 msgid "title"
 msgstr "заглавие"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "ключ сортировки "
 
 msgid "sort key"
 msgstr "ключ сортировки "
 
-#: models/book.py:52
+#: models/book.py:58
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Результаты по авторам"
 
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Результаты по авторам"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "код языка"
 
 msgid "language code"
 msgstr "код языка"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "описание"
 
 msgid "description"
 msgstr "описание"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "дата создания"
 
 msgid "creation date"
 msgstr "дата создания"
 
-#: models/book.py:58
+#: models/book.py:64
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "дата создания"
 
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "дата создания"
 
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "номер родителя"
 
 msgid "parent number"
 msgstr "номер родителя"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr "дополнительная информация"
 
 msgid "extra information"
 msgstr "дополнительная информация"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr ""
 
 msgid "print on demand"
 msgstr ""
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr ""
 
 msgid "recommended"
 msgstr ""
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "обложка"
 
 msgid "cover"
 msgstr "обложка"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr ""
 
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr ""
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr ""
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "книга"
 
 msgid "book"
 msgstr "книга"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "книги"
 
 msgid "books"
 msgstr "книги"
 
-#: models/book.py:362
+#: models/book.py:378
 #, fuzzy, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Книга со slug = \"%s\"  не существует."
 
 #, fuzzy, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Книга со slug = \"%s\"  не существует."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Книга %s уже существует"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Книга %s уже существует"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr ""
 
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, fuzzy, python-format
 msgid "%s file"
 msgstr "XML файл"
 #, fuzzy, python-format
 msgid "%s file"
 msgstr "XML файл"
@@ -344,7 +352,7 @@ msgstr "набор"
 msgid "thing"
 msgstr ""
 
 msgid "thing"
 msgstr ""
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "таг"
 
 msgid "tag"
 msgstr "таг"
 
@@ -360,7 +368,7 @@ msgstr "ID объекта"
 msgid "category"
 msgstr "категория"
 
 msgid "category"
 msgstr "категория"
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "таги"
 
 msgid "tags"
 msgstr "таги"
 
@@ -412,14 +420,10 @@ msgid "Editor's Platform"
 msgstr "Платформа редакторов"
 
 #: templates/catalogue/book_detail.html:71
 msgstr "Платформа редакторов"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Описание книги на Lektury.Gazeta.pl"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Описание книги на Wikipedia"
 
 msgid "Book description on Wikipedia"
 msgstr "Описание книги на Wikipedia"
 
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "данной книги"
 
 msgid "Mix this book"
 msgstr "данной книги"
 
@@ -546,7 +550,7 @@ msgid "Print on demand –"
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Загрузить"
 
 msgid "Download"
 msgstr "Загрузить"
 
@@ -660,7 +664,7 @@ msgstr[1] ""
 msgid "All collections"
 msgstr "сборы"
 
 msgid "All collections"
 msgstr "сборы"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "Скачать PDF пользователя"
 
 msgid "Download custom PDF"
 msgstr "Скачать PDF пользователя"
 
@@ -718,11 +722,11 @@ msgstr "Источник книги"
 msgid "Image on the Editor's Platform"
 msgstr "Изображение на платформе редакторов"
 
 msgid "Image on the Editor's Platform"
 msgstr "Изображение на платформе редакторов"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "Просмотр XML-источник"
 
 msgid "View XML source"
 msgstr "Просмотр XML-источник"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Темы труда"
 
 msgid "Work's themes "
 msgstr "Темы труда"
 
@@ -802,6 +806,16 @@ msgstr "Поиск"
 msgid "Did you mean"
 msgstr "Вы имели в виду"
 
 msgid "Did you mean"
 msgstr "Вы имели в виду"
 
+#: templates/catalogue/search_multiple_hits.html:31
+#, fuzzy
+#| msgid "books"
+msgid "Books"
+msgstr "книги"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr ""
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -921,15 +935,11 @@ msgstr "Мотивы и темы"
 msgid "No description."
 msgstr "описание"
 
 msgid "No description."
 msgstr "описание"
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "на Lektury.Gazeta.pl"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "в Википедии"
 
 msgid "in Wikipedia"
 msgstr "в Википедии"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr ""
 
 msgid "in Culture.pl"
 msgstr ""
 
@@ -939,7 +949,7 @@ msgstr ""
 msgid "Loading"
 msgstr "Ведение"
 
 msgid "Loading"
 msgstr "Ведение"
 
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -950,15 +960,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "Вы удачно заимпортировали книгу"
 
 msgid "Book imported successfully"
 msgstr "Вы удачно заимпортировали книгу"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Ошибка импорта файла: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Ошибка импорта файла: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Описание книги на Lektury.Gazeta.pl"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "на Lektury.Gazeta.pl"
+
 #~ msgid "Results by title"
 #~ msgstr "Результаты по заглавиям"
 
 #~ msgid "Results by title"
 #~ msgstr "Результаты по заглавиям"
 
index 703e234..328a397 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-15 10:27+0100\n"
+"POT-Creation-Date: 2018-02-26 13:13+0100\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"
 "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"
@@ -156,91 +156,99 @@ msgstr "Великий"
 msgid "Queue is full. Please try again later."
 msgstr ""
 
 msgid "Queue is full. Please try again later."
 msgstr ""
 
-#: models/book.py:49 models/collection.py:14
+#: models/book.py:55 models/collection.py:14
 msgid "title"
 msgstr "заголовок"
 
 msgid "title"
 msgstr "заголовок"
 
-#: models/book.py:50 models/tag.py:58
+#: models/book.py:56 models/tag.py:58
 msgid "sort key"
 msgstr "ключ сортування"
 
 msgid "sort key"
 msgstr "ключ сортування"
 
-#: models/book.py:52
+#: models/book.py:58
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Результати за авторами"
 
 #, fuzzy
 #| msgid "Results by authors"
 msgid "sort key by author"
 msgstr "Результати за авторами"
 
-#: models/book.py:53 models/book.py:54 models/collection.py:15
+#: models/book.py:59 models/book.py:60 models/collection.py:15
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
 #: models/collection.py:18 models/tag.py:57
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:55
+#: models/book.py:61
 msgid "language code"
 msgstr "мовний код"
 
 msgid "language code"
 msgstr "мовний код"
 
-#: models/book.py:56 models/book.py:224 models/collection.py:16
-#: models/tag.py:61 models/tag.py:183
+#: models/book.py:62 models/book.py:240 models/collection.py:16
+#: models/tag.py:61 models/tag.py:186
 msgid "description"
 msgstr "опис"
 
 msgid "description"
 msgstr "опис"
 
-#: models/book.py:57 models/bookmedia.py:36 models/tag.py:68 models/tag.py:69
+#: models/book.py:63 models/bookmedia.py:36 models/tag.py:71 models/tag.py:72
 msgid "creation date"
 msgstr "дата створення"
 
 msgid "creation date"
 msgstr "дата створення"
 
-#: models/book.py:58
+#: models/book.py:64
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "дата створення"
 
 #, fuzzy
 #| msgid "creation date"
 msgid "change date"
 msgstr "дата створення"
 
-#: models/book.py:59
+#: models/book.py:65
 msgid "parent number"
 msgstr "номер батька"
 
 msgid "parent number"
 msgstr "номер батька"
 
-#: models/book.py:60 models/bookmedia.py:37
+#: models/book.py:66 models/bookmedia.py:37
 msgid "extra information"
 msgstr "додаткова інформація"
 
 msgid "extra information"
 msgstr "додаткова інформація"
 
-#: models/book.py:63
+#: models/book.py:69
 msgid "print on demand"
 msgstr ""
 
 msgid "print on demand"
 msgstr ""
 
-#: models/book.py:64
+#: models/book.py:70
 msgid "recommended"
 msgstr ""
 
 msgid "recommended"
 msgstr ""
 
-#: models/book.py:68
+#: models/book.py:74
 msgid "cover"
 msgstr "обкладинка"
 
 msgid "cover"
 msgstr "обкладинка"
 
-#: models/book.py:74
+#: models/book.py:80
 msgid "cover thumbnail"
 msgstr ""
 
 msgid "cover thumbnail"
 msgstr ""
 
-#: models/book.py:102 models/collection.py:22
+#: models/book.py:85
+msgid "cover thumbnail for mobile app"
+msgstr ""
+
+#: models/book.py:90
+msgid "cover for mobile app"
+msgstr ""
+
+#: models/book.py:118 models/collection.py:22
 msgid "book"
 msgstr "книжка"
 
 msgid "book"
 msgstr "книжка"
 
-#: models/book.py:103
+#: models/book.py:119
 msgid "books"
 msgstr "книжки"
 
 msgid "books"
 msgstr "книжки"
 
-#: models/book.py:362
+#: models/book.py:378
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Книжка \"%s\" не існує."
 
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Книжка \"%s\" не існує."
 
-#: models/book.py:375
+#: models/book.py:391
 #, python-format
 msgid "Book %s already exists"
 msgstr "Книжка %s вже існує"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Книжка %s вже існує"
 
-#: models/book.py:633
+#: models/book.py:658
 msgid "This work needs modernisation"
 msgstr ""
 
 msgid "This work needs modernisation"
 msgstr ""
 
-#: models/book.py:680 models/bookmedia.py:29
+#: models/book.py:705 models/bookmedia.py:29
 #, python-format
 msgid "%s file"
 msgstr "файл %s"
 #, python-format
 msgid "%s file"
 msgstr "файл %s"
@@ -341,7 +349,7 @@ msgstr "вибір"
 msgid "thing"
 msgstr ""
 
 msgid "thing"
 msgstr ""
 
-#: models/tag.py:35 models/tag.py:93
+#: models/tag.py:35 models/tag.py:96
 msgid "tag"
 msgstr "теґ"
 
 msgid "tag"
 msgstr "теґ"
 
@@ -357,7 +365,7 @@ msgstr "ІД об'єкту"
 msgid "category"
 msgstr "категорія"
 
 msgid "category"
 msgstr "категорія"
 
-#: models/tag.py:94
+#: models/tag.py:97
 msgid "tags"
 msgstr "теґи"
 
 msgid "tags"
 msgstr "теґи"
 
@@ -409,14 +417,10 @@ msgid "Editor's Platform"
 msgstr "Платформа редагування"
 
 #: templates/catalogue/book_detail.html:71
 msgstr "Платформа редагування"
 
 #: templates/catalogue/book_detail.html:71
-msgid "Book description on Lektury.Gazeta.pl"
-msgstr "Опис книжки на Lektury.Gazeta.pl"
-
-#: templates/catalogue/book_detail.html:76
 msgid "Book description on Wikipedia"
 msgstr "Опис книжки на Вікіпедії"
 
 msgid "Book description on Wikipedia"
 msgstr "Опис книжки на Вікіпедії"
 
-#: templates/catalogue/book_detail.html:80
+#: templates/catalogue/book_detail.html:75
 msgid "Mix this book"
 msgstr "Міксувати цю книжку"
 
 msgid "Mix this book"
 msgstr "Міксувати цю книжку"
 
@@ -543,7 +547,7 @@ msgid "Print on demand –"
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
 msgstr ""
 
 #: templates/catalogue/book_short.html:104
-#: templates/catalogue/custom_pdf_form.html:19 views.py:599
+#: templates/catalogue/custom_pdf_form.html:19 views.py:369
 msgid "Download"
 msgstr "Завантажити"
 
 msgid "Download"
 msgstr "Завантажити"
 
@@ -657,7 +661,7 @@ msgstr[1] ""
 msgid "All collections"
 msgstr "колекції"
 
 msgid "All collections"
 msgstr "колекції"
 
-#: templates/catalogue/custom_pdf_form.html:6 views.py:598
+#: templates/catalogue/custom_pdf_form.html:6 views.py:368
 msgid "Download custom PDF"
 msgstr "Завантажити настроюваний PDF"
 
 msgid "Download custom PDF"
 msgstr "Завантажити настроюваний PDF"
 
@@ -713,11 +717,11 @@ msgstr "Джерело графіки"
 msgid "Image on the Editor's Platform"
 msgstr "Графіка на редакторській платформі"
 
 msgid "Image on the Editor's Platform"
 msgstr "Графіка на редакторській платформі"
 
-#: templates/catalogue/picture_detail.html:82
+#: templates/catalogue/picture_detail.html:73
 msgid "View XML source"
 msgstr "Дивитись джерело XML"
 
 msgid "View XML source"
 msgstr "Дивитись джерело XML"
 
-#: templates/catalogue/picture_detail.html:85
+#: templates/catalogue/picture_detail.html:76
 msgid "Work's themes "
 msgstr "Теми у творі"
 
 msgid "Work's themes "
 msgstr "Теми у творі"
 
@@ -798,6 +802,16 @@ msgstr "Пошук"
 msgid "Did you mean"
 msgstr "Ви мали на увазі"
 
 msgid "Did you mean"
 msgstr "Ви мали на увазі"
 
+#: templates/catalogue/search_multiple_hits.html:31
+#, fuzzy
+#| msgid "books"
+msgid "Books"
+msgstr "книжки"
+
+#: templates/catalogue/search_multiple_hits.html:42
+msgid "Pictures"
+msgstr ""
+
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
 #: templates/catalogue/search_no_hits.html:20
 #: templates/catalogue/tagged_object_list.html:85
 msgid "Sorry! Search cirteria did not match any resources."
@@ -915,15 +929,11 @@ msgstr "Мотиви та теми"
 msgid "No description."
 msgstr "опис"
 
 msgid "No description."
 msgstr "опис"
 
-#: templates/catalogue/tagged_object_list.html:109
-msgid "in Lektury.Gazeta.pl"
-msgstr "на Lektury.Gazeta.pl"
-
-#: templates/catalogue/tagged_object_list.html:115
+#: templates/catalogue/tagged_object_list.html:110
 msgid "in Wikipedia"
 msgstr "на Вікіпедії"
 
 msgid "in Wikipedia"
 msgstr "на Вікіпедії"
 
-#: templates/catalogue/tagged_object_list.html:121
+#: templates/catalogue/tagged_object_list.html:116
 msgid "in Culture.pl"
 msgstr ""
 
 msgid "in Culture.pl"
 msgstr ""
 
@@ -933,7 +943,7 @@ msgstr ""
 msgid "Loading"
 msgstr "Leading"
 
 msgid "Loading"
 msgstr "Leading"
 
-#: views.py:564
+#: views.py:334
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -944,15 +954,21 @@ msgstr ""
 "\n"
 "%(tb)s"
 
 "\n"
 "%(tb)s"
 
-#: views.py:566
+#: views.py:336
 msgid "Book imported successfully"
 msgstr "Книжку успішно завантажено"
 
 msgid "Book imported successfully"
 msgstr "Книжку успішно завантажено"
 
-#: views.py:568
+#: views.py:338
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Помилка в завантаженні файла: %r"
 
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Помилка в завантаженні файла: %r"
 
+#~ msgid "Book description on Lektury.Gazeta.pl"
+#~ msgstr "Опис книжки на Lektury.Gazeta.pl"
+
+#~ msgid "in Lektury.Gazeta.pl"
+#~ msgstr "на Lektury.Gazeta.pl"
+
 #~ msgid "Results by title"
 #~ msgstr "Результати за заголовком"
 
 #~ msgid "Results by title"
 #~ msgstr "Результати за заголовком"
 
index 2c3c139..b14ab0c 100644 (file)
   </div>
 
   <div>
   </div>
 
   <div>
-    <ul class="work-list">
-      {% for result in results %}
-        <li class="Book-item">
-          <div class="search-result">
-            {% book_searched result %}
-          </div>
-        </li>
-      {% endfor %}
-    </ul>
+    {% if books %}
+      <ul class="work-list">
+        {% if pictures %}
+          <h1>{% trans "Books" %}</h1>
+        {% endif %}
+        {% for result in books %}
+          <li class="Book-item">
+            <div class="search-result">
+              {% book_searched result %}
+            </div>
+          </li>
+        {% endfor %}
+      </ul>
+    {% endif %}
+
+    {% if pictures %}
+      <h1>{% trans "Pictures" %}</h1>
+      <ul class="work-list">
+        {% for result in pictures %}
+          <li class="Picture-item">
+            <div class="search-result">
+              {% with result.picture as picture %}
+                {% include "picture/picture_searched.html" %}
+              {% endwith %}
+            </div>
+          </li>
+        {% endfor %}
+      </ul>
+    {% endif %}
   </div>
 {% endblock %}
   </div>
 {% endblock %}
index 47af34e..455ed10 100644 (file)
@@ -166,7 +166,7 @@ class Picture(models.Model):
             return None
 
     @classmethod
             return None
 
     @classmethod
-    def from_xml_file(cls, xml_file, image_file=None, image_store=None, overwrite=False):
+    def from_xml_file(cls, xml_file, image_file=None, image_store=None, overwrite=False, search_index=True):
         """
         Import xml and it's accompanying image file.
         If image file is missing, it will be fetched by librarian.picture.ImageStore
         """
         Import xml and it's accompanying image file.
         If image file is missing, it will be fetched by librarian.picture.ImageStore
@@ -291,6 +291,8 @@ class Picture(models.Model):
             picture.xml_file.save("%s.xml" % picture.slug, File(xml_file))
             picture.save()
             tasks.generate_picture_html(picture.id)
             picture.xml_file.save("%s.xml" % picture.slug, File(xml_file))
             picture.save()
             tasks.generate_picture_html(picture.id)
+            if not settings.NO_SEARCH_INDEX and search_index:
+                tasks.index_picture.delay(picture.id, picture_info=picture_xml.picture_info)
 
         if close_xml_file:
             xml_file.close()
 
         if close_xml_file:
             xml_file.close()
@@ -387,3 +389,17 @@ class Picture(models.Model):
                 ]
             for lang in languages
             ])
                 ]
             for lang in languages
             ])
+
+    def search_index(self, picture_info=None, index=None, index_tags=True, commit=True):
+        if index is None:
+            from search.index import Index
+            index = Index()
+        try:
+            index.index_picture(self, picture_info)
+            if index_tags:
+                index.index_tags()
+            if commit:
+                index.index.commit()
+        except Exception, e:
+            index.index.rollback()
+            raise e
index 1958d28..cae7db7 100644 (file)
@@ -2,6 +2,8 @@
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
+from traceback import print_exc
+
 from celery.task import task
 from django.core.files.base import ContentFile
 from django.template.loader import render_to_string
 from celery.task import task
 from django.core.files.base import ContentFile
 from django.template.loader import render_to_string
@@ -17,3 +19,14 @@ def generate_picture_html(picture_id):
                 'themes': pic.areas_json['themes'],
                 }))
     pic.html_file.save("%s.html" % pic.slug, ContentFile(html_text))
                 'themes': pic.areas_json['themes'],
                 }))
     pic.html_file.save("%s.html" % pic.slug, ContentFile(html_text))
+
+
+@task
+def index_picture(picture_id, picture_info=None, **kwargs):
+    from picture.models import Picture
+    try:
+        return Picture.objects.get(id=picture_id).search_index(picture_info, **kwargs)
+    except Exception, e:
+        print "Exception during index: %s" % e
+        print_exc()
+        raise e
diff --git a/src/picture/templates/picture/picture_searched.html b/src/picture/templates/picture/picture_searched.html
new file mode 100644 (file)
index 0000000..fb278be
--- /dev/null
@@ -0,0 +1,17 @@
+{% extends "picture/picture_short.html" %}
+{% load picture_tags %}
+
+{% block right-column %}
+  <div class="picture-right-column">
+    {% for hit in result.hits %}
+      <div class="area-hit">
+        <p>{{ hit.themes|join:", " }}</p>
+        {% if hit.area %}
+          <a href="{% url 'picture_viewer' hit.area.picture.slug %}">
+            <img src="{% area_thumbnail_url hit.area "100x100" %}"/>
+          </a>
+        {% endif %}
+      </div>
+    {% endfor %}
+  </div>
+{% endblock %}
index a065d4b..43f54ac 100644 (file)
@@ -5,77 +5,79 @@
 
 <div class="{% block box-class %}book-box{% endblock %} picture">
   <div class="book-box-inner">
 
 <div class="{% block box-class %}book-box{% endblock %} picture">
   <div class="book-box-inner">
-    <div class="book-box-body">
-      {% with picture.get_absolute_url as main_link %}
-      {% with picture.tags_by_category as tags %}
-        <div class="book-box-head">
-            <div class="author">
-                {% for tag in tags.author %}
-                    <a href="{{ tag.get_absolute_gallery_url }}">{{ tag }}</a>{% if not forloop.last %},
-                {% endif %}{% endfor %}
-            </div>
-            <div class="title">
-                {% if main_link %}<a href="{{ main_link }}">{% endif %}
-                    {{ picture.title }}
-                {% if main_link %}</a>{% endif %}
-            </div>
-        </div>
+    <div class="picture-left-column">
+      <div class="book-box-body">
+        {% with picture.get_absolute_url as main_link %}
+        {% with picture.tags_by_category as tags %}
+          <div class="book-box-head">
+              <div class="author">
+                  {% for tag in tags.author %}
+                      <a href="{{ tag.get_absolute_gallery_url }}">{{ tag }}</a>{% if not forloop.last %},
+                  {% endif %}{% endfor %}
+              </div>
+              <div class="title">
+                  {% if main_link %}<a href="{{ main_link }}">{% endif %}
+                      {{ picture.title }}
+                  {% if main_link %}</a>{% endif %}
+              </div>
+          </div>
 
 
-        <div class="cover-area">
-          {% block picture-view %}
-          {% if main_link %}<a href="{{ main_link }}">{% endif %}
-            {% thumbnail picture.image_file "216x288" crop="center" as thumb %}
-            <img class="cover" src="{{thumb.url}}"/>
-            {% endthumbnail %}
-          {% if main_link %}</a>{% endif %}
-          {% endblock %}
-           {# what about licensing icons here #}
-        </div>
+          <div class="cover-area">
+            {% block picture-view %}
+            {% if main_link %}<a href="{{ main_link }}">{% endif %}
+              {% thumbnail picture.image_file "216x288" crop="center" as thumb %}
+              <img class="cover" src="{{thumb.url}}"/>
+              {% endthumbnail %}
+            {% if main_link %}</a>{% endif %}
+            {% endblock %}
+             {# what about licensing icons here #}
+          </div>
 
 
-        <div class="tags">
-          {% spaceless %}
-            <span class="category">
-              <span class="mono"> {% trans "Epoch" %}:</span>&nbsp;<span class="book-box-tag">
-                {% for tag in tags.epoch %}
-                  <a href="{{ tag.get_absolute_gallery_url }}">{{ tag }}</a>
-                  {% if not forloop.last %}<span>, </span>{% endif %}
-                {% endfor %}
+          <div class="tags">
+            {% spaceless %}
+              <span class="category">
+                <span class="mono"> {% trans "Epoch" %}:</span>&nbsp;<span class="book-box-tag">
+                  {% for tag in tags.epoch %}
+                    <a href="{{ tag.get_absolute_gallery_url }}">{{ tag }}</a>
+                    {% if not forloop.last %}<span>, </span>{% endif %}
+                  {% endfor %}
+                </span>
               </span>
               </span>
-            </span>
 
 
-            <span class="category">
-              <span class="mono"> {% trans "Kind" %}:</span>&nbsp;<span class="book-box-tag">
-                {% for tag in tags.kind %}
-                  <a href="{{ tag.get_absolute_gallery_url }}">{{ tag }}</a>
-                  {% if not forloop.last %}<span>, </span>{% endif %}
-                {% endfor %}
+              <span class="category">
+                <span class="mono"> {% trans "Kind" %}:</span>&nbsp;<span class="book-box-tag">
+                  {% for tag in tags.kind %}
+                    <a href="{{ tag.get_absolute_gallery_url }}">{{ tag }}</a>
+                    {% if not forloop.last %}<span>, </span>{% endif %}
+                  {% endfor %}
+                </span>
               </span>
               </span>
-            </span>
 
 
-            <span class="category">
-              <span class="mono"> {% trans "Genre" %}:</span>&nbsp;<span class="book-box-tag">
-                {% for tag in tags.genre %}
-                  <a href="{{ tag.get_absolute_gallery_url }}">{{ tag }}</a>
-                  {% if not forloop.last %}<span>, </span>{% endif %}
-                {% endfor %}
+              <span class="category">
+                <span class="mono"> {% trans "Genre" %}:</span>&nbsp;<span class="book-box-tag">
+                  {% for tag in tags.genre %}
+                    <a href="{{ tag.get_absolute_gallery_url }}">{{ tag }}</a>
+                    {% if not forloop.last %}<span>, </span>{% endif %}
+                  {% endfor %}
+                </span>
               </span>
               </span>
-            </span>
 
 
-            {% block extra_categories %}
-            {% endblock %}
-          {% endspaceless %}
-        </div>
-      {% endwith %}
-      {% endwith %}
+              {% block extra_categories %}
+              {% endblock %}
+            {% endspaceless %}
+          </div>
+        {% endwith %}
+        {% endwith %}
+      </div>
+      <ul class="book-box-tools">
+        <li class="book-box-read">
+          <a href="{% url 'picture_viewer' picture.slug %}" class="downarrow">{% trans "View online" %}</a>
+        </li>
+        <li class="book-box-download">
+          <a href="{{picture.image_file.url}}" class="downarrow">{% trans "download original" %}</a>
+        </li>
+      </ul>
     </div>
     </div>
-    <ul class="book-box-tools">
-      <li class="book-box-read">
-        <a href="{% url 'picture_viewer' picture.slug %}" class="downarrow">{% trans "View online" %}</a>
-      </li>
-      <li class="book-box-download">
-        <a href="{{picture.image_file.url}}" class="downarrow">{% trans "download original" %}</a>
-      </li>
-    </ul>
     {% block book-box-extra-info %}{% endblock %}
     {% block box-append %}{% endblock %}
     {% block right-column %}{% endblock %}
     {% block book-box-extra-info %}{% endblock %}
     {% block box-append %}{% endblock %}
     {% block right-column %}{% endblock %}
index b94d8f6..a1c2716 100644 (file)
@@ -10,6 +10,7 @@ from librarian import dcparser
 from librarian.parser import WLDocument
 from lxml import etree
 import catalogue.models
 from librarian.parser import WLDocument
 from lxml import etree
 import catalogue.models
+import picture.models
 from pdcounter.models import Author as PDCounterAuthor, BookStub as PDCounterBook
 from itertools import chain
 import sunburnt
 from pdcounter.models import Author as PDCounterAuthor, BookStub as PDCounterBook
 from itertools import chain
 import sunburnt
@@ -514,6 +515,47 @@ class Index(SolrIndex):
         finally:
             snippets.close()
 
         finally:
             snippets.close()
 
+    def remove_picture(self, picture_or_id):
+        """Removes a picture from search index."""
+        if isinstance(picture_or_id, picture.models.Picture):
+            picture_id = picture_or_id.id
+        else:
+            picture_id = picture_or_id
+        self.delete_query(self.index.Q(picture_id=picture_id))
+
+    def index_picture(self, picture, picture_info=None, overwrite=True):
+        """
+        Indexes the picture.
+        Creates a lucene document for extracted metadata
+        and calls self.index_area() to index the contents of the picture.
+        """
+        if overwrite:
+            # we don't remove snippets, since they might be still needed by
+            # threads using not reopened index
+            self.remove_picture(picture)
+
+        picture_doc = {'picture_id': int(picture.id)}
+        meta_fields = self.extract_metadata(picture, picture_info, dc_only=[
+            'authors', 'title', 'epochs', 'kinds', 'genres'])
+
+        picture_doc.update(meta_fields)
+
+        picture_doc['uid'] = "picture%s" % picture_doc['picture_id']
+        self.index.add(picture_doc)
+        del picture_doc['is_book']
+        for area in picture.areas.all():
+            self.index_area(area, picture_fields=picture_doc)
+
+    def index_area(self, area, picture_fields):
+        """
+        Indexes themes and objects on the area.
+        """
+        doc = dict(picture_fields)
+        doc['area_id'] = area.id
+        doc['themes'] = list(area.tags.filter(category__in=('theme', 'thing')).values_list('name', flat=True))
+        doc['uid'] = 'area%s' % area.id
+        self.index.add(doc)
+
 
 class SearchResult(object):
     def __init__(self, doc, how_found=None, query_terms=None):
 
 class SearchResult(object):
     def __init__(self, doc, how_found=None, query_terms=None):
@@ -724,6 +766,110 @@ class SearchResult(object):
             return None
 
 
             return None
 
 
+class PictureResult(object):
+    def __init__(self, doc, how_found=None, query_terms=None):
+        self.boost = 1.0
+        self.query_terms = query_terms
+        self._picture = None
+        self._hits = []
+        self._processed_hits = None
+
+        if 'score' in doc:
+            self._score = doc['score']
+        else:
+            self._score = 0
+
+        self.picture_id = int(doc["picture_id"])
+
+        if doc.get('area_id'):
+            hit = (self._score, {
+                'how_found': how_found,
+                'area_id': doc['area_id'],
+                'themes': doc.get('themes', []),
+                'themes_pl': doc.get('themes_pl', []),
+            })
+
+            self._hits.append(hit)
+
+    def __unicode__(self):
+        return u"<PR id=%d score=%f >" % (self.picture_id, self._score)
+
+    def __repr__(self):
+        return unicode(self)
+
+    @property
+    def score(self):
+        return self._score * self.boost
+
+    def merge(self, other):
+        if self.picture_id != other.picture_id:
+            raise ValueError(
+                "this search result is for picture %d; tried to merge with %d" % (self.picture_id, other.picture_id))
+        self._hits += other._hits
+        self._score += max(other._score, 0)
+        return self
+
+    SCORE = 0
+    OTHER = 1
+
+    @property
+    def hits(self):
+        if self._processed_hits is not None:
+            return self._processed_hits
+
+        hits = []
+        for hit in self._hits:
+            try:
+                area = picture.models.PictureArea.objects.get(id=hit[self.OTHER]['area_id'])
+            except picture.models.PictureArea.DoesNotExist:
+                # stale index
+                continue
+            # Figure out if we were searching for a token matching some word in theme name.
+            themes_hit = set()
+            if self.query_terms is not None:
+                for i in range(0, len(hit[self.OTHER]['themes'])):
+                    tms = hit[self.OTHER]['themes'][i].split(r' +') + hit[self.OTHER]['themes_pl'][i].split(' ')
+                    tms = map(unicode.lower, tms)
+                    for qt in self.query_terms:
+                        if qt in tms:
+                            themes_hit.add(hit[self.OTHER]['themes'][i])
+                            break
+
+            m = {
+                'score': hit[self.SCORE],
+                'area': area,
+                'themes_hit': themes_hit,
+            }
+            m.update(hit[self.OTHER])
+            hits.append(m)
+
+        hits.sort(key=lambda h: h['score'], reverse=True)
+        hits = hits[:1]
+        self._processed_hits = hits
+        return hits
+
+    def get_picture(self):
+        if self._picture is None:
+            self._picture = picture.models.Picture.objects.get(id=self.picture_id)
+        return self._picture
+
+    picture = property(get_picture)
+
+    @staticmethod
+    def aggregate(*result_lists):
+        books = {}
+        for rl in result_lists:
+            for r in rl:
+                if r.picture_id in books:
+                    books[r.picture_id].merge(r)
+                else:
+                    books[r.picture_id] = r
+        return books.values()
+
+    def __cmp__(self, other):
+        return cmp(self.score, other.score)
+
+
 class Search(SolrIndex):
     """
     Search facilities.
 class Search(SolrIndex):
     """
     Search facilities.
@@ -751,12 +897,12 @@ class Search(SolrIndex):
             books = books.filter(cached_author__iregex='\m%s\M' % word).select_related('popularity__count')
         return [SearchResult.from_book(book, how_found='search_by_author', query_terms=words) for book in books[:30]]
 
             books = books.filter(cached_author__iregex='\m%s\M' % word).select_related('popularity__count')
         return [SearchResult.from_book(book, how_found='search_by_author', query_terms=words) for book in books[:30]]
 
-    def search_words(self, words, fields, book=True):
-        if book and fields == ['authors']:
+    def search_words(self, words, fields, required=None, book=True, picture=False):
+        if book and not picture and fields == ['authors']:
             return self.search_by_author(words)
         filters = []
         for word in words:
             return self.search_by_author(words)
         filters = []
         for word in words:
-            if book or (word not in stopwords):
+            if book or picture or (word not in stopwords):
                 word_filter = None
                 for field in fields:
                     q = self.index.Q(**{field: word})
                 word_filter = None
                 for field in fields:
                     q = self.index.Q(**{field: word})
@@ -765,14 +911,30 @@ class Search(SolrIndex):
                     else:
                         word_filter |= q
                 filters.append(word_filter)
                     else:
                         word_filter |= q
                 filters.append(word_filter)
+        if required:
+            required_filter = None
+            for field in required:
+                for word in words:
+                    if book or picture or (word not in stopwords):
+                        q = self.index.Q(**{field: word})
+                        if required_filter is None:
+                            required_filter = q
+                        else:
+                            required_filter |= q
+            filters.append(required_filter)
         if not filters:
             return []
         if not filters:
             return []
+        params = {}
         if book:
         if book:
-            query = self.index.query(is_book=True)
+            params['is_book'] = True
+        if picture:
+            params['picture_id__gt'] = 0
         else:
         else:
-            query = self.index.query()
+            params['book_id__gt'] = 0
+        query = self.index.query(**params)
         query = self.apply_filters(query, filters).field_limit(score=True, all_fields=True)
         query = self.apply_filters(query, filters).field_limit(score=True, all_fields=True)
-        return [SearchResult(found, how_found='search_words', query_terms=words) for found in query.execute()]
+        result_class = PictureResult if picture else SearchResult
+        return [result_class(found, how_found='search_words', query_terms=words) for found in query.execute()]
 
     def get_snippets(self, searchresult, query, field='text', num=1):
         """
 
     def get_snippets(self, searchresult, query, field='text', num=1):
         """
diff --git a/src/search/management/commands/reindex_pictures.py b/src/search/management/commands/reindex_pictures.py
new file mode 100644 (file)
index 0000000..bb6b50f
--- /dev/null
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+import sys
+import traceback
+
+from django.core.management.base import BaseCommand
+
+from optparse import make_option
+
+
+def query_yes_no(question, default="yes"):
+    """Ask a yes/no question via raw_input() and return their answer.
+
+    "question" is a string that is presented to the user.
+    "default" is the presumed answer if the user just hits <Enter>.
+        It must be "yes" (the default), "no" or None (meaning
+        an answer is required of the user).
+
+    The "answer" return value is one of "yes" or "no".
+    """
+    valid = {"yes": True, "y": True, "ye": True,
+             "no": False, "n": False}
+    if default is None:
+        prompt = " [y/n] "
+    elif default == "yes":
+        prompt = " [Y/n] "
+    elif default == "no":
+        prompt = " [y/N] "
+    else:
+        raise ValueError("invalid default answer: '%s'" % default)
+
+    while True:
+        sys.stdout.write(question + prompt)
+        choice = raw_input().lower()
+        if default is not None and choice == '':
+            return valid[default]
+        elif choice in valid:
+            return valid[choice]
+        else:
+            sys.stdout.write("Please respond with 'yes' or 'no' (or 'y' or 'n').\n")
+
+
+class Command(BaseCommand):
+    help = 'Reindex pictures.'
+    args = ''
+
+    option_list = BaseCommand.option_list + (
+        make_option('-n', '--picture-id', action='store_true', dest='picture_id', default=False,
+                    help='picture id instead of slugs'),
+    )
+
+    def handle(self, *args, **opts):
+        from picture.models import Picture
+        from search.index import Index
+        idx = Index()
+
+        if args:
+            pictures = []
+            for a in args:
+                if opts['picture_id']:
+                    pictures += Picture.objects.filter(id=int(a)).all()
+                else:
+                    pictures += Picture.objects.filter(slug=a).all()
+        else:
+            pictures = list(Picture.objects.order_by('slug'))
+        while pictures:
+            try:
+                p = pictures[0]
+                print p.slug
+                idx.index_picture(p)
+                idx.index.commit()
+                pictures.pop(0)
+            except:
+                traceback.print_exc()
+                try:
+                    # we might not be able to rollback
+                    idx.index.rollback()
+                except:
+                    pass
+                retry = query_yes_no("Retry?")
+                if not retry:
+                    break
index da5a85b..d0cbb5c 100644 (file)
@@ -2,26 +2,14 @@
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
-# import feedparser
-# import datetime
-
 from django import template
 from django import template
-# from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
-# from django.db.models import Q
-# from django.utils.translation import ugettext as _
-from catalogue.models import Book
 import re
 import re
-# from catalogue.forms import SearchForm
-# from catalogue.utils import split_tags
-
 
 register = template.Library()
 
 
 @register.inclusion_tag('catalogue/book_searched.html', takes_context=True)
 def book_searched(context, result):
 
 register = template.Library()
 
 
 @register.inclusion_tag('catalogue/book_searched.html', takes_context=True)
 def book_searched(context, result):
-    book = Book.objects.get(pk=result.book_id)
-
     # We don't need hits which lead to sections but do not have
     # snippets.
     hits = filter(lambda (idx, h):
     # We don't need hits which lead to sections but do not have
     # snippets.
     hits = filter(lambda (idx, h):
@@ -45,6 +33,6 @@ def book_searched(context, result):
 
     return {
         'request': context['request'],
 
     return {
         'request': context['request'],
-        'book': book,
+        'book': result.book,
         'hits':  zip(*hits)[1] if hits else []
     }
         'hits':  zip(*hits)[1] if hits else []
     }
index f7f6040..6cb6bc5 100644 (file)
@@ -11,7 +11,8 @@ from django.http import HttpResponse, JsonResponse
 
 from catalogue.models import Book, Tag
 from pdcounter.models import Author
 
 from catalogue.models import Book, Tag
 from pdcounter.models import Author
-from search.index import Search, SearchResult
+from picture.models import Picture
+from search.index import Search, SearchResult, PictureResult
 from suggest.forms import PublishingSuggestForm
 import re
 import json
 from suggest.forms import PublishingSuggestForm
 import re
 import json
@@ -106,11 +107,6 @@ def hint(request):
 @cache.never_cache
 def main(request):
     query = request.GET.get('q', '')
 @cache.never_cache
 def main(request):
     query = request.GET.get('q', '')
-    query = ' '.join(query.split())
-    # filter out private use characters
-    import unicodedata
-    query = ''.join(ch for ch in query if unicodedata.category(ch) != 'Co')
-
     if len(query) < 2:
         return render_to_response(
             'catalogue/search_too_short.html', {'prefix': query},
     if len(query) < 2:
         return render_to_response(
             'catalogue/search_too_short.html', {'prefix': query},
@@ -119,23 +115,41 @@ def main(request):
         return render_to_response(
             'catalogue/search_too_long.html', {'prefix': query}, context_instance=RequestContext(request))
 
         return render_to_response(
             'catalogue/search_too_long.html', {'prefix': query}, context_instance=RequestContext(request))
 
-    query = remove_query_syntax_chars(query)
+    query = prepare_query(query)
+    pd_authors = search_pd_authors(query)
+    books = search_books(query)
+    pictures = search_pictures(query)
+    suggestion = u''
 
 
-    words = query.split()
-    if len(words) > 10:
-        query = ' '.join(words[:10])
+    if not (books or pictures or pd_authors):
+        form = PublishingSuggestForm(initial={"books": query + ", "})
+        return render_to_response(
+            'catalogue/search_no_hits.html',
+            {
+                'form': form,
+                'did_you_mean': suggestion
+            },
+            context_instance=RequestContext(request))
 
 
-    search = Search()
+    if not (books or pictures) and len(pd_authors) == 1:
+        return HttpResponseRedirect(pd_authors[0].get_absolute_url())
 
 
-    pd_authors = Author.objects.filter(name__icontains=query)
-    existing_slugs = Tag.objects.filter(
-        category='author', slug__in=list(pd_authors.values_list('slug', flat=True)))\
-        .values_list('slug', flat=True)
-    pd_authors = pd_authors.exclude(slug__in=existing_slugs)
+    return render_to_response(
+        'catalogue/search_multiple_hits.html',
+        {
+            'pd_authors': pd_authors,
+            'books': books,
+            'pictures': pictures,
+            'did_you_mean': suggestion
+        },
+        context_instance=RequestContext(request))
 
 
-    results_parts = []
 
 
+def search_books(query):
+    search = Search()
+    results_parts = []
     search_fields = []
     search_fields = []
+    words = query.split()
     fieldsets = (
         (['authors'], True),
         (['title'], True),
     fieldsets = (
         (['authors'], True),
         (['title'], True),
@@ -144,8 +158,7 @@ def main(request):
     )
     for fields, is_book in fieldsets:
         search_fields += fields
     )
     for fields, is_book in fieldsets:
         search_fields += fields
-        results_parts.append(search.search_words(words, search_fields, book=is_book))
-
+        results_parts.append(search.search_words(words, search_fields, required=fields, book=is_book))
     results = []
     ids_results = {}
     for results_part in results_parts:
     results = []
     ids_results = {}
     for results_part in results_parts:
@@ -156,16 +169,12 @@ def main(request):
             else:
                 results.append(result)
                 ids_results[book_id] = result
             else:
                 results.append(result)
                 ids_results[book_id] = result
-
     descendant_ids = set(
         Book.objects.filter(id__in=ids_results, ancestor__in=ids_results).values_list('id', flat=True))
     results = [result for result in results if result.book_id not in descendant_ids]
     descendant_ids = set(
         Book.objects.filter(id__in=ids_results, ancestor__in=ids_results).values_list('id', flat=True))
     results = [result for result in results if result.book_id not in descendant_ids]
-
     for result in results:
         search.get_snippets(result, query, num=3)
 
     for result in results:
         search.get_snippets(result, query, num=3)
 
-    suggestion = u''
-
     def ensure_exists(r):
         try:
             return r.book
     def ensure_exists(r):
         try:
             return r.book
@@ -173,25 +182,61 @@ def main(request):
             return False
 
     results = filter(ensure_exists, results)
             return False
 
     results = filter(ensure_exists, results)
+    return results
 
 
-    if not results and not pd_authors:
-        form = PublishingSuggestForm(initial={"books": query + ", "})
-        return render_to_response(
-            'catalogue/search_no_hits.html',
-            {
-                'form': form,
-                'did_you_mean': suggestion
-            },
-            context_instance=RequestContext(request))
 
 
-    if not results and len(pd_authors) == 1:
-        return HttpResponseRedirect(pd_authors[0].get_absolute_url())
+def search_pictures(query):
+    search = Search()
+    results_parts = []
+    search_fields = []
+    words = query.split()
+    fieldsets = (
+        (['authors'], True),
+        (['title'], True),
+        (['metadata'], True),
+        (['themes_pl'], False),
+    )
+    for fields, is_book in fieldsets:
+        search_fields += fields
+        results_parts.append(search.search_words(words, search_fields, required=fields, book=is_book, picture=True))
+    results = []
+    ids_results = {}
+    for results_part in results_parts:
+        for result in sorted(PictureResult.aggregate(results_part), reverse=True):
+            picture_id = result.picture_id
+            if picture_id in ids_results:
+                ids_results[picture_id].merge(result)
+            else:
+                results.append(result)
+                ids_results[picture_id] = result
 
 
-    return render_to_response(
-        'catalogue/search_multiple_hits.html',
-        {
-            'pd_authors': pd_authors,
-            'results': results,
-            'did_you_mean': suggestion
-        },
-        context_instance=RequestContext(request))
+    def ensure_exists(r):
+        try:
+            return r.picture
+        except Picture.DoesNotExist:
+            return False
+
+    results = filter(ensure_exists, results)
+    return results
+
+
+def search_pd_authors(query):
+    pd_authors = Author.objects.filter(name__icontains=query)
+    existing_slugs = Tag.objects.filter(
+        category='author', slug__in=list(pd_authors.values_list('slug', flat=True))) \
+        .values_list('slug', flat=True)
+    pd_authors = pd_authors.exclude(slug__in=existing_slugs)
+    return pd_authors
+
+
+def prepare_query(query):
+    query = ' '.join(query.split())
+    # filter out private use characters
+    import unicodedata
+    query = ''.join(ch for ch in query if unicodedata.category(ch) != 'Co')
+    query = remove_query_syntax_chars(query)
+
+    words = query.split()
+    if len(words) > 10:
+        query = ' '.join(words[:10])
+    return query
index ad151d8..5e14505 100755 (executable)
 }
 
 
 }
 
 
+.search-result {
+    @media screen and (min-width: 62.5em) {
+        .picture-left-column {
+            display: inline-block;
+            @include size(width, 800px);
+        }
+        .picture-right-column {
+            display: inline-block;
+            @include size(padding-top, 15px);
+            @include size(width, 150px);
+        }
+    }
+
+    .area-hit {
+        @include size(font-size, 16px);
+        @include size(margin, 13px 0);
+        @include size(padding-left, 20px);
+        @include size(padding-right, 20px);
+        @include size(padding-top, 1px);
+        @include size(padding-bottom, 20px);
+        background: #f7f7f7;
+    }
+}
+
+
 .search-hint-label {
     display: inline-block;
     @include size(font-size, 16px);
 .search-hint-label {
     display: inline-block;
     @include size(font-size, 16px);