From dce4cbe605cb926b5583f7ddd325704b527e7e5c Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Tue, 8 Jun 2021 13:47:31 +0200 Subject: [PATCH] Cop notes. --- src/catalogue/constants.py | 2 ++ src/catalogue/models/book.py | 13 ++++++- .../catalogue/audiobook_zip_readme.txt | 28 +++++++++++++++ .../templates/catalogue/book_info.html | 35 +++++++++++-------- src/catalogue/templatetags/catalogue_tags.py | 5 +++ src/catalogue/utils.py | 5 ++- 6 files changed, 72 insertions(+), 16 deletions(-) create mode 100644 src/catalogue/templates/catalogue/audiobook_zip_readme.txt diff --git a/src/catalogue/constants.py b/src/catalogue/constants.py index 2a00ac247..4eb84c60a 100644 --- a/src/catalogue/constants.py +++ b/src/catalogue/constants.py @@ -7,10 +7,12 @@ LICENSES = { 'http://creativecommons.org/licenses/by-sa/3.0/': { 'icon': 'cc-by-sa', 'description': _('Creative Commons Attribution-ShareAlike 3.0 Unported'), + 'locative': 'licencji CC-BY-SA 3.0 PL', }, 'http://artlibre.org/licence/lal/pl/': { 'icon': 'lal', 'description': _('Free Art License 1.3'), + 'locative': 'Licencji Wolnej Sztuki 1.3', } } LICENSES['http://creativecommons.org/licenses/by-sa/3.0/deed.pl'] = \ diff --git a/src/catalogue/models/book.py b/src/catalogue/models/book.py index 978bca4f2..ddea117eb 100644 --- a/src/catalogue/models/book.py +++ b/src/catalogue/models/book.py @@ -12,6 +12,7 @@ from django.conf import settings from django.db import connection, models, transaction import django.dispatch from django.contrib.contenttypes.fields import GenericRelation +from django.template.loader import render_to_string from django.urls import reverse from django.utils.translation import ugettext_lazy as _, get_language from django.utils.deconstruct import deconstructible @@ -464,7 +465,17 @@ class Book(models.Model): def zip_audiobooks(self, format_): bm = BookMedia.objects.filter(book=self, type=format_) paths = map(lambda bm: (None, bm.file.path), bm) - return create_zip(paths, "%s_%s" % (self.slug, format_)) + licenses = set() + for m in bm: + license = constants.LICENSES.get( + m.get_extra_info_json().get('license'), {} + ).get('locative') + if license: + licenses.add(license) + readme = render_to_string('catalogue/audiobook_zip_readme.txt', { + 'licenses': licenses, + }) + return create_zip(paths, "%s_%s" % (self.slug, format_), {'informacje.txt': readme}) def search_index(self, book_info=None, index=None, index_tags=True, commit=True): if not self.findable: diff --git a/src/catalogue/templates/catalogue/audiobook_zip_readme.txt b/src/catalogue/templates/catalogue/audiobook_zip_readme.txt new file mode 100644 index 000000000..9ffa03ff4 --- /dev/null +++ b/src/catalogue/templates/catalogue/audiobook_zip_readme.txt @@ -0,0 +1,28 @@ +Ten audiobook pochodzi z darmowej biblioteki internetowej Wolne Lektury. Znajdziesz w niej tysiące ebooków i setki audiobooków. +Wolne Lektury to projekt prowadzony przez fundację Nowoczesna Polska. Jesteśmy organizacją pozarządową. Działamy dzięki wsparciu darczyńców takich jak Ty. +Wspólnie możemy udostępnić kolejne książki. Wspieraj Wolne Lektury stałą comiesięczną kwotą. Dzięki temu wcześniej uzyskasz dostęp do wyjątkowych publikacji! Możesz też wesprzeć nas jednorazowo. +Wejdź na https://wolnelektury.pl/towarzystwo/ i dorzuć się do nowych nagrań. + +Audiobooki Wolnych Lektur są udostępniane na wolnych licencjach, co oznacza, że możesz je swobodnie wykorzystywać, udostępniać i publikować pod warunkiem zachowania warunków licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur: https://wolnelektury.pl/info/zasady-wykorzystania/ + +{% if licenses %}Ten utwór jest jest udostępniony na {% for lic in licenses %}{{ lic }}{% if not forloop.last %}, {% endif %}{% endfor %}. + +{% endif %}Przekaż 1% na wolną bibliotekę KRS 0000070056: https://wolnelektury.pl/info/wesprzyj-nas/ + +Zostań Przyjacielem Wolnych Lektur: https://wolnelektury.pl/towarzystwo/ + +Słuchaj nas na YouTube: https://wolnelektury.pl/re/WolneLekturyYT/ + +Fundacja Nowoczesna Polska +ul. Marszałkowska 84/92 lok. 125 +00-514 Warszawa +tel./fax: +48 22 621 30 17 +e-mail:fundacja@nowoczesnapolska.org.pl +www.nowoczesnapolska.org.pl + +Organizacja Pożytku Publicznego +Sąd Rejestrowy dla M.St. Warszawy w Warszawie, +XII Wydział Gospodarczy +KRS 0000070056, NIP 952-18-77-087 + +Zapraszamy do wysłuchania audiobooków Wolnych Lektur: https://wolnelektury.pl/katalog/audiobooki/ diff --git a/src/catalogue/templates/catalogue/book_info.html b/src/catalogue/templates/catalogue/book_info.html index 85d1fbc06..3fde24650 100644 --- a/src/catalogue/templates/catalogue/book_info.html +++ b/src/catalogue/templates/catalogue/book_info.html @@ -2,20 +2,27 @@ {% load catalogue_tags %} {% with extra_info=book.get_extra_info_json %} -

- {% if extra_info.license %} - {% trans "This work is licensed under:" %} - {{ extra_info.license_description }} - {% else %} - {% blocktrans %}This work isn't covered by copyright and is part of the - public domain, which means it can be freely used, published and - distributed. If there are any additional copyrighted materials - provided with this work (such as annotations, motifs etc.), those - materials are licensed under the - Creative Commons Attribution-ShareAlike 3.0 - license.{% endblocktrans %} - {% endif %} -

+

+ Wszystkie zasoby Wolnych Lektur możesz swobodnie wykorzystywać, + publikować i rozpowszechniać pod warunkiem zachowania warunków + licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur.
+ + {% if extra_info.license %} + Ten utwór jest jest udostępniony na + {% license_locative extra_info.license extra_info.license_description %}. + {% else %} + Ten utwór jest w domenie publicznej. + {% endif %} +
+ Wszystkie materiały dodatkowe (przypisy, motywy literackie) są + udostępnione na Licencji Wolnej Sztuki 1.3.
+ Fundacja Nowoczesna Polska zastrzega sobie prawa do wydania + krytycznego zgodnie z art. Art.99(2) Ustawy o prawach autorskich + i prawach pokrewnych. Wykorzystując zasoby z Wolnych Lektur, + należy pamiętać o zapisach licencji oraz zasadach, które + spisaliśmy w Zasadach wykorzystania Wolnych Lektur. + Zapoznaj się z nimi, zanim udostępnisz dalej nasze książki. +

{% if extra_info.source_name %}

{% trans "Resource prepared based on:" %} {{ extra_info.source_name }}

diff --git a/src/catalogue/templatetags/catalogue_tags.py b/src/catalogue/templatetags/catalogue_tags.py index b582f89c3..1a3e0aac9 100644 --- a/src/catalogue/templatetags/catalogue_tags.py +++ b/src/catalogue/templatetags/catalogue_tags.py @@ -436,6 +436,11 @@ def license_icon(license_url): } +@register.simple_tag +def license_locative(license_url, default): + return LICENSES.get(license_url, {}).get('locative', default) + + @register.filter def class_name(obj): return obj.__class__.__name__ diff --git a/src/catalogue/utils.py b/src/catalogue/utils.py index 916fd7090..9461243da 100644 --- a/src/catalogue/utils.py +++ b/src/catalogue/utils.py @@ -97,7 +97,7 @@ class LockFile(object): # @task -def create_zip(paths, zip_slug): +def create_zip(paths, zip_slug, file_contents=None): """ Creates a zip in MEDIA_ROOT/zip directory containing files from path. Resulting archive filename is ${zip_slug}.zip @@ -121,6 +121,9 @@ def create_zip(paths, zip_slug): if arcname is None: arcname = path.basename(p) zipf.write(p, arcname) + if file_contents: + for arcname, content in file_contents.items(): + zipf.writestr(arcname, content) finally: zipf.close() -- 2.20.1