plwiki for books
[redakcja.git] / src / depot / publishers / base.py
1 import requests
2 from librarian.html import transform_abstrakt
3 from slugify import slugify
4
5
6 class BasePublisher:
7     def __init__(self, username, password, publisher_handle):
8         self.username = username
9         self.password = password
10         self.publisher_handle = publisher_handle
11         self._session = None
12
13     @property
14     def session(self):
15         if self._session is None:
16             self._session = requests.Session()
17             self.login()
18         return self._session
19
20     def send_book(self, site_book_publish, changes=None):
21         raise NotImplementedError()
22
23     def get_description(self, wlbook, description_add=''):
24         description = ''
25
26         if wlbook.meta.audience in ('L', 'SP1', 'SP2', 'SP3', 'SP4'):
27             description += '<p><em>{}</em> to lektura szkolna.'.format(wlbook.meta.title)
28             if wlbook.tree.find('//pe') is not None:
29                 description += '<br>Ebook <em>{title}</em> zawiera przypisy opracowane specjalnie dla uczennic i uczniów {school}.'.format(
30                     title=wlbook.meta.title,
31                     school='szkoły podstawowej' if wlbook.meta.audience.startswith('SP') else 'liceum i technikum'
32                 )
33             description += '</p>\n'
34
35         abstract = wlbook.tree.find('.//abstrakt')
36         if abstract is not None:
37             description += transform_abstrakt(abstract)
38         description += description_add
39         description += '<p>'
40         description += ', '.join(
41             '<a href="https://wolnelektury.pl/katalog/autor/{}/">{}</a>'.format(
42                 slugify(p.readable()),
43                 p.readable(),
44             ) if p is not None else ''
45             for p in wlbook.meta.authors
46         ) + '<br>'
47         description += '<a href="https://wolnelektury.pl/katalog/lektura/{}/">{}</a><br>'.format(
48             wlbook.meta.url.slug,
49             wlbook.meta.title
50         )
51         if wlbook.meta.translators:
52             description += 'tłum. ' + ', '.join(p.readable() for p in wlbook.meta.translators) + '<br>'
53         description += 'Epoka: ' + ', '.join(
54             '<a href="https://wolnelektury.pl/katalog/epoka/{}/">{}</a>'.format(
55                 slugify(p),
56                 p,
57             ) if p is not None else ''
58             for p in wlbook.meta.epochs
59         ) + ' '
60         description += 'Rodzaj: ' + ', '.join(
61             '<a href="https://wolnelektury.pl/katalog/rodzaj/{}/">{}</a>'.format(
62                 slugify(p),
63                 p,
64             ) if p is not None else ''
65             for p in wlbook.meta.kinds
66         ) + ' '
67         description += 'Gatunek: ' + ', '.join(
68             '<a href="https://wolnelektury.pl/katalog/gatunek/{}/">{}</a>'.format(
69                 slugify(p),
70                 p,
71             ) if p is not None else ''
72             for p in wlbook.meta.genres
73         ) + '</p>'
74
75         return description
76