diff --git a/opds_catalog/locale/ru/LC_MESSAGES/django.mo b/opds_catalog/locale/ru/LC_MESSAGES/django.mo index 6edafff2e765cfb0a0573420d1984046b2504017..90d40bf9f82ebe36a6548f65bc4384659f1b4051 100644 Binary files a/opds_catalog/locale/ru/LC_MESSAGES/django.mo and b/opds_catalog/locale/ru/LC_MESSAGES/django.mo differ diff --git a/opds_catalog/locale/ru/LC_MESSAGES/django.po b/opds_catalog/locale/ru/LC_MESSAGES/django.po index 9b69d52bdb507749f408ad00b2d4c299c554e653..37037acc7f7be76d3650648f8b776ece7bc0a1c0 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 2d29a89b7b63fcda83e5a9531e1594037efe039a..81c9a6e04686d7171157ea48ce61cb476510120f 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 Binary files a/sopds/locale/ru/LC_MESSAGES/django.mo and b/sopds/locale/ru/LC_MESSAGES/django.mo differ diff --git a/sopds/locale/ru/LC_MESSAGES/django.po b/sopds/locale/ru/LC_MESSAGES/django.po index bc58a87432f0f6bfb8811a7d7cb27946269f1b21..756e73240f191bf3ce228a7e07bae1ff21526554 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 Binary files a/sopds_web_backend/locale/ru/LC_MESSAGES/django.mo and b/sopds_web_backend/locale/ru/LC_MESSAGES/django.mo differ diff --git a/sopds_web_backend/locale/ru/LC_MESSAGES/django.po b/sopds_web_backend/locale/ru/LC_MESSAGES/django.po index 594622f1c3bc8402900281ed7498ee3f389bced1..776549c8bb47fdeb12c094947ba6d57b8993d90b 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 095ced40a629d27cfc7f65f881ce24cf07c895a6..992ee0ae3758272c3f106e41e5871231a32478e4 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 64ca9abdf9a0b6849563fefa01dd1052b526ac5b..987496d090671acf6052bd9c4549a2d731d1a2a0 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