From 907aba88951334676a259dccc8f7edd8934d5e00 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Fri, 18 Sep 2020 15:35:40 +0200 Subject: [PATCH] Fixes #4076: Recommendations from collections. --- src/catalogue/locale/de/LC_MESSAGES/django.po | 2 +- src/catalogue/locale/en/LC_MESSAGES/django.po | 2 +- src/catalogue/locale/es/LC_MESSAGES/django.po | 2 +- src/catalogue/locale/fr/LC_MESSAGES/django.po | 2 +- src/catalogue/locale/it/LC_MESSAGES/django.po | 2 +- src/catalogue/locale/lt/LC_MESSAGES/django.po | 2 +- src/catalogue/locale/pl/LC_MESSAGES/django.mo | Bin 12528 -> 12587 bytes src/catalogue/locale/pl/LC_MESSAGES/django.po | 10 ++++------ src/catalogue/locale/ru/LC_MESSAGES/django.po | 2 +- src/catalogue/locale/uk/LC_MESSAGES/django.po | 2 +- .../migrations/0030_collection_role.py | 18 ++++++++++++++++++ src/catalogue/models/collection.py | 4 ++++ src/catalogue/views.py | 2 +- src/wolnelektury/views.py | 16 +++++++++++++++- 14 files changed, 50 insertions(+), 16 deletions(-) create mode 100644 src/catalogue/migrations/0030_collection_role.py diff --git a/src/catalogue/locale/de/LC_MESSAGES/django.po b/src/catalogue/locale/de/LC_MESSAGES/django.po index bb9fdc0cc..b78748b09 100644 --- a/src/catalogue/locale/de/LC_MESSAGES/django.po +++ b/src/catalogue/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" "PO-Revision-Date: 2013-04-09 10:38+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" diff --git a/src/catalogue/locale/en/LC_MESSAGES/django.po b/src/catalogue/locale/en/LC_MESSAGES/django.po index a16499f57..86902eba1 100644 --- a/src/catalogue/locale/en/LC_MESSAGES/django.po +++ b/src/catalogue/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" "PO-Revision-Date: 2013-04-09 10:38+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" diff --git a/src/catalogue/locale/es/LC_MESSAGES/django.po b/src/catalogue/locale/es/LC_MESSAGES/django.po index 725d2d964..826fc7a26 100644 --- a/src/catalogue/locale/es/LC_MESSAGES/django.po +++ b/src/catalogue/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" "PO-Revision-Date: 2013-04-09 10:39+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" diff --git a/src/catalogue/locale/fr/LC_MESSAGES/django.po b/src/catalogue/locale/fr/LC_MESSAGES/django.po index 96bae9f07..c8b83aabb 100644 --- a/src/catalogue/locale/fr/LC_MESSAGES/django.po +++ b/src/catalogue/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" "PO-Revision-Date: 2013-04-09 10:38+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" diff --git a/src/catalogue/locale/it/LC_MESSAGES/django.po b/src/catalogue/locale/it/LC_MESSAGES/django.po index 489a6a8a5..9845f285e 100644 --- a/src/catalogue/locale/it/LC_MESSAGES/django.po +++ b/src/catalogue/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" "PO-Revision-Date: 2013-04-09 10:39+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" diff --git a/src/catalogue/locale/lt/LC_MESSAGES/django.po b/src/catalogue/locale/lt/LC_MESSAGES/django.po index be2d17f49..36987e9e1 100644 --- a/src/catalogue/locale/lt/LC_MESSAGES/django.po +++ b/src/catalogue/locale/lt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" "PO-Revision-Date: 2013-04-09 10:40+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" diff --git a/src/catalogue/locale/pl/LC_MESSAGES/django.mo b/src/catalogue/locale/pl/LC_MESSAGES/django.mo index b45c68d89ef8d71f0029142257a05a1dac3d61bd..dfc9070190681631c90d7a7bfff7017afc68f854 100644 GIT binary patch delta 3831 zcmYk+3v|zA9LMozvoXv6zaf)d+Qns<{cYG>j-0kL&5@F9g+&>wEtVmd;0)! zz*56?n202vYif+k&zRLMbk~@#LXCL{zs6?Rh!5aj7=pJk7~L&>w!`MsJ76pHU=XI+ z=Yy@;NIS22fkI~*yo^oIK@GGV)$v*!j^&t+x3MRt(K~ZB(@^baqXwFb>SvLC{vNiY zz5>H=J4WFV3}<}PKtUb&xAv_p7z3$?p;i)U>z%MI^=_z%WuP)K6qSh_?1dBT{dK5* zw^(ahS*R__L1lIvDs%bPsi+CgLHhBUxfGPjMYh38Ti=N4xC-^c zKGaz_WIc^q!6nq8yM`c85HNi&Igs-9w;dRVLe`e7SN5ql;ZWJ7DsNn(B%Ii^k ze8S#8i^|k5sIR0E^#c;n-uKHHjrv;pptk5K)Rv91^?X#nQ>?R4zbmhMDX8O>)-qH_ z6*vSBp;8#y!MB1))By3QElWmaAOqFmNPE8swSYHJnJYo{yB5`c7ivP@V-)xeF{e;3 zTtfZ8+{9>fck~VDK^ATLpgPJy4LB78aiO&Y`7_J-r!A^QP2f0cLFZ7J>(c4&eXq%& zpqUJ}=J+0%ai|GQLG9gQ)XdjlQ{0Yvug2EvFoF7ERQqel2W0LbKMf`--nYLgg*eyZTJ*bJMptdj#wX#t-2=lNjR^lUg2AgAB zZYqPwWa$#Fhii!qq`JXFR@yc9IEHK-Rhqf%XM-Gl0&4%O}mY9im-`)6(aJZd5rQT^OT4HT5* z>#sHHEQO;BJ?KVne+ugGanu0A?1Ry$4kn^9GXu4yOxkdIPHc@5s1Mn=2Hw;(t&t+(Hf9j02(jtxzwvL(M!2IeTU)@hPDzpBP9?Cmd&U zi_GLrl%63D5nYH9f>UZLh|L>Fg#k-}CoElf}lv2vsgc3NC*hORzy4Dl3h~2~hVke>Nu+!0<;Ci1@ zOF};!RnBO4Tfeo=G;0Pa@bs)c7}MbT KfBRBTw*P;?FopvF delta 3795 zcmYM$d2mf<7{~GVlEf1CN3c z5E^3N^`cU0Us}aftEC-d8*OG7w58Rmq2FK5Yn<`q^SpIEC!8&i#bZH&Q2SQP`P zak;8HpM{7WJTssCn}3^$)Qg z{Q```HP{f#us+W>7inmMKT#`tgy9%b%UwwgR6h>uU;|WQnW*tEqbkt@GjWhTzX&yN zv2`t~s9TXWm@=%*^Ub$3e0UA{XYT0&R_2c~uZz0g3bn!x7>nIe2@FNuHx`@X2dD(s zqh8%E+dqwZ@Qm(ZEXct`q6Q?PO6o_(nog($24OQCg)04g zWV@ImR3ckZ_Z>u4=6j6CpKbpy)XE>D#)k)~yH3=>)|iNX?1$Mn6E)ER)C!KF9`FP5 z#hG%{ME_t{tWMdq;@4334M2U?L$H+3dKzl?Cz6%s3$~-7QuacwnZdR{8A;O2Kvkp| zN8uJ!!ZFNB)5N3pL=NhKolvi+2dc7tQI#8D9f3-4JTgzvOr)Vw=Gy^tY`+jSaS7^% zZK%BvLS_CnYO`HJE#M()o^Y0@%^QunFCLXx5~@!A`#K~=_&nx{SLm#`-)!9LbJ)cAoI)b1TYLo1$)nm8YI<4n|z zb5JW?fErh5`zvgJwe4?2jo*$+Af!GeJcP;gk0-kGm!lHBmq`7Uz*Bo7CdqwA$<|EN z=Idhnd8pEjM(u?uwm%=6(_e*3@DwWHbEwUC0rT)G=3*Avw8RO?)L#QvazZOFMZM!K zsPp?!r8W}IIbgKoOz7;N@5$kuP_buN^)$!Giu)6*8Zs9lOd>iCkJgqYN7({ zi6y8K-a)P4U(_B6YvTUk_)rx{LQR-$&%c6Nz))1>#-Zk&h8kapN@x>m0l{4~bi--X z56eYNz}u(?MmBZdT`X#%HmC>o!EhXH9f$lg@A5~ls0fw7X4HbpP?d{l=AKVN5(yf= z+c0hHh4!cfdZSkUHY)R}7=a5>D_COtt1y-RI@I{{$cJJsBR>h|5o)D%Qrzo)>x-!W z{+KQ_v>OMbNK~x-lO0es-Fh!y#DwKyxXgF&8_#h3Hc#2hhO)v{JZ~<1l3VXi9_BWyu*^Zj%80tZ1QS)6w?V+pa z#rx<(kKdgy3N?Q)j)pEIqb3NTO4Am#vRW?h4o>2F1i z--%kt9#n$+k?|ePQ5t&i8GGR(>c%Um%x@rj&J+?~5jw^Yor%fBr%qXou7UNmUMG$c zEr>+~yU}bWo*koY<0KY20dIWT30itB(}-+B#}Z--v5nCG66*MpIOx3Z%}6>@(SQDD z_w!~&YlHKRHz#X3ZT??1B{bYgKZ_Vn%pjf}9cXNFj`&hXuA`MtY$y5=IwrW7=@=qL5-G%LVlnX^p`*;j z6j-%0juZQct%Tl>j$-H4nyH@8oP7SSa5mLU@ho%B*Ua!bTw6mdCDuCLsCdstr$tob z*i!nviO&fgyNJWiFs|=+@}n}64pp3WH{dbaY*N#h(EHaWIZ%2wsz&HWgI<-Q16gT- nR%xvRiGl3g%&b&@Ak-mYwI@7~-X=XW^lM_dH*_<-Yo-4I1iW>j diff --git a/src/catalogue/locale/pl/LC_MESSAGES/django.po b/src/catalogue/locale/pl/LC_MESSAGES/django.po index 2cf664433..d2d3059ca 100644 --- a/src/catalogue/locale/pl/LC_MESSAGES/django.po +++ b/src/catalogue/locale/pl/LC_MESSAGES/django.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: WolneLektury\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" -"PO-Revision-Date: 2015-12-31 16:45+0100\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" +"PO-Revision-Date: 2020-09-18 15:34+0200\n" "Last-Translator: Radek Czajka \n" "Language-Team: Fundacja Nowoczesna Polska \n" @@ -17,7 +17,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Translated-Using: django-rosetta 0.5.6\n" -"X-Generator: Poedit 1.8.4\n" +"X-Generator: Poedit 2.3\n" #: catalogue/constants.py:9 msgid "Creative Commons Attribution-ShareAlike 3.0 Unported" @@ -233,10 +233,8 @@ msgid "cover for mobile app" msgstr "okładka dla aplikacji" #: catalogue/models/book.py:107 -#, fuzzy -#| msgid "cover for mobile app" msgid "cover for Ebookpoint" -msgstr "okładka dla aplikacji" +msgstr "okładka dla Ebookpoint" #: catalogue/models/book.py:136 catalogue/models/collection.py:19 msgid "book" diff --git a/src/catalogue/locale/ru/LC_MESSAGES/django.po b/src/catalogue/locale/ru/LC_MESSAGES/django.po index 357039e80..cd580cb57 100644 --- a/src/catalogue/locale/ru/LC_MESSAGES/django.po +++ b/src/catalogue/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" "PO-Revision-Date: 2013-04-09 10:40+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" diff --git a/src/catalogue/locale/uk/LC_MESSAGES/django.po b/src/catalogue/locale/uk/LC_MESSAGES/django.po index 8c1160d10..2902742da 100644 --- a/src/catalogue/locale/uk/LC_MESSAGES/django.po +++ b/src/catalogue/locale/uk/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-10 15:34+0200\n" +"POT-Creation-Date: 2020-09-17 10:36+0200\n" "PO-Revision-Date: 2013-04-09 10:40+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" diff --git a/src/catalogue/migrations/0030_collection_role.py b/src/catalogue/migrations/0030_collection_role.py new file mode 100644 index 000000000..6d5e8e5c6 --- /dev/null +++ b/src/catalogue/migrations/0030_collection_role.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.16 on 2020-09-18 13:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('catalogue', '0029_auto_20200414_1516'), + ] + + operations = [ + migrations.AddField( + model_name='collection', + name='role', + field=models.CharField(blank=True, choices=[('', '–'), ('recommend', 'recommended')], db_index=True, max_length=128), + ), + ] diff --git a/src/catalogue/models/collection.py b/src/catalogue/models/collection.py index 739ad78ec..d964762ba 100644 --- a/src/catalogue/models/collection.py +++ b/src/catalogue/models/collection.py @@ -17,6 +17,10 @@ class Collection(models.Model): book_slugs = models.TextField(_('book slugs')) kind = models.CharField(_('kind'), max_length=10, blank=False, default='book', db_index=True, choices=(('book', _('book')), ('picture', _('picture')))) + role = models.CharField(max_length=128, blank=True, db_index=True, choices=[ + ('', '–'), + ('recommend', _('recommended')), + ]) class Meta: ordering = ('title',) diff --git a/src/catalogue/views.py b/src/catalogue/views.py index aeed403ab..ef2527b59 100644 --- a/src/catalogue/views.py +++ b/src/catalogue/views.py @@ -449,7 +449,7 @@ def tag_catalogue(request, category): def collections(request): - objects = Collection.objects.all() + objects = Collection.objects.filter(role='') if len(objects) > 3: best = random.sample(list(objects), 3) diff --git a/src/wolnelektury/views.py b/src/wolnelektury/views.py index 415a4fd1b..1c0f40cd3 100644 --- a/src/wolnelektury/views.py +++ b/src/wolnelektury/views.py @@ -52,7 +52,21 @@ def main_page(request): except IndexError: pass - ctx['best'] = Book.objects.filter(findable=True).order_by('?')[:5] + best = [] + best_places = 5 + for recommended in Collection.objects.filter(role='recommend').order_by('?'): + books = list(recommended.get_books().exclude(id__in=[b.id for b in best]).order_by('?')[:best_places]) + best.extend(books) + best_places -= len(books) + if not best_places: + break + if best_places: + best.extend( + list( + Book.objects.filter(findable=True).exclude(id__in=[b.id for b in best]).order_by('?')[:best_places] + ) + ) + ctx['best'] = best return render(request, "main_page.html", ctx) -- 2.20.1