add collection for Boy
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Tue, 10 Jan 2012 15:22:05 +0000 (16:22 +0100)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Tue, 10 Jan 2012 15:22:05 +0000 (16:22 +0100)
12 files changed:
apps/catalogue/admin.py
apps/catalogue/fixtures/collection-boy.json [new file with mode: 0644]
apps/catalogue/locale/pl/LC_MESSAGES/django.mo
apps/catalogue/locale/pl/LC_MESSAGES/django.po
apps/catalogue/migrations/0017_auto__add_collection.py [new file with mode: 0644]
apps/catalogue/models.py
apps/catalogue/urls.py
apps/catalogue/views.py
wolnelektury/locale/pl/LC_MESSAGES/django.mo
wolnelektury/locale/pl/LC_MESSAGES/django.po
wolnelektury/templates/catalogue/collection.html [new file with mode: 0755]
wolnelektury/templates/catalogue/main_page.html

index 88c985f..61db42f 100644 (file)
@@ -6,7 +6,7 @@ from django.contrib import admin
 from django import forms
 
 from newtagging.admin import TaggableModelAdmin, TaggableModelForm
-from catalogue.models import Tag, Book, Fragment, BookMedia
+from catalogue.models import Tag, Book, Fragment, BookMedia, Collection
 
 
 class TagAdmin(admin.ModelAdmin):
@@ -54,6 +54,11 @@ class FragmentAdmin(TaggableModelAdmin):
     ordering = ('book', 'anchor',)
 
 
+class CollectionAdmin(admin.ModelAdmin):
+    prepopulated_fields = {'slug': ('title',)}
+
+
 admin.site.register(Tag, TagAdmin)
 admin.site.register(Book, BookAdmin)
 admin.site.register(Fragment, FragmentAdmin)
+admin.site.register(Collection, CollectionAdmin)
diff --git a/apps/catalogue/fixtures/collection-boy.json b/apps/catalogue/fixtures/collection-boy.json
new file mode 100644 (file)
index 0000000..9a0e778
--- /dev/null
@@ -0,0 +1,19 @@
+[
+    {
+        "pk": "promo",
+        "model": "chunks.chunk",
+        "fields": {
+            "content": "<h2>Biblioteczka Boya</h2>\r\n\r\n<p>T\u0142umaczenia literatury francuskiej i nie tylko.</p>\r\n\r\n<p class=\"see-more\"><a href=\"/katalog/lektury/boy/\" >Biblioteczka Boya \u21d2</a></p>",
+            "description": "boks promocyjny na g\u0142\u00f3wnej"
+        }
+    },
+    {
+        "pk": "boy",
+        "model": "catalogue.collection",
+        "fields": {
+            "book_slugs": "http://www.wolnelektury.pl/katalog/lektura/piesn-o-rolandzie/\nhttp://www.wolnelektury.pl/katalog/lektura/wielki-testament/\nhttp://www.wolnelektury.pl/katalog/lektura/skapiec/\nhttp://www.wolnelektury.pl/katalog/lektura/mieszczanin-szlachcicem/\nhttp://www.wolnelektury.pl/katalog/lektura/kandyd/\nhttp://www.wolnelektury.pl/katalog/lektura/rozprawa-o-metodzie/\nhttp://www.wolnelektury.pl/katalog/lektura/listy-perskie/\nhttp://www.wolnelektury.pl/katalog/lektura/spowiedz-dzieciecia-wieku/\nhttp://www.wolnelektury.pl/katalog/lektura/ubu-krol/\nhttp://www.wolnelektury.pl/katalog/lektura/legenda-o-tristanie-i-izoldzie/\nhttp://www.wolnelektury.pl/katalog/lektura/boy-swietoszek/\nhttp://www.wolnelektury.pl/katalog/lektura/mizantrop/\nhttp://www.wolnelektury.pl/katalog/lektura/kubus-fatalista-i-jego-pan/\nhttp://www.wolnelektury.pl/katalog/lektura/mysli/\nhttp://www.wolnelektury.pl/katalog/lektura/o-duchu-praw/\nhttp://www.wolnelektury.pl/katalog/lektura/proby/\nhttp://www.wolnelektury.pl/katalog/lektura/w-strone-swanna/\nhttp://www.wolnelektury.pl/katalog/lektura/gargantua-i-pantagruel/",
+            "description": "",
+            "title": "Biblioteczka Boya"
+        }
+    }
+]
\ No newline at end of file
index 3184920..6a4a559 100644 (file)
Binary files a/apps/catalogue/locale/pl/LC_MESSAGES/django.mo and b/apps/catalogue/locale/pl/LC_MESSAGES/django.mo differ
index ca4f243..648a1ab 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-11 15:44+0200\n"
-"PO-Revision-Date: 2011-10-11 15:44+0100\n"
+"POT-Creation-Date: 2012-01-10 13:04+0100\n"
+"PO-Revision-Date: 2012-01-10 13:05+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: \n"
@@ -22,218 +22,226 @@ msgstr ""
 msgid "Enter a valid JSON value. Error: %s"
 msgstr "Wprowadź prawidłową wartość JSON. Błąd: %s"
 
-#: forms.py:25
+#: forms.py:26
 msgid "Please supply an XML."
 msgstr "Proszę podać XML."
 
-#: forms.py:39
+#: forms.py:40
 msgid "title, author, theme/topic, epoch, kind, genre"
 msgstr "tytuł, autor, motyw/temat, epoka, rodzaj, gatunek"
 
-#: forms.py:56
+#: forms.py:57
 msgid "Shelves"
 msgstr "Półki"
 
-#: forms.py:69
+#: forms.py:70
 msgid "Name of the new shelf"
 msgstr "nazwa nowej półki"
 
-#: models.py:35
+#: models.py:29
 msgid "author"
 msgstr "autor"
 
-#: models.py:36
+#: models.py:30
 msgid "epoch"
 msgstr "epoka"
 
-#: models.py:37
+#: models.py:31
 msgid "kind"
 msgstr "rodzaj"
 
-#: models.py:38
+#: models.py:32
 msgid "genre"
 msgstr "gatunek"
 
-#: models.py:39
+#: models.py:33
 msgid "theme"
 msgstr "motyw"
 
-#: models.py:40
+#: models.py:34
 msgid "set"
 msgstr "półka"
 
-#: models.py:41 models.py:314
+#: models.py:35
+#: models.py:319
 msgid "book"
 msgstr "książka"
 
-#: models.py:45
+#: models.py:39
 msgid "ODT file"
 msgstr "Plik ODT"
 
-#: models.py:46
+#: models.py:40
 msgid "MP3 file"
 msgstr "Plik MP3"
 
-#: models.py:47
+#: models.py:41
 msgid "OGG file"
 msgstr "Plik OGG"
 
-#: models.py:48
+#: models.py:42
 msgid "DAISY file"
 msgstr "Plik DAISY"
 
-#: models.py:65 models.py:198
+#: models.py:59
+#: models.py:194
 msgid "name"
 msgstr "nazwa"
 
-#: models.py:66 models.py:287 models.py:876
+#: models.py:60
+#: models.py:294
+#: models.py:951
+#: models.py:968
+#: models.py:971
 msgid "slug"
 msgstr "slug"
 
-#: models.py:67 models.py:286
+#: models.py:61
+#: models.py:293
 msgid "sort key"
 msgstr "klucz sortowania"
 
-#: models.py:68
+#: models.py:62
 msgid "category"
 msgstr "kategoria"
 
-#: models.py:70 models.py:112 models.py:288 models.py:469
+#: models.py:64
+#: models.py:106
+#: models.py:295
+#: models.py:444
+#: models.py:969
 msgid "description"
 msgstr "opis"
 
-#: models.py:71
-msgid "main page"
-msgstr "strona główna"
-
-#: models.py:71
-msgid "Show tag on main page"
-msgstr "Pokazuj tag na stronie głównej"
-
-#: models.py:74
+#: models.py:68
 msgid "book count"
 msgstr "liczba książek"
 
-#: models.py:78 models.py:79 models.py:200 models.py:289 models.py:290
+#: models.py:72
+#: models.py:73
+#: models.py:196
+#: models.py:296
+#: models.py:297
 msgid "creation date"
 msgstr "data utworzenia"
 
-#: models.py:96
+#: models.py:90
 msgid "tag"
 msgstr "tag"
 
-#: models.py:97
+#: models.py:91
 msgid "tags"
 msgstr "tagi"
 
-#: models.py:197 models.py:877
+#: models.py:193
+#: models.py:952
 msgid "type"
 msgstr "typ"
 
-#: models.py:199
+#: models.py:195
 msgid "file"
 msgstr "plik"
 
-#: models.py:201 models.py:292
+#: models.py:197
+#: models.py:299
 msgid "extra information"
 msgstr "dodatkowe informacje"
 
-#: models.py:210 models.py:211
+#: models.py:206
+#: models.py:207
 msgid "book media"
 msgstr "media książki"
 
-#: models.py:285
+#: models.py:292
+#: models.py:967
 msgid "title"
 msgstr "tytuł"
 
-#: models.py:291
+#: models.py:298
 msgid "parent number"
 msgstr "numer rodzica"
 
-#: models.py:296
-msgid "XML file"
-msgstr "Plik XML"
-
-#: models.py:297
-msgid "HTML file"
-msgstr "Plik HTML"
-
-#: models.py:298
-msgid "PDF file"
-msgstr "Plik PDF"
-
-#: models.py:299
-msgid "EPUB file"
-msgstr "Plik EPUB"
-
-#: models.py:300
-msgid "TXT file"
-msgstr "Plik TXT"
-
-#: models.py:315
+#: models.py:320
 msgid "books"
 msgstr "książki"
 
-#: models.py:435
+#: models.py:408
 msgid "Read online"
 msgstr "Czytaj online"
 
-#: models.py:656
+#: models.py:672
 #, python-format
 msgid "Book with slug = \"%s\" does not exist."
 msgstr "Książki ο slug = \"%s\" nie istnieje."
 
-#: models.py:669
+#: models.py:685
 #, python-format
 msgid "Book %s already exists"
 msgstr "Książka %s już istnieje"
 
-#: models.py:844
+#: models.py:900
+#, python-format
+msgid "%s file"
+msgstr "plik %s"
+
+#: models.py:919
 msgid "fragment"
 msgstr "fragment"
 
-#: models.py:845
+#: models.py:920
 msgid "fragments"
 msgstr "fragmenty"
 
-#: models.py:878
+#: models.py:953
 msgid "sha-1 hash"
 msgstr "hash sha-1"
 
-#: models.py:879
+#: models.py:954
 msgid "time"
 msgstr "czas"
 
-#: models.py:883
+#: models.py:958
 msgid "file record"
 msgstr ""
 
-#: models.py:884
+#: models.py:959
 msgid "file records"
 msgstr ""
 
-#: views.py:531
+#: models.py:972
+msgid "book slugs"
+msgstr "slugi książek"
+
+#: models.py:976
+msgid "collection"
+msgstr "kolekcja"
+
+#: models.py:977
+msgid "collections"
+msgstr "kolekcje"
+
+#: views.py:509
 msgid "<p>To maintain your shelves you need to be logged in.</p>"
 msgstr "<p>Aby zarządzać swoimi półkami, musisz się zalogować.</p>"
 
-#: views.py:553
+#: views.py:531
 msgid "<p>Shelves were sucessfully saved.</p>"
 msgstr "<p>Półki zostały zapisane.</p>"
 
-#: views.py:577
+#: views.py:555
 msgid "Book was successfully removed from the shelf"
 msgstr "Usunięto"
 
-#: views.py:579
+#: views.py:557
 msgid "This book is not on the shelf"
 msgstr "Książki nie ma na półce"
 
-#: views.py:689
+#: views.py:676
 #, python-format
 msgid "<p>Shelf <strong>%s</strong> was successfully removed</p>"
 msgstr "<p>Półka <strong>%s</strong> została usunięta</p>"
 
-#: views.py:748
+#: views.py:738
 #, python-format
 msgid ""
 "An error occurred: %(exception)s\n"
@@ -244,15 +252,36 @@ msgstr ""
 "\n"
 "%(tb)s"
 
-#: views.py:749
+#: views.py:739
 msgid "Book imported successfully"
 msgstr "Książka zaimportowana"
 
-#: views.py:751
+#: views.py:741
 #, python-format
 msgid "Error importing file: %r"
 msgstr "Błąd podczas importowania pliku: %r"
 
+#~ msgid "main page"
+#~ msgstr "strona główna"
+
+#~ msgid "Show tag on main page"
+#~ msgstr "Pokazuj tag na stronie głównej"
+
+#~ msgid "XML file"
+#~ msgstr "Plik XML"
+
+#~ msgid "HTML file"
+#~ msgstr "Plik HTML"
+
+#~ msgid "PDF file"
+#~ msgstr "Plik PDF"
+
+#~ msgid "EPUB file"
+#~ msgstr "Plik EPUB"
+
+#~ msgid "TXT file"
+#~ msgstr "Plik TXT"
+
 #, fuzzy
 #~ msgid "sort_key"
 #~ msgstr "klucz sortowania"
@@ -275,8 +304,5 @@ msgstr "Błąd podczas importowania pliku: %r"
 #~ msgid "book stub"
 #~ msgstr "zapowiedź książki"
 
-#~ msgid "book stubs"
-#~ msgstr "zapowiedzi książek"
-
 #~ msgid "<p>Shelf <strong>%s</strong> was successfully created</p>"
 #~ msgstr "<p>Półka <strong>%s</strong> została utworzona</p>"
diff --git a/apps/catalogue/migrations/0017_auto__add_collection.py b/apps/catalogue/migrations/0017_auto__add_collection.py
new file mode 100644 (file)
index 0000000..2e9ca41
--- /dev/null
@@ -0,0 +1,147 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        
+        # Adding model 'Collection'
+        db.create_table('catalogue_collection', (
+            ('title', self.gf('django.db.models.fields.CharField')(max_length=120, db_index=True)),
+            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=120, primary_key=True, db_index=True)),
+            ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('book_slugs', self.gf('django.db.models.fields.TextField')()),
+        ))
+        db.send_create_signal('catalogue', ['Collection'])
+
+        if not db.dry_run:
+            from django.core.management import call_command
+            call_command("loaddata", "collection-boy.json")
+
+    def backwards(self, orm):
+        
+        # Deleting model 'Collection'
+        db.delete_table('catalogue_collection')
+
+
+    models = {
+        'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'catalogue.book': {
+            'Meta': {'ordering': "('sort_key',)", 'object_name': 'Book'},
+            'changed_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'epub_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'extra_info': ('catalogue.fields.JSONField', [], {'default': "'{}'"}),
+            'gazeta_link': ('django.db.models.fields.CharField', [], {'max_length': '240', 'blank': 'True'}),
+            'html_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'mobi_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['catalogue.Book']"}),
+            'parent_number': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+            'pdf_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '120', 'db_index': 'True'}),
+            'sort_key': ('django.db.models.fields.CharField', [], {'max_length': '120', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+            'txt_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}),
+            'wiki_link': ('django.db.models.fields.CharField', [], {'max_length': '240', 'blank': 'True'}),
+            'xml_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'})
+        },
+        'catalogue.bookmedia': {
+            'Meta': {'ordering': "('type', 'name')", 'object_name': 'BookMedia'},
+            'book': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'media'", 'to': "orm['catalogue.Book']"}),
+            'extra_info': ('catalogue.fields.JSONField', [], {'default': "'{}'"}),
+            'file': ('catalogue.fields.OverwritingFileField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': "'100'"}),
+            'source_sha1': ('django.db.models.fields.CharField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': "'100'"}),
+            'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'})
+        },
+        'catalogue.collection': {
+            'Meta': {'ordering': "('title',)", 'object_name': 'Collection'},
+            'book_slugs': ('django.db.models.fields.TextField', [], {}),
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '120', 'primary_key': 'True', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '120', 'db_index': 'True'})
+        },
+        'catalogue.filerecord': {
+            'Meta': {'ordering': "('-time', '-slug', '-type')", 'object_name': 'FileRecord'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'sha1': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '120', 'db_index': 'True'}),
+            'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '20', 'db_index': 'True'})
+        },
+        'catalogue.fragment': {
+            'Meta': {'ordering': "('book', 'anchor')", 'object_name': 'Fragment'},
+            'anchor': ('django.db.models.fields.CharField', [], {'max_length': '120'}),
+            'book': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'fragments'", 'to': "orm['catalogue.Book']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'short_text': ('django.db.models.fields.TextField', [], {}),
+            'text': ('django.db.models.fields.TextField', [], {})
+        },
+        'catalogue.tag': {
+            'Meta': {'ordering': "('sort_key',)", 'unique_together': "(('slug', 'category'),)", 'object_name': 'Tag'},
+            'book_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'category': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
+            'changed_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'gazeta_link': ('django.db.models.fields.CharField', [], {'max_length': '240', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'main_page': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '120', 'db_index': 'True'}),
+            'sort_key': ('django.db.models.fields.CharField', [], {'max_length': '120', 'db_index': 'True'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+            'wiki_link': ('django.db.models.fields.CharField', [], {'max_length': '240', 'blank': 'True'})
+        },
+        'catalogue.tagrelation': {
+            'Meta': {'unique_together': "(('tag', 'content_type', 'object_id'),)", 'object_name': 'TagRelation', 'db_table': "'catalogue_tag_relation'"},
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'items'", 'to': "orm['catalogue.Tag']"})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        }
+    }
+
+    complete_apps = ['catalogue']
index 22ed325..1417519 100644 (file)
@@ -961,6 +961,25 @@ class FileRecord(models.Model):
     def __unicode__(self):
         return "%s %s.%s" % (self.sha1,  self.slug, self.type)
 
+
+class Collection(models.Model):
+    """A collection of books, which might be defined before publishing them."""
+    title = models.CharField(_('title'), max_length=120, db_index=True)
+    slug = models.SlugField(_('slug'), max_length=120, primary_key=True)
+    description = models.TextField(_('description'), null=True, blank=True)
+
+    models.SlugField(_('slug'), max_length=120, unique=True, db_index=True)
+    book_slugs = models.TextField(_('book slugs'))
+
+    class Meta:
+        ordering = ('title',)
+        verbose_name = _('collection')
+        verbose_name_plural = _('collections')
+
+    def __unicode__(self):
+        return self.title
+
+
 ###########
 #
 # SIGNALS
index c770892..0e0da4b 100644 (file)
@@ -13,7 +13,8 @@ urlpatterns = patterns('catalogue.views',
     url(r'^polki/$', 'user_shelves', name='user_shelves'),
     url(r'^polki/(?P<slug>[a-zA-Z0-9-]+)/usun/$', 'delete_shelf', name='delete_shelf'),
     url(r'^polki/(?P<slug>[a-zA-Z0-9-]+)\.zip$', 'download_shelf', name='download_shelf'),
-    url(r'^lektury/', 'book_list', name='book_list'),
+    url(r'^lektury/$', 'book_list', name='book_list'),
+    url(r'^lektury/(?P<slug>[a-zA-Z0-9-]+)/$', 'collection', name='collection'),
     url(r'^audiobooki/$', 'audiobook_list', name='audiobook_list'),
     url(r'^daisy/$', 'daisy_list', name='daisy_list'),
     url(r'^lektura/(?P<slug>[a-zA-Z0-9-]+)/polki/', 'book_sets', name='book_shelves'),
index c808534..bf0c42f 100644 (file)
@@ -70,7 +70,8 @@ def main_page(request):
         context_instance=RequestContext(request))
 
 
-def book_list(request, filter=None, template_name='catalogue/book_list.html'):
+def book_list(request, filter=None, template_name='catalogue/book_list.html',
+        context=None):
     """ generates a listing of all books, optionally filtered with a test function """
 
     form = forms.SearchForm()
@@ -95,6 +96,17 @@ def daisy_list(request):
                      template_name='catalogue/daisy_list.html')
 
 
+def collection(request, slug):
+    coll = get_object_or_404(models.Collection, slug=slug)
+    slugs = coll.book_slugs.split()
+    # allow URIs
+    slugs = [slug.rstrip('/').rsplit('/', 1)[-1] if '/' in slug else slug
+                for slug in slugs]
+    return book_list(request, Q(slug__in=slugs),
+                     template_name='catalogue/collection.html',
+                     context={'collection': coll})
+
+
 def differentiate_tags(request, tags, ambiguous_slugs):
     beginning = '/'.join(tag.url_chunk for tag in tags)
     unparsed = '/'.join(ambiguous_slugs[1:])
index 1326a31..f40dee2 100644 (file)
Binary files a/wolnelektury/locale/pl/LC_MESSAGES/django.mo and b/wolnelektury/locale/pl/LC_MESSAGES/django.mo differ
index 15a5dcc..c256843 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WolneLektury\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-11 15:45+0200\n"
-"PO-Revision-Date: 2011-10-11 15:46+0100\n"
+"POT-Creation-Date: 2012-01-10 13:04+0100\n"
+"PO-Revision-Date: 2012-01-10 13:04+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: pl\n"
@@ -129,24 +129,24 @@ msgstr ""
 #: templates/base.html.py:120
 #: templates/base.html:126
 #: templates/base.html.py:132
-#: templates/catalogue/book_detail.html:208
+#: templates/catalogue/book_detail.html:211
 #: templates/catalogue/book_fragments.html:33
 #: templates/catalogue/differentiate_tags.html:23
 #: templates/catalogue/search_multiple_hits.html:29
 #: templates/catalogue/search_too_short.html:19
-#: templates/catalogue/tagged_object_list.html:142
+#: templates/catalogue/tagged_object_list.html:143
 msgid "Close"
 msgstr "Zamknij"
 
 #: templates/base.html:122
 #: templates/base.html.py:128
 #: templates/base.html:134
-#: templates/catalogue/book_detail.html:210
+#: templates/catalogue/book_detail.html:213
 #: templates/catalogue/book_fragments.html:35
 #: templates/catalogue/differentiate_tags.html:25
 #: templates/catalogue/search_multiple_hits.html:31
 #: templates/catalogue/search_too_short.html:21
-#: templates/catalogue/tagged_object_list.html:144
+#: templates/catalogue/tagged_object_list.html:145
 msgid "Loading"
 msgstr "Ładowanie"
 
@@ -197,7 +197,7 @@ msgstr "Szukaj"
 #: templates/catalogue/book_list.html:13
 #: templates/catalogue/main_page.html:31
 #: templates/catalogue/search_form.html:3
-#: templates/catalogue/tagged_object_list.html:44
+#: templates/catalogue/tagged_object_list.html:45
 #: templates/info/base.html:12
 #: templates/lesmianator/lesmianator.html:14
 #: templates/lessons/document_list.html:34
@@ -273,10 +273,12 @@ msgstr "Pobierz plik PDF"
 #: templates/catalogue/book_detail.html:53
 #: templates/catalogue/book_detail.html:56
 #: templates/catalogue/book_detail.html:59
+#: templates/catalogue/book_detail.html:62
 #: templates/catalogue/tagged_object_list.html:37
 #: templates/catalogue/tagged_object_list.html:38
 #: templates/catalogue/tagged_object_list.html:39
 #: templates/catalogue/tagged_object_list.html:40
+#: templates/catalogue/tagged_object_list.html:41
 msgid "for reading"
 msgstr "do czytania"
 
@@ -290,104 +292,110 @@ msgid "Download EPUB"
 msgstr "Pobierz plik EPUB"
 
 #: templates/catalogue/book_detail.html:53
+#: templates/catalogue/book_detail.html:56
 #: templates/catalogue/tagged_object_list.html:38
+#: templates/catalogue/tagged_object_list.html:39
 msgid "on mobile devices"
 msgstr "na urządzeniach mobilnych"
 
 #: templates/catalogue/book_detail.html:56
+msgid "Download MOBI"
+msgstr "Pobierz plik MOBI"
+
+#: templates/catalogue/book_detail.html:59
 msgid "Download TXT"
 msgstr "Pobierz plik TXT"
 
-#: templates/catalogue/book_detail.html:56
-#: templates/catalogue/tagged_object_list.html:40
+#: templates/catalogue/book_detail.html:59
+#: templates/catalogue/tagged_object_list.html:41
 msgid "on small displays, for example mobile phones"
 msgstr "na małych ekranach, np. na komórce"
 
-#: templates/catalogue/book_detail.html:59
+#: templates/catalogue/book_detail.html:62
 msgid "Download ODT"
 msgstr "Pobierz plik ODT"
 
-#: templates/catalogue/book_detail.html:59
-#: templates/catalogue/tagged_object_list.html:39
+#: templates/catalogue/book_detail.html:62
+#: templates/catalogue/tagged_object_list.html:40
 msgid "and editing using"
 msgstr "i edytowania przy pomocy"
 
-#: templates/catalogue/book_detail.html:64
+#: templates/catalogue/book_detail.html:67
 msgid "Audiobooks"
 msgstr "Audiobooki"
 
-#: templates/catalogue/book_detail.html:78
+#: templates/catalogue/book_detail.html:81
 msgid "Artist"
 msgstr "Czyta"
 
-#: templates/catalogue/book_detail.html:79
+#: templates/catalogue/book_detail.html:82
 msgid "Director"
 msgstr "Reżyseruje"
 
-#: templates/catalogue/book_detail.html:107
+#: templates/catalogue/book_detail.html:110
 msgid "Audiobooks were prepared as a part of the projects:"
 msgstr "Audiobooki przygotowane w ramach projektów:"
 
-#: templates/catalogue/book_detail.html:112
+#: templates/catalogue/book_detail.html:115
 #, python-format
 msgid "%(cs)s, funded by %(fb)s"
 msgstr "%(cs)s, finansowanego przez %(fb)s"
 
-#: templates/catalogue/book_detail.html:124
+#: templates/catalogue/book_detail.html:127
 #, python-format
 msgid "Audiobooks were prepared as a part of the %(cs)s project funded by %(fb)s."
 msgstr "Audiobooki przygotowane w ramach projektu %(cs)s finansowanego przez %(fb)s."
 
-#: templates/catalogue/book_detail.html:126
+#: templates/catalogue/book_detail.html:129
 #, python-format
 msgid "Audiobooks were prepared as a part of the %(cs)s project."
 msgstr "Audiobooki przygotowane w ramach projektu %(cs)s."
 
-#: templates/catalogue/book_detail.html:152
+#: templates/catalogue/book_detail.html:155
 msgid "Details"
 msgstr "O utworze"
 
-#: templates/catalogue/book_detail.html:155
+#: templates/catalogue/book_detail.html:158
 msgid "Author"
 msgstr "Autor"
 
-#: templates/catalogue/book_detail.html:161
+#: templates/catalogue/book_detail.html:164
 msgid "Epoch"
 msgstr "Epoka"
 
-#: templates/catalogue/book_detail.html:167
+#: templates/catalogue/book_detail.html:170
 msgid "Kind"
 msgstr "Rodzaj"
 
-#: templates/catalogue/book_detail.html:173
+#: templates/catalogue/book_detail.html:176
 msgid "Genre"
 msgstr "Gatunek"
 
-#: templates/catalogue/book_detail.html:179
+#: templates/catalogue/book_detail.html:182
 msgid "Other resources"
 msgstr "W innych miejscach"
 
-#: templates/catalogue/book_detail.html:182
+#: templates/catalogue/book_detail.html:185
 msgid "Source of the book"
 msgstr "Źródło lektury"
 
-#: templates/catalogue/book_detail.html:185
+#: templates/catalogue/book_detail.html:188
 msgid "Book on the Editor's Platform"
 msgstr "Utwór na Platformie Redakcyjnej"
 
-#: templates/catalogue/book_detail.html:188
+#: templates/catalogue/book_detail.html:191
 msgid "Book description on Lektury.Gazeta.pl"
 msgstr "Opis lektury w Lektury.Gazeta.pl"
 
-#: templates/catalogue/book_detail.html:191
+#: templates/catalogue/book_detail.html:194
 msgid "Book description on Wikipedia"
 msgstr "Opis lektury w Wikipedii"
 
-#: templates/catalogue/book_detail.html:194
+#: templates/catalogue/book_detail.html:197
 msgid "View XML source"
 msgstr "Źródłowy plik XML"
 
-#: templates/catalogue/book_detail.html:198
+#: templates/catalogue/book_detail.html:201
 msgid "Work's themes "
 msgstr "Motywy w utworze"
 
@@ -508,7 +516,7 @@ msgid "Table of contents"
 msgstr "Spis treści"
 
 #: templates/catalogue/book_text.html:22
-#: templates/catalogue/tagged_object_list.html:133
+#: templates/catalogue/tagged_object_list.html:134
 msgid "Themes"
 msgstr "Motywy"
 
@@ -520,6 +528,10 @@ msgstr "Nota red."
 msgid "Infobox"
 msgstr "Informacje"
 
+#: templates/catalogue/collection.html:6
+msgid "in WolneLektury.pl"
+msgstr "w WolneLektury.pl"
+
 #: templates/catalogue/daisy_list.html:6
 msgid "Listing of all DAISY files on WolneLektury.pl"
 msgstr "Spis wszystkich plików DAISY w WolneLektury.pl"
@@ -551,15 +563,15 @@ msgid "Show full category"
 msgstr "Zobacz całą kategorię"
 
 #: templates/catalogue/folded_tag_list.html:13
-#: templates/catalogue/main_page.html:111
-#: templates/catalogue/main_page.html:116
-#: templates/catalogue/main_page.html:155
-#: templates/catalogue/main_page.html:350
+#: templates/catalogue/main_page.html:103
+#: templates/catalogue/main_page.html:108
+#: templates/catalogue/main_page.html:147
+#: templates/catalogue/main_page.html:342
 msgid "See more"
 msgstr "Zobacz więcej"
 
 #: templates/catalogue/folded_tag_list.html:22
-#: templates/catalogue/main_page.html:318
+#: templates/catalogue/main_page.html:310
 msgid "Hide"
 msgstr "Zwiń"
 
@@ -568,7 +580,7 @@ msgid "Shelves containing fragment"
 msgstr "Półki zawierające fragment"
 
 #: templates/catalogue/fragment_sets.html:4
-#: templates/catalogue/main_page.html:85
+#: templates/catalogue/main_page.html:76
 msgid "You do not own any shelves. You can create one below, if you want to."
 msgstr "Nie posiadasz żadnych półek. Jeśli chcesz, możesz utworzyć nową półkę poniżej."
 
@@ -615,143 +627,143 @@ msgstr[2] ""
 msgid "Browse books by categories"
 msgstr "Przeglądaj lektury według wybranych kategorii"
 
-#: templates/catalogue/main_page.html:69
+#: templates/catalogue/main_page.html:59
 msgid "Books for every school level"
 msgstr "Lektury na każdy poziom edukacji"
 
-#: templates/catalogue/main_page.html:71
+#: templates/catalogue/main_page.html:61
 msgid "primary school"
 msgstr "szkoła podstawowa"
 
-#: templates/catalogue/main_page.html:72
+#: templates/catalogue/main_page.html:62
 msgid "gymnasium"
 msgstr "gimnazjum"
 
-#: templates/catalogue/main_page.html:73
+#: templates/catalogue/main_page.html:63
 msgid "high school"
 msgstr "szkoła średnia"
 
-#: templates/catalogue/main_page.html:76
+#: templates/catalogue/main_page.html:67
 #: templates/catalogue/user_shelves.html:2
 msgid "Your shelves with books"
 msgstr "Twoje półki z lekturami"
 
-#: templates/catalogue/main_page.html:81
+#: templates/catalogue/main_page.html:72
 msgid "delete"
 msgstr "usuń"
 
-#: templates/catalogue/main_page.html:90
+#: templates/catalogue/main_page.html:81
 #: templates/catalogue/user_shelves.html:15
 msgid "Create shelf"
 msgstr "Utwórz półkę"
 
-#: templates/catalogue/main_page.html:94
+#: templates/catalogue/main_page.html:86
 msgid "Create your own book set. You can share it with friends by sending them link to your shelf."
 msgstr "Stwórz własny zestaw lektur. Możesz się nim później podzielić z innymi, przesyłając im link do Twojej półki."
 
-#: templates/catalogue/main_page.html:95
+#: templates/catalogue/main_page.html:87
 msgid "You need to "
 msgstr "Aby zarządzać swoimi półkami, musisz się"
 
-#: templates/catalogue/main_page.html:95
+#: templates/catalogue/main_page.html:87
 msgid "sign in"
 msgstr "zalogować"
 
-#: templates/catalogue/main_page.html:95
+#: templates/catalogue/main_page.html:87
 msgid "to manage your shelves."
 msgstr "."
 
-#: templates/catalogue/main_page.html:101
+#: templates/catalogue/main_page.html:93
 msgid "Twórzże się!"
 msgstr ""
 
+#: templates/catalogue/main_page.html:95
 #: templates/catalogue/main_page.html:103
-#: templates/catalogue/main_page.html:111
 msgid "Wolne Lektury Widget"
 msgstr "Widżet Wolne Lektury"
 
-#: templates/catalogue/main_page.html:104
+#: templates/catalogue/main_page.html:96
 msgid "Place our widget - search engine for Wolne Lektury which gives access to free books and audiobooks - on your homepage! Just copy the HTML code below onto your page:"
 msgstr "Umieść widżet – wyszukiwarkę Wolnych Lektur umożliwiającą dostęp do darmowych lektur i audiobooków – na swojej stronie WWW! Po prostu skopiuj poniższy kod HTML na swoją stronę:"
 
-#: templates/catalogue/main_page.html:105
+#: templates/catalogue/main_page.html:97
 msgid "Insert this element in place where you want display the widget"
 msgstr "Umieść ten element w miejscu gdzie chcesz wyświetlić widżet"
 
-#: templates/catalogue/main_page.html:108
+#: templates/catalogue/main_page.html:100
 msgid "Place this element just before closing body tag: &lt;/body&gt;"
 msgstr "Umieść ten element tuż przed zamknięciem taga body: &lt;/body&gt;"
 
-#: templates/catalogue/main_page.html:114
-#: templates/catalogue/main_page.html:116
+#: templates/catalogue/main_page.html:106
+#: templates/catalogue/main_page.html:108
 #: templates/lessons/document_list.html:32
 msgid "Hand-outs for teachers"
 msgstr "Materiały pomocnicze dla nauczycieli"
 
-#: templates/catalogue/main_page.html:115
+#: templates/catalogue/main_page.html:107
 msgid "Lessons' prospects and other ideas for using Wolnelektury.pl for teaching."
 msgstr "Scenariusze lekcji i inne pomysły na wykorzytanie serwisu WolneLektury.pl podczas nauczania."
 
-#: templates/catalogue/main_page.html:122
-#: templates/catalogue/tagged_object_list.html:112
+#: templates/catalogue/main_page.html:114
+#: templates/catalogue/tagged_object_list.html:113
 msgid "Authors"
 msgstr "Autorzy"
 
-#: templates/catalogue/main_page.html:126
-#: templates/catalogue/tagged_object_list.html:116
+#: templates/catalogue/main_page.html:118
+#: templates/catalogue/tagged_object_list.html:117
 msgid "Kinds"
 msgstr "Rodzaje"
 
-#: templates/catalogue/main_page.html:130
-#: templates/catalogue/tagged_object_list.html:120
+#: templates/catalogue/main_page.html:122
+#: templates/catalogue/tagged_object_list.html:121
 msgid "Genres"
 msgstr "Gatunki"
 
-#: templates/catalogue/main_page.html:134
-#: templates/catalogue/tagged_object_list.html:124
+#: templates/catalogue/main_page.html:126
+#: templates/catalogue/tagged_object_list.html:125
 msgid "Epochs"
 msgstr "Epoki"
 
-#: templates/catalogue/main_page.html:140
-#: templates/catalogue/main_page.html:155
+#: templates/catalogue/main_page.html:132
+#: templates/catalogue/main_page.html:147
 msgid "Themes and topics"
 msgstr "Motywy i tematy"
 
-#: templates/catalogue/main_page.html:143
+#: templates/catalogue/main_page.html:135
 msgid "Themes groups"
 msgstr "Rodziny motywów"
 
-#: templates/catalogue/main_page.html:328
+#: templates/catalogue/main_page.html:320
 msgid "News"
 msgstr "Aktualności"
 
-#: templates/catalogue/main_page.html:332
+#: templates/catalogue/main_page.html:324
 msgid "See our blog"
 msgstr "Zobacz nasz blog"
 
-#: templates/catalogue/main_page.html:335
-#: templates/catalogue/main_page.html:341
+#: templates/catalogue/main_page.html:327
+#: templates/catalogue/main_page.html:333
 msgid "You can help us!"
 msgstr "Możesz nam pomóc!"
 
-#: templates/catalogue/main_page.html:337
+#: templates/catalogue/main_page.html:329
 msgid "Become a volunteer &ndash; an editor, developer or translator."
 msgstr "Zostań naszym redaktorem, programistą lub tłumaczem – wolontariuszem."
 
-#: templates/catalogue/main_page.html:338
+#: templates/catalogue/main_page.html:330
 msgid "Gain new skills and experience."
 msgstr "Zdobądź nowe umiejętności i doświadczenie."
 
-#: templates/catalogue/main_page.html:339
+#: templates/catalogue/main_page.html:331
 msgid "Join an open project of creating an innovative online library."
 msgstr "Weź udział w otwartym projekcie i twórz innowacyjną bibliotekę internetową."
 
-#: templates/catalogue/main_page.html:344
-#: templates/catalogue/main_page.html:350
+#: templates/catalogue/main_page.html:336
+#: templates/catalogue/main_page.html:342
 msgid "About us"
 msgstr "O projekcie"
 
-#: templates/catalogue/main_page.html:346
+#: templates/catalogue/main_page.html:338
 msgid ""
 "\n"
 "\t\t\tInternet library with school readings “Wolne Lektury” (<a href=\"http://wolnelektury.pl\">www.wolnelektury.pl</a>) is a project made by Modern Poland Foundation. It started in 2007 and shares school readings, which are recommended by Ministry of National Education and are in public domain.\n"
@@ -760,7 +772,7 @@ msgstr ""
 "\n"
 "Biblioteka internetowa z lekturami szkolnymi „Wolne Lektury” (<a href=\"http://wolnelektury.pl\">www.wolnelektury.pl</a>) to projekt realizowany przez fundację Nowoczesna Polska. Działa od 2007 roku i udostępnia w swoich zbiorach lektury szkolne, które są zalecane do użytku przez Ministerstwo Edukacji Narodowej i które trafiły już do domeny publicznej."
 
-#: templates/catalogue/main_page.html:359
+#: templates/catalogue/main_page.html:351
 msgid ""
 "\n"
 "Portions of this page are modifications based on work created and <a href=\"http://code.google.com/policies.html\">shared by Google</a> and used\n"
@@ -790,7 +802,7 @@ msgid "Search in WolneLektury.pl"
 msgstr "Wyszukiwanie w WolneLektury.pl"
 
 #: templates/catalogue/search_no_hits.html:14
-#: templates/catalogue/tagged_object_list.html:101
+#: templates/catalogue/tagged_object_list.html:103
 msgid "Sorry! Search cirteria did not match any resources."
 msgstr "Przepraszamy! Brak wyników spełniających kryteria podane w zapytaniu."
 
@@ -824,93 +836,93 @@ msgstr "Pobierz wszystkie książki z tej półki"
 msgid "Choose books' formats which you want to download:"
 msgstr "Wybierz formaty książek, które chcesz pobrać:"
 
-#: templates/catalogue/tagged_object_list.html:41
 #: templates/catalogue/tagged_object_list.html:42
+#: templates/catalogue/tagged_object_list.html:43
 msgid "for listening"
 msgstr "do słuchania"
 
-#: templates/catalogue/tagged_object_list.html:41
+#: templates/catalogue/tagged_object_list.html:42
 msgid "on favourite MP3 player"
 msgstr "w ulubionym odtwarzaczu MP3"
 
-#: templates/catalogue/tagged_object_list.html:42
+#: templates/catalogue/tagged_object_list.html:43
 msgid "open format"
 msgstr "otwarty format"
 
-#: templates/catalogue/tagged_object_list.html:42
+#: templates/catalogue/tagged_object_list.html:43
 msgid "Xiph.org Foundation"
 msgstr "fundacji Xiph.Org"
 
-#: templates/catalogue/tagged_object_list.html:44
+#: templates/catalogue/tagged_object_list.html:45
 #: templates/lessons/ajax_document_detail.html:3
 msgid "Download"
 msgstr "Pobierz"
 
-#: templates/catalogue/tagged_object_list.html:44
+#: templates/catalogue/tagged_object_list.html:45
 msgid "Updating list of books' formats on the shelf"
 msgstr "Uaktualnianie listy formatów książek na półce."
 
-#: templates/catalogue/tagged_object_list.html:44
+#: templates/catalogue/tagged_object_list.html:45
 msgid "cancel"
 msgstr "anuluj"
 
-#: templates/catalogue/tagged_object_list.html:49
+#: templates/catalogue/tagged_object_list.html:50
 msgid "Share this shelf"
 msgstr "Podziel się tą półką"
 
-#: templates/catalogue/tagged_object_list.html:51
+#: templates/catalogue/tagged_object_list.html:52
 msgid "Copy this link and share it with other people to let them see your shelf."
 msgstr "Skopiuj ten link i przekaż go osobom, z którymi chcesz się podzielić tą półką."
 
-#: templates/catalogue/tagged_object_list.html:61
+#: templates/catalogue/tagged_object_list.html:62
 #: templates/pdcounter/author_detail.html:27
 msgid "Read work's study of this author on Lektury.Gazeta.pl"
 msgstr "Przeczytaj omówienia utworów autora w serwisie Lektury.Gazeta.pl"
 
-#: templates/catalogue/tagged_object_list.html:63
+#: templates/catalogue/tagged_object_list.html:64
 #, python-format
 msgid "Read study of epoch %(last_tag)s on Lektury.Gazeta.pl"
 msgstr "Przeczytaj omówienia z epoki %(last_tag)s w serwisie Lektury.Gazeta.pl"
 
-#: templates/catalogue/tagged_object_list.html:65
+#: templates/catalogue/tagged_object_list.html:66
 #, python-format
 msgid "Read study of kind %(last_tag)s on Lektury.Gazeta.pl"
 msgstr "Przeczytaj omówienia z rodzaju %(last_tag)s w serwisie Lektury.Gazeta.pl"
 
-#: templates/catalogue/tagged_object_list.html:67
+#: templates/catalogue/tagged_object_list.html:68
 #, python-format
 msgid "Read study of genre %(last_tag)s on Lektury.Gazeta.pl"
 msgstr "Przeczytaj omówienia z gatunku %(last_tag)s w serwisie Lektury.Gazeta.pl"
 
-#: templates/catalogue/tagged_object_list.html:69
+#: templates/catalogue/tagged_object_list.html:70
 msgid "Read related study on Lektury.Gazeta.pl"
 msgstr "Przeczytaj powiązane omówienia w serwisie Lektury.Gazeta.pl"
 
-#: templates/catalogue/tagged_object_list.html:77
+#: templates/catalogue/tagged_object_list.html:78
 #: templates/pdcounter/author_detail.html:32
 msgid "Read article about this author on Wikipedia"
 msgstr "Przeczytaj artykuł o autorze w Wikipedii"
 
-#: templates/catalogue/tagged_object_list.html:79
+#: templates/catalogue/tagged_object_list.html:80
 #, python-format
 msgid "Read article about epoch %(last_tag)s on Wikipedia"
 msgstr "Przeczytaj artykuł o epoce %(last_tag)s w Wikipedii"
 
-#: templates/catalogue/tagged_object_list.html:81
+#: templates/catalogue/tagged_object_list.html:82
 #, python-format
 msgid "Read article about kind %(last_tag)s on Wikipedia"
 msgstr "Przeczytaj artykuł o rodzaju %(last_tag)s w Wikipedii"
 
-#: templates/catalogue/tagged_object_list.html:83
+#: templates/catalogue/tagged_object_list.html:84
 #, python-format
 msgid "Read article about genre %(last_tag)s on Wikipedia"
 msgstr "Przeczytaj artykuł o gatunku %(last_tag)s w Wikipedii"
 
-#: templates/catalogue/tagged_object_list.html:85
+#: templates/catalogue/tagged_object_list.html:86
 msgid "Read related article on Wikipedia"
 msgstr "Przeczytaj powiązany artykuł w Wikipedii"
 
-#: templates/catalogue/tagged_object_list.html:95
+#: templates/catalogue/tagged_object_list.html:96
 msgid "Delete"
 msgstr "Usuń"
 
@@ -1064,9 +1076,6 @@ msgstr "Zaloguj się"
 #~ "to profesjonalne nagrania tekstów literackich z naszego zbioru dostępne "
 #~ "na wolnej licencji w formatach MP3, Ogg Vorbis oraz w systemie DAISY."
 
-#~ msgid "Download MP3"
-#~ msgstr "Pobierz plik MP3"
-
 #~ msgid "Download Ogg Vorbis"
 #~ msgstr "Pobierz plik Ogg Vorbis"
 
diff --git a/wolnelektury/templates/catalogue/collection.html b/wolnelektury/templates/catalogue/collection.html
new file mode 100755 (executable)
index 0000000..c1f1ae4
--- /dev/null
@@ -0,0 +1,12 @@
+{% extends "catalogue/book_list.html" %}
+{% load i18n %}
+
+{% block bodyid %}collection{% endblock %}
+
+{% block title %}{{ context.collection.title }} {% trans "in WolneLektury.pl" %}{% endblock %}
+
+{% block book_list_header %}{{ context.collection.title }}{% endblock %}
+
+{% block book_list_info %}
+{{ context.collection.description|safe }}
+{% endblock %}
index ba9e676..b9cb5a3 100644 (file)
@@ -40,21 +40,14 @@ a <a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>free license</
         <p id="tags-description">↓ {% trans "Browse books by categories" %} ↓</p>
         <div id="propaganda">
 
+            {% chunk "promo" %}
+
+            {% comment %}
             <h2>Spot promocyjny</h2>
             <p><iframe width="260" height="162"
                 src="http://www.youtube.com/embed/IteV_EoTrZE"
                 frameborder="0" allowfullscreen></iframe></p>
-
-
-            <h2>Turniej Elektrybałtów</h2>
-            <p><a target="_blank" href='http://turniej.wolnelektury.pl'>
-                <img src='{{ STATIC_URL }}img/turniej-maly.png' alt='Logo Turnieju' width='60' height='64' style='float:left;margin:1em;' />
-            </a>
-            Trwa otwarty konkurs na najlepszego <strong>automatycznego poetę</strong>!
-            Zobacz, co potrafią nadesłane programy.
-            </p>
-            <p class="see-more"><a target="_blank" href="http://turniej.wolnelektury.pl" >Idź do strony konkursu ⇒</a></p>
-
+            {% endcomment %}
 
             {% comment %}    <h2>{% trans "Books for every school level" %}</h2>
             <ul>