From 4a1d7738a2a05d8659c8a342eac3abc97a50544e Mon Sep 17 00:00:00 2001
From: Dmitry Shelepnev <mitshel@mail.ru>
Date: Sat, 21 Jan 2017 17:28:36 +0300
Subject: [PATCH] Fix issue #26. Add Counter.objects.get_lastscan() def

---
 opds_catalog/locale/ru/LC_MESSAGES/django.mo  | Bin 4676 -> 4676 bytes
 opds_catalog/locale/ru/LC_MESSAGES/django.po  |  17 ++--
 opds_catalog/models.py                        |   8 ++
 sopds/locale/ru/LC_MESSAGES/django.mo         | Bin 5162 -> 5162 bytes
 sopds/locale/ru/LC_MESSAGES/django.po         |  66 ++++++++-------
 .../locale/ru/LC_MESSAGES/django.mo           | Bin 5571 -> 5632 bytes
 .../locale/ru/LC_MESSAGES/django.po           |  76 +++++++++---------
 sopds_web_backend/templates/sopds_footer.html |   2 +-
 sopds_web_backend/views.py                    |   2 +-
 9 files changed, 91 insertions(+), 80 deletions(-)

diff --git a/opds_catalog/locale/ru/LC_MESSAGES/django.mo b/opds_catalog/locale/ru/LC_MESSAGES/django.mo
index 6edafff2e765cfb0a0573420d1984046b2504017..90d40bf9f82ebe36a6548f65bc4384659f1b4051 100644
GIT binary patch
delta 21
ccmX@2aztfA3@3+?p@N~gm67S@6wU`6088Npf&c&j

delta 21
ccmX@2aztfA3@3+yg@TcRm9gdK6wU`6089l2h5!Hn

diff --git a/opds_catalog/locale/ru/LC_MESSAGES/django.po b/opds_catalog/locale/ru/LC_MESSAGES/django.po
index 9b69d52..37037ac 100644
--- a/opds_catalog/locale/ru/LC_MESSAGES/django.po
+++ b/opds_catalog/locale/ru/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-01-08 20:39+0300\n"
+"POT-Creation-Date: 2017-01-21 17:25+0300\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -191,30 +191,25 @@ msgstr "Найдены серии"
 msgid "Select language"
 msgstr "Выбор алфавита"
 
-#: .\opds_catalog\feeds.py:790 .\opds_catalog\models.py:36
-#: .\opds_catalog\tests\test_feeds.py:106
+#: .\opds_catalog\feeds.py:790 .\opds_catalog\tests\test_feeds.py:106
 #: .\opds_catalog\tests\test_feeds.py:119
 #: .\opds_catalog\tests\test_feeds.py:130
 msgid "Cyrillic"
 msgstr "Кириллица (РУС)"
 
-#: .\opds_catalog\feeds.py:791 .\opds_catalog\models.py:36
-#: .\opds_catalog\tests\test_feeds.py:107
+#: .\opds_catalog\feeds.py:791 .\opds_catalog\tests\test_feeds.py:107
 msgid "Latin"
 msgstr "Латинница (LAT)"
 
-#: .\opds_catalog\feeds.py:792 .\opds_catalog\models.py:36
-#: .\opds_catalog\tests\test_feeds.py:108
+#: .\opds_catalog\feeds.py:792 .\opds_catalog\tests\test_feeds.py:108
 msgid "Digits"
 msgstr "Цифры (0..9)"
 
-#: .\opds_catalog\feeds.py:793 .\opds_catalog\models.py:36
-#: .\opds_catalog\tests\test_feeds.py:109
+#: .\opds_catalog\feeds.py:793 .\opds_catalog\tests\test_feeds.py:109
 msgid "Other symbols"
 msgstr "Другие символы"
 
-#: .\opds_catalog\feeds.py:794 .\opds_catalog\models.py:36
-#: .\opds_catalog\tests\test_feeds.py:110
+#: .\opds_catalog\feeds.py:794 .\opds_catalog\tests\test_feeds.py:110
 msgid "Show all"
 msgstr "Показать все"
 
diff --git a/opds_catalog/models.py b/opds_catalog/models.py
index 2d29a89..81c9a6e 100644
--- a/opds_catalog/models.py
+++ b/opds_catalog/models.py
@@ -124,6 +124,14 @@ class CounterManager(models.Manager):
             
         return counter
 
+    def get_lastscan(self):
+        try:
+            lastscan = self.get(name='allbooks').update_time
+        except ObjectDoesNotExist:
+            lastscan = None
+
+        return lastscan
+
 class Counter(models.Model):
     name = models.CharField(primary_key=True, null=False, blank=False, max_length=16)
     value = models.IntegerField(null=False, default=0)
diff --git a/sopds/locale/ru/LC_MESSAGES/django.mo b/sopds/locale/ru/LC_MESSAGES/django.mo
index 40f7a05edad9c46b03cb78ba83fed0ebef0248f8..6a497d9edada54b562665b4f19821f982190cdc5 100644
GIT binary patch
delta 21
ccmZ3bu}WiuA_s?&p@N~gm67RYO%6sL073x;0{{R3

delta 21
ccmZ3bu}WiuA_s?og@TcRm9gb!O%6sL074}N2LJ#7

diff --git a/sopds/locale/ru/LC_MESSAGES/django.po b/sopds/locale/ru/LC_MESSAGES/django.po
index bc58a87..756e732 100644
--- a/sopds/locale/ru/LC_MESSAGES/django.po
+++ b/sopds/locale/ru/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-01-08 20:39+0300\n"
+"POT-Creation-Date: 2017-01-21 17:25+0300\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,63 +19,67 @@ msgstr ""
 "10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%"
 "100>=11 && n%100<=14)? 2 : 3);\n"
 
-#: .\sopds\settings.py:157
+#: .\sopds\settings.py:164
+msgid "Select language"
+msgstr ""
+
+#: .\sopds\settings.py:165
 msgid "Absolute path to books collection directory"
 msgstr "Абсолютный путь к каталогу с файлами книг"
 
-#: .\sopds\settings.py:158
+#: .\sopds\settings.py:166
 msgid "List of managed book files extensions"
 msgstr "Список расширений файлов, для включения в коллекцию книг"
 
-#: .\sopds\settings.py:159
+#: .\sopds\settings.py:167
 msgid "Turn once scanning directly"
 msgstr "Запустить внеочередное однократное сканирование коллекции книг"
 
-#: .\sopds\settings.py:161
+#: .\sopds\settings.py:169
 msgid "Enable authentication"
 msgstr "Включить аутентификацию"
 
-#: .\sopds\settings.py:162
+#: .\sopds\settings.py:170
 msgid "Enable alphabet submenu"
 msgstr "Включить субменю выбора алфавита"
 
-#: .\sopds\settings.py:163
+#: .\sopds\settings.py:171
 msgid "This flag hides found doublicates"
 msgstr "Флаг прячет найденные дубликаты книг"
 
-#: .\sopds\settings.py:164
+#: .\sopds\settings.py:172
 msgid "This flag activate showing cover of books"
 msgstr "Флаг активирует показ обложек книг"
 
-#: .\sopds\settings.py:165
+#: .\sopds\settings.py:173
 msgid "Max subitems count in alphabet menuitem"
 msgstr "Максимальное число подэлементов в элементах алфавитных меню"
 
-#: .\sopds\settings.py:166
+#: .\sopds\settings.py:174
 msgid "Max items on page"
 msgstr "Максимальное число элементов на странице"
 
-#: .\sopds\settings.py:167
+#: .\sopds\settings.py:175
 msgid "Create downloaded filename from book title"
 msgstr "Имя загружаемого файла формировать из названия книги"
 
-#: .\sopds\settings.py:168
+#: .\sopds\settings.py:176
 msgid "Path to image file showing for book without embedded cover"
 msgstr "Путь к изображению, для показа в качестве обложки для книг без обложек"
 
-#: .\sopds\settings.py:171
+#: .\sopds\settings.py:179
 msgid "This flag activate extraction metadata from fb2 files"
 msgstr "Флаг активирует извлеченеи метаданных из fb2-файлов"
 
-#: .\sopds\settings.py:172
+#: .\sopds\settings.py:180
 msgid "This flag activate zip files scanning"
 msgstr "Флаг разрешает сканированеи содержимого ZIP файлов"
 
-#: .\sopds\settings.py:173
+#: .\sopds\settings.py:181
 msgid "Set codepage for filenames inside zipfile"
 msgstr "Codepage для имен файлов внутри ZIP"
 
-#: .\sopds\settings.py:174
+#: .\sopds\settings.py:182
 msgid ""
 "Enables read metadata from inpx-file (and stop scanning deeper from ipx-file "
 "place)"
@@ -83,67 +87,67 @@ msgstr ""
 "Считываем метаданные книг з INPX-файлов (при этом не сканируем файлы и "
 "каталоги, расположенные на уровне или ниже найденого INPX)"
 
-#: .\sopds\settings.py:175
+#: .\sopds\settings.py:183
 msgid "Skip scanning INPX with unchanged size after previous scan"
 msgstr ""
 "Не сканируем INPX, если его размер не изменился с предидущего сканирования"
 
-#: .\sopds\settings.py:176
+#: .\sopds\settings.py:184
 msgid "Test avialability zip files listed in INPX before add in collection"
 msgstr ""
 "Проверяем наличие zip файлов, перечисленных в INPX перед добавлением их "
 "содержимого в коллекцию"
 
-#: .\sopds\settings.py:177
+#: .\sopds\settings.py:185
 msgid "Test avialability book files listed in INPX before add in collection"
 msgstr ""
 "Тестируем наличие книг, перечисленных в INPX перед добавлением их "
 "содержимого в коллекцию"
 
-#: .\sopds\settings.py:178
+#: .\sopds\settings.py:186
 msgid "Logical deleting unavialable files"
 msgstr "Логическое удаление отсутствующих файлов"
 
-#: .\sopds\settings.py:180
+#: .\sopds\settings.py:188
 msgid "sheduled minutes for sopds_scanner (cron syntax)"
 msgstr "минуты для планировщика sopds_Scanner (как в cron)"
 
-#: .\sopds\settings.py:181
+#: .\sopds\settings.py:189
 msgid "sheduled hours for sopds_scanner (cron syntax)"
 msgstr "часы для планировщика sopds_Scanner (как в cron)"
 
-#: .\sopds\settings.py:182
+#: .\sopds\settings.py:190
 msgid "sheduled day for sopds_scanner (cron syntax)"
 msgstr "дни для планировщика sopds_Scanner (как в cron)"
 
-#: .\sopds\settings.py:183
+#: .\sopds\settings.py:191
 msgid "sheduled day of weeks for sopds_scanner (cron syntax)"
 msgstr "дни недели для планировщика sopds_Scanner (как в cron)"
 
-#: .\sopds\settings.py:185
+#: .\sopds\settings.py:193
 msgid "Path to FB2-EPUB converter program"
 msgstr "Путь к конвертеру FB2-EPUB"
 
-#: .\sopds\settings.py:186
+#: .\sopds\settings.py:194
 msgid "Path to FB2-MOBI converter program"
 msgstr "Путь к конвертеру FB2-MOBI"
 
-#: .\sopds\settings.py:187
+#: .\sopds\settings.py:195
 msgid "Path to temporary files directory"
 msgstr "Путь к временному каталогу"
 
-#: .\sopds\settings.py:189
+#: .\sopds\settings.py:197
 msgid "Path to logfile for sopds_server process"
 msgstr "Путь к логфайлу для процесса sopds_server"
 
-#: .\sopds\settings.py:190
+#: .\sopds\settings.py:198
 msgid "Path to logfile for sopds_scanner process"
 msgstr "Путь к логфайлу для процесса sopds_scanner"
 
-#: .\sopds\settings.py:191
+#: .\sopds\settings.py:199
 msgid "Path to pidfile for sopds_server process"
 msgstr "Путь к pid-файлу для процесса sopds_server"
 
-#: .\sopds\settings.py:192
+#: .\sopds\settings.py:200
 msgid "Path to pidfile for sopds_scanner process"
 msgstr "Путь к pid-файлу для процесса sopds_scanner"
diff --git a/sopds_web_backend/locale/ru/LC_MESSAGES/django.mo b/sopds_web_backend/locale/ru/LC_MESSAGES/django.mo
index c1e39ba33dd6678143992a889252337f9a76cd42..f7698cc762eb1aca1d84ce9a09afc98d0cbeb375 100644
GIT binary patch
delta 1459
zcmX@C-Jnx{Pl#nI0|NttJp%)S3<Cp$2onQCBm)Bj4+}_?fuVqvfq{*IfuWF<fq|WY
zfuVwxfq{d8fuVtwfq|2OfuWO?fq|QWfnhQ$0|P4q1H*i%_)=B|hA;*OhV@YWY-|vH
zyle~%ybKHsVr&cy!VC=c3@U6448{x$3>It<i*nc)7(^Ku7>d~#7z98TurV+QGB7aA
zVuM(?hK+%NkAZ<<8<alE#=yYEz`$^Y4dQ_NP;;I_`ES@57(jmc1m%BcV_=YCU|{$Q
zR#(r!Ai)mND9;XYfGU))!w#{~h#lf`8+M4xUD+W%4rYfK9M2AMKnhfUK0CzWW$X+L
z{0s~X?NI)7D1QZ1-3}04&%nU2A8Nrdb_RwDMh1rS><kRj3=9k&oD2-&3=9k@oDc`r
za56B+F)%PRaWXK-GB7YK<b<f(&k2dT+fe!kRGlan1A`$01A_?{!~<zu5D(--`L$dO
z4E3P6ZR3LYpqC30$1}JX7+x_lFf4$Ick?hX@GvkiOyhwVu$YH|L6U)iVIvR3;?q13
z{V$;6pLrM<wlOd;@bW_R9pQz9$VFZT1~CQ(hDW>%45|za3_p1p>KURL7#QUFAaPpF
z$H1V?z`)SO2l3%HK8TO6@Iiv|Gatmq%>0lvBG1pjAi==EV9F1PDnEXRLn5GbGC#!J
zJgB-_eg+0}kVp6-A##qt9>TZ|)$jnS;Wa<R<-edby8y&s5dnz9<OLw|wgL<cA`A=+
zUQqdX0Z52s2|yBAJCt4|z`&rvz`(E<s_q$-{#Y--z#zoH!0<<af#C!b0|UPx1A_qr
z1H%nr1_n(A1_n+MNYELJFfgbwFfh1?K*X~}7#Nfp7#OCCK!S3o2m^x(0|Uc-s5%x=
z28LV)1_o_W1_pTs28NlU5Oa2lLPGMCC?v${Z$Sl~h(c2J7f}WVMo88Nlb}2gVt@>>
zW`I}%;)Ajzh_(e03=mI%m<kM#AP1EVpu`GF$e_3e$$_vXw5$Q8J8n?^7Y2zUVN(VM
z21N!220I2wT!BIZByGb02?0=+0`c`3AVF-wz`&pjD!4$t1xY|LDCI+$;PM2NPCx}5
zs4M`9gAy<Y11SG7FfeE_K!Q_`fq}sYB+J0SU<Rc@6eub{SrJrFfpP+<qyveA3Mf#D
zRtIrFS&ab_&mgW610>B@F+kD`Gbl$eFfiyaFfcHI6gZZaWNh|j-O0#YmRhu#nf)j;
nhmoOzp}Ccj>E;Vu?^t-}Uf6MA*M)r-Hec9sVZ-J<{OoK1<^X&(

delta 1393
zcmZqBIjmiOPl#nI0|Ntt9RmY{3<CoL4-*4JFara_A7+p!1A_-E0|Ofa1A`|k0|Pq)
z1495S0|N&G149HW0|O@m14AM!0|Pe$14A||0|P4q14B7fyq1-LA&h~6p&hFK9#r2`
zRt5%M1_p+AtPBjo3=H)Qe^?n9j2Rdh1lS-Jxv()Xh%zuRc(XAu2!JeLV_*<uU|=X>
zgIL(Y#=yYGz`)Q4rRTCSFmN$2FsxyNIAA-}oV`%~5jF+}76t}}Q&9eSHU<VM1_p+!
zV0HBj3?HBp-@yV541b{(v9LpY%Eu0Iu{b-#r>g7_0}a_B7Mrm{9PY>taj*wF0|P$;
z14AT~p9$qxLDh9Z>4_lo>lqjrX0S6bR4_6yEM#Y3kY-?Dkm6)u5NBXuFyn;y$d8kO
zL5_ieA%v5GL6(7mp_mh*ZXzcn%GN^ZQ&4r!IT;uX85kJYxF8;|;DUI-5z6=Hf;c#W
zi-DmY6m;=ikhsm_Vqkd1$iPs<1@T!d4+8@a0|P?_55#~{9tH+U1_p*^9*D(rc_8X`
zLB)^qFfeRmU|_fp)i;e75+aLv85qPE7#OzjGBBtzFfg3vWnhSAU|{&j%TN!FOJ6<)
z25klgh8RAG4?FlEK3>KL3Cg2<5FcOVgQSg*d<+Z{3=9nH{E#%Ezz=bV7L+#Sholh)
zeuz4Meg+0}kVp6-A+i8UujH?XXxzjP@#$VDeF|#Ob$*D09zn%HDN=-ifq_>5qEATx
z5)!%skVNGLrBekM7&I6d7#g7JRzm450t^g73=9nW1sE7kFflM(suy5jFkoO{m@Uk}
zpvl0%a7GvsWZ#4t7}P*M6oH8Ai7+rIgR-3nBnWFn7#LI-7#J3bK-3)<VPMDwWh)T|
z26<3OibBk(5ru?cuP7v>=0f?)MIni~e!D0G10yKkL$W)V1jQ97A%e;TkN_w#Su!v%
zFfl+Z2bBjPaUBLo@PgR-43HoPc>+{UfbzH&0|SFC10*qnf?pA&5Q-HTz)=oL{|pQk
zP(cu710on8@vO@L@f}DAlxIN&4yY^;W?*12VSt1HsL%lgHK<Smm06%r0;x9x5e$&%
z0|hxKp&KzkLI+f?K&1U4!2rsypm>D{GBB7jKnf*wXsHMi2c>)~21vpL6)4sW3=B#P
q3=Dc8NhmhhoXdKUakB~gA!ZH(3k4$sD`U&e|G3_<Z2ry9$_4<f`)maO

diff --git a/sopds_web_backend/locale/ru/LC_MESSAGES/django.po b/sopds_web_backend/locale/ru/LC_MESSAGES/django.po
index 594622f..776549c 100644
--- a/sopds_web_backend/locale/ru/LC_MESSAGES/django.po
+++ b/sopds_web_backend/locale/ru/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-01-08 20:39+0300\n"
+"POT-Creation-Date: 2017-01-21 17:25+0300\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -99,7 +99,7 @@ msgstr "Авторы:"
 #: .\sopds_web_backend\templates\sopds_books.html:60
 #: .\sopds_web_backend\templates\sopds_menu.html:9
 #: .\sopds_web_backend\templates\sopds_menu.html:31
-#: .\sopds_web_backend\views.py:484 .\sopds_web_backend\views.py:488
+#: .\sopds_web_backend\views.py:481 .\sopds_web_backend\views.py:485
 msgid "Genres"
 msgstr "Жанры"
 
@@ -107,7 +107,7 @@ msgstr "Жанры"
 #: .\sopds_web_backend\templates\sopds_logo.html:29
 #: .\sopds_web_backend\templates\sopds_menu.html:10
 #: .\sopds_web_backend\templates\sopds_menu.html:33
-#: .\sopds_web_backend\views.py:269 .\sopds_web_backend\views.py:469
+#: .\sopds_web_backend\views.py:267 .\sopds_web_backend\views.py:466
 msgid "Series"
 msgstr "Серии"
 
@@ -131,11 +131,11 @@ msgstr "Дубликаты книги:"
 msgid "You are here:"
 msgstr "Вы здесь:"
 
-#: .\sopds_web_backend\templates\sopds_footer.html:5
+#: .\sopds_web_backend\templates\sopds_footer.html:6
 msgid "BOOKSHELF"
 msgstr "КНИЖНАЯ ПОЛКА"
 
-#: .\sopds_web_backend\templates\sopds_footer.html:18
+#: .\sopds_web_backend\templates\sopds_footer.html:19
 msgid ""
 "Bookshelf is available only SimpleOPDS Catalog mode with activated user "
 "authorization."
@@ -143,35 +143,39 @@ msgstr ""
 "Книжная полка доступна только в режиме работы SimpleOPDS Catalog со "
 "включенной авторизацией пользователей."
 
-#: .\sopds_web_backend\templates\sopds_footer.html:22
+#: .\sopds_web_backend\templates\sopds_footer.html:23
 msgid "STATISTICS"
 msgstr "СТАТИСТИКА"
 
-#: .\sopds_web_backend\templates\sopds_footer.html:24
+#: .\sopds_web_backend\templates\sopds_footer.html:25
 msgid "This сatalog contains:"
 msgstr "Этот каталог содержит:"
 
-#: .\sopds_web_backend\templates\sopds_footer.html:25
+#: .\sopds_web_backend\templates\sopds_footer.html:26
 msgid "books,"
 msgstr "книг,"
 
-#: .\sopds_web_backend\templates\sopds_footer.html:26
+#: .\sopds_web_backend\templates\sopds_footer.html:27
 msgid "authors,"
 msgstr "авторов,"
 
-#: .\sopds_web_backend\templates\sopds_footer.html:27
+#: .\sopds_web_backend\templates\sopds_footer.html:28
 msgid "genres and"
 msgstr "жанров и"
 
-#: .\sopds_web_backend\templates\sopds_footer.html:28
+#: .\sopds_web_backend\templates\sopds_footer.html:29
 msgid "series."
 msgstr "серий."
 
-#: .\sopds_web_backend\templates\sopds_footer.html:31
+#: .\sopds_web_backend\templates\sopds_footer.html:32
 msgid "Last collection scan date:"
 msgstr "Дата последнего сканирования:"
 
-#: .\sopds_web_backend\templates\sopds_footer.html:37
+#: .\sopds_web_backend\templates\sopds_footer.html:33
+msgid "Never"
+msgstr "Никогда"
+
+#: .\sopds_web_backend\templates\sopds_footer.html:38
 msgid "RANDOM BOOK"
 msgstr "СЛУЧАЙНАЯ КНИГА"
 
@@ -220,7 +224,7 @@ msgid "Log in"
 msgstr "Вход"
 
 #: .\sopds_web_backend\templates\sopds_logo.html:14
-#: .\sopds_web_backend\views.py:269 .\sopds_web_backend\views.py:308
+#: .\sopds_web_backend\views.py:267 .\sopds_web_backend\views.py:306
 msgid "Search"
 msgstr "Найти"
 
@@ -244,18 +248,18 @@ msgstr "Каталоги"
 
 #: .\sopds_web_backend\templates\sopds_menu.html:7
 #: .\sopds_web_backend\templates\sopds_menu.html:17
-#: .\sopds_web_backend\views.py:91 .\sopds_web_backend\views.py:97
-#: .\sopds_web_backend\views.py:110 .\sopds_web_backend\views.py:122
-#: .\sopds_web_backend\views.py:131 .\sopds_web_backend\views.py:134
-#: .\sopds_web_backend\views.py:143 .\sopds_web_backend\views.py:147
-#: .\sopds_web_backend\views.py:157 .\sopds_web_backend\views.py:169
-#: .\sopds_web_backend\views.py:401
+#: .\sopds_web_backend\views.py:89 .\sopds_web_backend\views.py:95
+#: .\sopds_web_backend\views.py:108 .\sopds_web_backend\views.py:120
+#: .\sopds_web_backend\views.py:129 .\sopds_web_backend\views.py:132
+#: .\sopds_web_backend\views.py:141 .\sopds_web_backend\views.py:145
+#: .\sopds_web_backend\views.py:155 .\sopds_web_backend\views.py:167
+#: .\sopds_web_backend\views.py:398
 msgid "Books"
 msgstr "Книги"
 
 #: .\sopds_web_backend\templates\sopds_menu.html:8
 #: .\sopds_web_backend\templates\sopds_menu.html:24
-#: .\sopds_web_backend\views.py:308 .\sopds_web_backend\views.py:435
+#: .\sopds_web_backend\views.py:306 .\sopds_web_backend\views.py:432
 msgid "Authors"
 msgstr "Авторы"
 
@@ -285,7 +289,7 @@ msgid "Total: %(s_book_count)s books."
 msgstr "Всего: %(s_book_count)s книг."
 
 #: .\sopds_web_backend\templates\sopds_top.html:19
-#: .\sopds_web_backend\views.py:544
+#: .\sopds_web_backend\views.py:541
 msgid "Logout"
 msgstr "Выход"
 
@@ -294,52 +298,52 @@ msgid "Settings"
 msgstr "Настройки"
 
 #: .\sopds_web_backend\templates\sopds_top.html:24
-#: .\sopds_web_backend\views.py:516
+#: .\sopds_web_backend\views.py:513
 msgid "Login"
 msgstr "Вход"
 
-#: .\sopds_web_backend\views.py:91 .\sopds_web_backend\views.py:97
+#: .\sopds_web_backend\views.py:89 .\sopds_web_backend\views.py:95
 msgid "Search by title"
 msgstr "Поиск по наименованию"
 
-#: .\sopds_web_backend\views.py:110
+#: .\sopds_web_backend\views.py:108
 msgid "Search by author"
 msgstr "Поиск по автору"
 
-#: .\sopds_web_backend\views.py:122
+#: .\sopds_web_backend\views.py:120
 msgid "Search by series"
 msgstr "Поиск по серии"
 
-#: .\sopds_web_backend\views.py:131 .\sopds_web_backend\views.py:134
+#: .\sopds_web_backend\views.py:129 .\sopds_web_backend\views.py:132
 msgid "Search by genre"
 msgstr "Поиск по жанру"
 
-#: .\sopds_web_backend\views.py:143 .\sopds_web_backend\views.py:147
+#: .\sopds_web_backend\views.py:141 .\sopds_web_backend\views.py:145
 msgid "Bookshelf"
 msgstr "Книжная полка"
 
-#: .\sopds_web_backend\views.py:157
+#: .\sopds_web_backend\views.py:155
 msgid "Doubles for book"
 msgstr "Дубликаты книги"
 
-#: .\sopds_web_backend\views.py:363
+#: .\sopds_web_backend\views.py:361
 msgid "ROOT"
 msgstr "НАЧАЛО"
 
-#: .\sopds_web_backend\views.py:401 .\sopds_web_backend\views.py:435
-#: .\sopds_web_backend\views.py:469 .\sopds_web_backend\views.py:484
-#: .\sopds_web_backend\views.py:488
+#: .\sopds_web_backend\views.py:398 .\sopds_web_backend\views.py:432
+#: .\sopds_web_backend\views.py:466 .\sopds_web_backend\views.py:481
+#: .\sopds_web_backend\views.py:485
 msgid "Select"
 msgstr "Выбор"
 
-#: .\sopds_web_backend\views.py:511
+#: .\sopds_web_backend\views.py:508
 msgid "HOME"
 msgstr "ГЛАВНАЯ"
 
-#: .\sopds_web_backend\views.py:532
+#: .\sopds_web_backend\views.py:529
 msgid "This account is not active!"
 msgstr "Учетная запись не активна!"
 
-#: .\sopds_web_backend\views.py:535
+#: .\sopds_web_backend\views.py:532
 msgid "User does not exist or the password is incorrect!"
 msgstr "Пользователь не существует или введен неправильный пароль!"
diff --git a/sopds_web_backend/templates/sopds_footer.html b/sopds_web_backend/templates/sopds_footer.html
index 095ced4..992ee0a 100644
--- a/sopds_web_backend/templates/sopds_footer.html
+++ b/sopds_web_backend/templates/sopds_footer.html
@@ -30,7 +30,7 @@
 </p>
 <p style="font-size:90%;">
 <b>{% trans "Last collection scan date:" %}</b> 
-<span class="label">{{ stats.lastscan_date }}</span> 
+<span class="label"> {% if stats.lastscan_date %}{{ stats.lastscan_date }}{% else %}{%  trans "Never" %}{% endif %}</span>
 </p>
 </div>
 <div class="large-4 columns" style="padding:0; margin-top:1rem;">
diff --git a/sopds_web_backend/views.py b/sopds_web_backend/views.py
index 64ca9ab..987496d 100644
--- a/sopds_web_backend/views.py
+++ b/sopds_web_backend/views.py
@@ -60,7 +60,7 @@ def sopds_processor(request):
                    
     args['random_book'] = random_book
     stats = { d['name']:d['value'] for d in Counter.obj.all().values() }
-    stats['lastscan_date']=Counter.obj.get(name='allbooks').update_time
+    stats['lastscan_date']=Counter.objects.get_lastscan()
     args['stats'] = stats
   
     return args
-- 
GitLab