Loading opds_catalog/__pycache__/feeds.cpython-35.pyc +322 B (35.8 KiB) File changed.No diff preview for this file type. View original file View changed file opds_catalog/__pycache__/urls.cpython-35.pyc +27 B (2.68 KiB) File changed.No diff preview for this file type. View original file View changed file opds_catalog/feeds.py +52 −41 Original line number Diff line number Diff line Loading @@ -115,10 +115,10 @@ class opdsFeed(Atom1Feed): handler.addQuickElement("name", "%s %s"%(a.last_name,a.first_name)) #handler.addQuickElement("uri", item['author_link']) handler.endElement("author") handler.addQuickElement("link", "", {"href": reverse("opds_catalog:searchbooks", kwargs={"searchtype":'abooks', "searchterms":a.id}), handler.addQuickElement("link", "", {"href": reverse("opds_catalog:searchbooks", kwargs={"searchtype":'a', "searchterms":a.id}), "rel": "related", "type":"application/atom+xml;profile=opds-catalog", "title":_("All books by %s %s")%(a.last_name,a.first_name)}) "title":_("All books by %(last_name)s %(first_name)s")%{"last_name":a.last_name,"first_name":a.first_name}}) handler.characters("\n") if item.get("genres") is not None: Loading Loading @@ -304,13 +304,12 @@ class SearchTypesFeed(AuthFeed): def item_link(self, item): if item["id"] == 1: return reverse("opds_catalog:searchbooks", kwargs={"searchtype":"books", "searchterms":item["term"]}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":"m", "searchterms":item["term"]}) elif item["id"] == 2: return reverse("opds_catalog:searchauthors", kwargs={"searchtype":"authors", "searchterms":item["term"]}) return reverse("opds_catalog:searchauthors", kwargs={"searchtype":"m", "searchterms":item["term"]}) elif item["id"] == 3: return reverse("opds_catalog:searchseries", kwargs={"searchtype":"series", "searchterms":item["term"]}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":"books", "searchterms":item["term"]}) return reverse("opds_catalog:searchseries", kwargs={"searchtype":"m", "searchterms":item["term"]}) return None def item_title(self, item): return item['title'] Loading @@ -336,56 +335,63 @@ class SearchBooksFeed(AuthFeed): def title(self, obj): return "%s | %s"%(settings.TITLE,_("Books found")) def get_object(self, request, searchterms, searchterms0, searchtype, page=1): def get_object(self, request, searchtype="m", searchterms=None, searchterms0=None, page=1): if not isinstance(page, int): page = int(page) # Поиск книг по подсроке if searchtype == 'books': if searchtype == 'm': books = Book.objects.extra(where=["upper(title) like %s"], params=["%%%s%%"%searchterms.upper()]) # Поиск книг по начальной подстроке elif searchtype == 'sbooks': elif searchtype == 'b': books = Book.objects.extra(where=["upper(title) like %s"], params=["%s%%"%searchterms.upper()]) # Поиск книг по автору elif searchtype == 'abooks': elif searchtype == 'a': try: author_id = int(searchterms) except: author_id = 0 books = Book.objects.filter(authors=author_id) # Поиск книг по серии elif searchtype == 'rbooks': elif searchtype == 's': try: ser_id = int(searchterms) except: ser_id = 0 books = Book.objects.filter(series=ser_id) # Поиск книг по автору и серии elif searchtype == 'vbooks': elif searchtype == 'as': try: ser_id = int(searchterms0) except: ser_id = 0 try: author_id = int(searchterms) except: ser_id = 0 author_id = 0 books = Book.objects.filter(author=author_id, series=ser_id) books = Book.objects.filter(authors=author_id, series=ser_id if ser_id else None) return {"books":books, "searchterms":searchterms, "searchtype":searchtype, "page":page} return {"books":books, "searchterms":searchterms, "searchterms0":searchterms0, "searchtype":searchtype, "page":page} def get_link_kwargs(self, obj): kwargs={"searchtype":obj["searchtype"], "searchterms":obj["searchterms"]} if obj.get("serarchterms0") is not None: kwargs["searchterms0"]=obj["serarchterms0"] return kwargs def link(self, obj): return reverse("opds_catalog:searchbooks", kwargs={"searchtype":obj["searchtype"], "searchterms":obj["searchterms"]}) return reverse("opds_catalog:searchbooks", kwargs=self.get_link_kwargs(obj)) def feed_extra_kwargs(self, obj): kwargs = self.get_link_kwargs(obj) if obj["page"] != 1: prev_url = reverse("opds_catalog:searchbooks", kwargs={"searchtype":obj["searchtype"], "searchterms":obj["searchterms"], "page":(obj["page"]-1)}) kwargs["page"]=obj["page"]-1 prev_url = reverse("opds_catalog:searchbooks", kwargs=kwargs) else: prev_url = None if obj["page"]*settings.MAXITEMS<obj["books"].count(): next_url = reverse("opds_catalog:searchbooks", kwargs={"searchtype":obj["searchtype"], "searchterms":obj["searchterms"], "page":(obj["page"]+1)}) kwargs["page"]=obj["page"]+1 next_url = reverse("opds_catalog:searchbooks", kwargs=kwargs) else: next_url = None return { Loading Loading @@ -445,7 +451,7 @@ class SelectSeriesFeed(AuthFeed): return author_id def link(self, obj): return reverse("opds_catalog:searchbooks",kwargs={'searchtype':'asbooks','searchterms':obj}) return reverse("opds_catalog:searchbooks",kwargs={'searchtype':'as','searchterms':obj}) def feed_extra_kwargs(self, obj): return { Loading @@ -463,11 +469,11 @@ class SelectSeriesFeed(AuthFeed): def item_link(self, item): if item["id"] == 1: return reverse("opds_catalog:searchseries", kwargs={"searchtype":'aseries', "searchterms":item["author"]}) return reverse("opds_catalog:searchseries", kwargs={"searchtype":'a', "searchterms":item["author"]}) elif item["id"] == 2: return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'abooks', "searchterms":item["author"]}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'as', "searchterms":item["author"], "searchterms0":0}) elif item["id"] == 3: return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'abooks', "searchterms":item["author"]}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'a', "searchterms":item["author"]}) def item_title(self, item): return item['title'] Loading Loading @@ -496,11 +502,10 @@ class SearchAuthorsFeed(AuthFeed): if not isinstance(page, int): page = int(page) if searchtype == 'authors': if searchtype == 'm': authors = Author.objects.extra(where=["upper(last_name) like %s"], params=["%%%s%%"%searchterms.upper()]) elif searchtype == 'sauthors': elif searchtype == 'b': authors = Author.objects.extra(where=["upper(last_name) like %s"], params=["%s%%"%searchterms.upper()]) return {"authors":authors, "searchterms":searchterms, "searchtype":searchtype, "page":page} def link(self, obj): Loading Loading @@ -545,7 +550,7 @@ class SearchAuthorsFeed(AuthFeed): return "a:%s"%(item.id) def item_link(self, item): return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'asbooks', "searchterms":item.id}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":"as", "searchterms":item.id}) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) Loading @@ -558,17 +563,18 @@ class SearchSeriesFeed(AuthFeed): return "%s | %s"%(settings.TITLE,_("Series found")) def get_object(self, request, searchterms, searchtype, page=1): self.author_id = None if not isinstance(page, int): page = int(page) if searchtype == 'series': if searchtype == 'm': series = Series.objects.extra(where=["upper(ser) like %s"], params=["%%%s%%"%searchterms.upper()]) elif searchtype == 'sseries': elif searchtype == 'b': series = Series.objects.extra(where=["upper(ser) like %s"], params=["%s%%"%searchterms.upper()]) elif searchtype == 'aseries': elif searchtype == 'a': try: author_id = int(searchterms) books = Book.objects.filter(authors=author_id) self.author_id = int(searchterms) books = Book.objects.filter(authors=self.author_id) except: books = None Loading Loading @@ -618,7 +624,12 @@ class SearchSeriesFeed(AuthFeed): return "a:%s"%(item.id) def item_link(self, item): return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'rbooks', "searchterms":item.id}) if self.author_id: kwargs={"searchtype":"as", "searchterms":self.author_id,"searchterms0":item.id} else: kwargs={"searchtype":"s", "searchterms":item.id} return reverse("opds_catalog:searchbooks", kwargs=kwargs) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) Loading Loading @@ -720,7 +731,7 @@ class BooksFeed(AuthFeed): if item.cnt>=settings.SPLITITEMS: return reverse("opds_catalog:chars_books", kwargs={"lang_code":self.lang_code,"chars":item.id}) else: return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'sbooks', "searchterms":item.id}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'b', "searchterms":item.id}) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) Loading Loading @@ -777,7 +788,7 @@ class AuthorsFeed(AuthFeed): if item.cnt>=settings.SPLITITEMS: return reverse("opds_catalog:chars_authors", kwargs={"lang_code":self.lang_code,"chars":item.id}) else: return reverse("opds_catalog:searchauthors", kwargs={"searchtype":'sauthors', "searchterms":item.id}) return reverse("opds_catalog:searchauthors", kwargs={"searchtype":'b', "searchterms":item.id}) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) Loading Loading @@ -834,7 +845,7 @@ class SeriesFeed(AuthFeed): if item.cnt>=settings.SPLITITEMS: return reverse("opds_catalog:chars_series", kwargs={"lang_code":self.lang_code,"chars":item.id}) else: return reverse("opds_catalog:searchseries", kwargs={"searchtype":'sseries', "searchterms":item.id}) return reverse("opds_catalog:searchseries", kwargs={"searchtype":'b', "searchterms":item.id}) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) opds_catalog/locale/ru/LC_MESSAGES/django.mo +848 B (3.72 KiB) File changed.No diff preview for this file type. View original file View changed file opds_catalog/locale/ru/LC_MESSAGES/django.po +77 −46 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-07-25 10:48+0300\n" "POT-Creation-Date: 2016-08-02 15:50+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" Loading @@ -20,172 +20,203 @@ 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" #: .\opds_catalog\feeds.py:130 .\opds_catalog\feeds.py:188 #: .\opds_catalog\feeds.py:190 .\opds_catalog\tests\test_feeds.py:20 #: .\opds_catalog\feeds.py:121 #, python-format msgid "All books by %(last_name)s %(first_name)s" msgstr "Все книги автора %(last_name)s %(first_name)s" #: .\opds_catalog\feeds.py:147 .\opds_catalog\feeds.py:205 #: .\opds_catalog\feeds.py:207 .\opds_catalog\tests\test_feeds.py:20 msgid "By catalogs" msgstr "По каталогам" #: .\opds_catalog\feeds.py:131 .\opds_catalog\tests\test_feeds.py:21 #: .\opds_catalog\feeds.py:148 .\opds_catalog\tests\test_feeds.py:21 #, python-format msgid "Catalogs: %(catalogs)s, books: %(books)s." msgstr "Каталогов: %(catalogs)s, книг: %(books)s." #: .\opds_catalog\feeds.py:132 #: .\opds_catalog\feeds.py:149 msgid "By authors" msgstr "По авторам" #: .\opds_catalog\feeds.py:133 .\opds_catalog\tests\test_feeds.py:22 #: .\opds_catalog\feeds.py:150 .\opds_catalog\tests\test_feeds.py:22 #, python-format msgid "Authors: %(authors)s." msgstr "Авторов: %(authors)s." #: .\opds_catalog\feeds.py:134 #: .\opds_catalog\feeds.py:151 msgid "By titles" msgstr "По наименованиям" #: .\opds_catalog\feeds.py:135 #: .\opds_catalog\feeds.py:152 #, python-format msgid "Books: %(books)s." msgstr "Книг: %(books)s." #: .\opds_catalog\feeds.py:136 #: .\opds_catalog\feeds.py:153 msgid "By genres" msgstr "По жанрам" #: .\opds_catalog\feeds.py:137 .\opds_catalog\tests\test_feeds.py:23 #: .\opds_catalog\feeds.py:154 .\opds_catalog\tests\test_feeds.py:23 #, python-format msgid "Genres: %(genres)s." msgstr "Жанров: %(genres)s." #: .\opds_catalog\feeds.py:138 #: .\opds_catalog\feeds.py:155 msgid "By series" msgstr "По сериям" #: .\opds_catalog\feeds.py:139 #: .\opds_catalog\feeds.py:156 #, python-format msgid "Series: %(series)s." msgstr "Серий: %(series)s." #: .\opds_catalog\feeds.py:143 #, fuzzy, python-format #| msgid "Book shelf" #: .\opds_catalog\feeds.py:160 #, python-format msgid "%(username)s Book shelf" msgstr "Книжная полка %(username)s" msgstr "Книжная полка (%(username)s)" #: .\opds_catalog\feeds.py:144 #, fuzzy, python-format #| msgid "Books readed: %(bookshelf)s." #: .\opds_catalog\feeds.py:161 #, python-format msgid "%(username)s books readed: %(bookshelf)s." msgstr "Книг прочитано (%(username)s): %(bookshelf)s." #: .\opds_catalog\feeds.py:283 .\opds_catalog\tests\test_feeds.py:56 #: .\opds_catalog\feeds.py:300 .\opds_catalog\tests\test_feeds.py:56 msgid "Search by titles" msgstr "Поиск по наименованиям" #: .\opds_catalog\feeds.py:283 #: .\opds_catalog\feeds.py:300 msgid "Search books by title" msgstr "Поиск книг по наименованию" #: .\opds_catalog\feeds.py:284 #: .\opds_catalog\feeds.py:301 msgid "Search by authors" msgstr "Поиск авторов" #: .\opds_catalog\feeds.py:284 #: .\opds_catalog\feeds.py:301 msgid "Search authors by name" msgstr "Поиск авторов по имени" #: .\opds_catalog\feeds.py:285 #: .\opds_catalog\feeds.py:302 msgid "Search series" msgstr "Поиск серий" #: .\opds_catalog\feeds.py:320 #: .\opds_catalog\feeds.py:336 msgid "Books found" msgstr "Найдены книги" #: .\opds_catalog\feeds.py:400 #: .\opds_catalog\feeds.py:444 msgid "Series by authors select" msgstr "Выбор серий у автора" #: .\opds_catalog\feeds.py:465 msgid "Books by series" msgstr "Книги по сериям" #: .\opds_catalog\feeds.py:465 msgid "Books by author and series" msgstr "" #: .\opds_catalog\feeds.py:466 msgid "Books outside series" msgstr "Книги вне серий" #: .\opds_catalog\feeds.py:466 msgid "Books by author outside series" msgstr "Книги автора вне серий" #: .\opds_catalog\feeds.py:467 msgid "Books by alphabet" msgstr "Книги по алфавиту" #: .\opds_catalog\feeds.py:467 msgid "Books by author alphabetical order" msgstr "Книги автора в алфавитном порядке" #: .\opds_catalog\feeds.py:499 msgid "Authors found" msgstr "Найдены авторы" #: .\opds_catalog\feeds.py:449 .\opds_catalog\feeds.py:514 #: .\opds_catalog\feeds.py:547 .\opds_catalog\feeds.py:621 #, python-format msgid "Books count: %s" msgstr "Всего: %s книг" #: .\opds_catalog\feeds.py:465 #: .\opds_catalog\feeds.py:563 msgid "Series found" msgstr "Найдены серии" #: .\opds_catalog\feeds.py:533 #: .\opds_catalog\feeds.py:645 msgid "Select language" msgstr "Выбор алфавита" #: .\opds_catalog\feeds.py:544 .\opds_catalog\tests\test_feeds.py:99 #: .\opds_catalog\feeds.py:656 .\opds_catalog\tests\test_feeds.py:102 msgid "Cyrillic" msgstr "Кириллица (РУС)" #: .\opds_catalog\feeds.py:545 .\opds_catalog\tests\test_feeds.py:100 #: .\opds_catalog\feeds.py:657 .\opds_catalog\tests\test_feeds.py:103 msgid "Latin" msgstr "Латинница (LAT)" #: .\opds_catalog\feeds.py:546 .\opds_catalog\tests\test_feeds.py:101 #: .\opds_catalog\feeds.py:658 .\opds_catalog\tests\test_feeds.py:104 msgid "Digits" msgstr "Цифры (0..9)" #: .\opds_catalog\feeds.py:547 .\opds_catalog\tests\test_feeds.py:102 #: .\opds_catalog\feeds.py:659 .\opds_catalog\tests\test_feeds.py:105 msgid "Other symbols" msgstr "Другие символы" #: .\opds_catalog\feeds.py:548 .\opds_catalog\tests\test_feeds.py:103 #: .\opds_catalog\feeds.py:660 .\opds_catalog\tests\test_feeds.py:106 msgid "Show all" msgstr "Показать все" #: .\opds_catalog\feeds.py:578 #: .\opds_catalog\feeds.py:691 msgid "Select books by substring" msgstr "Поиск книг по подстроке" #: .\opds_catalog\feeds.py:615 #: .\opds_catalog\feeds.py:728 #, python-format msgid "Found: %s books" msgstr "Найдено %s книг" #: .\opds_catalog\feeds.py:635 #: .\opds_catalog\feeds.py:748 msgid "Select authors by substring" msgstr "Поиск авторов по подстроке" #: .\opds_catalog\feeds.py:672 #: .\opds_catalog\feeds.py:785 #, python-format msgid "Found: %s authors" msgstr "Найдено %s авторов" #: .\opds_catalog\feeds.py:692 #: .\opds_catalog\feeds.py:805 msgid "Select series by substring" msgstr "Поиск серий по подстроке" #: .\opds_catalog\feeds.py:729 #: .\opds_catalog\feeds.py:842 #, python-format msgid "Found: %s series" msgstr "Найдено %s серий" #: .\opds_catalog\templates\book_description.html:6 #: .\opds_catalog\templates\book_description.html:7 msgid "Book name:" msgstr "Название:" #: .\opds_catalog\templates\book_description.html:7 #: .\opds_catalog\templates\book_description.html:8 msgid "Authors:" msgstr "Авторы:" #: .\opds_catalog\templates\book_description.html:8 #: .\opds_catalog\templates\book_description.html:9 msgid "Genres:" msgstr "Жанры:" #: .\opds_catalog\templates\book_description.html:9 #: .\opds_catalog\templates\book_description.html:10 msgid "File:" msgstr "Файл:" #: .\opds_catalog\templates\book_description.html:10 #: .\opds_catalog\templates\book_description.html:11 msgid "File size:" msgstr "Размер файла:" #: .\opds_catalog\templates\book_description.html:11 #: .\opds_catalog\templates\book_description.html:12 msgid "Changes date:" msgstr "Дата правки:" Loading
opds_catalog/__pycache__/feeds.cpython-35.pyc +322 B (35.8 KiB) File changed.No diff preview for this file type. View original file View changed file
opds_catalog/__pycache__/urls.cpython-35.pyc +27 B (2.68 KiB) File changed.No diff preview for this file type. View original file View changed file
opds_catalog/feeds.py +52 −41 Original line number Diff line number Diff line Loading @@ -115,10 +115,10 @@ class opdsFeed(Atom1Feed): handler.addQuickElement("name", "%s %s"%(a.last_name,a.first_name)) #handler.addQuickElement("uri", item['author_link']) handler.endElement("author") handler.addQuickElement("link", "", {"href": reverse("opds_catalog:searchbooks", kwargs={"searchtype":'abooks', "searchterms":a.id}), handler.addQuickElement("link", "", {"href": reverse("opds_catalog:searchbooks", kwargs={"searchtype":'a', "searchterms":a.id}), "rel": "related", "type":"application/atom+xml;profile=opds-catalog", "title":_("All books by %s %s")%(a.last_name,a.first_name)}) "title":_("All books by %(last_name)s %(first_name)s")%{"last_name":a.last_name,"first_name":a.first_name}}) handler.characters("\n") if item.get("genres") is not None: Loading Loading @@ -304,13 +304,12 @@ class SearchTypesFeed(AuthFeed): def item_link(self, item): if item["id"] == 1: return reverse("opds_catalog:searchbooks", kwargs={"searchtype":"books", "searchterms":item["term"]}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":"m", "searchterms":item["term"]}) elif item["id"] == 2: return reverse("opds_catalog:searchauthors", kwargs={"searchtype":"authors", "searchterms":item["term"]}) return reverse("opds_catalog:searchauthors", kwargs={"searchtype":"m", "searchterms":item["term"]}) elif item["id"] == 3: return reverse("opds_catalog:searchseries", kwargs={"searchtype":"series", "searchterms":item["term"]}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":"books", "searchterms":item["term"]}) return reverse("opds_catalog:searchseries", kwargs={"searchtype":"m", "searchterms":item["term"]}) return None def item_title(self, item): return item['title'] Loading @@ -336,56 +335,63 @@ class SearchBooksFeed(AuthFeed): def title(self, obj): return "%s | %s"%(settings.TITLE,_("Books found")) def get_object(self, request, searchterms, searchterms0, searchtype, page=1): def get_object(self, request, searchtype="m", searchterms=None, searchterms0=None, page=1): if not isinstance(page, int): page = int(page) # Поиск книг по подсроке if searchtype == 'books': if searchtype == 'm': books = Book.objects.extra(where=["upper(title) like %s"], params=["%%%s%%"%searchterms.upper()]) # Поиск книг по начальной подстроке elif searchtype == 'sbooks': elif searchtype == 'b': books = Book.objects.extra(where=["upper(title) like %s"], params=["%s%%"%searchterms.upper()]) # Поиск книг по автору elif searchtype == 'abooks': elif searchtype == 'a': try: author_id = int(searchterms) except: author_id = 0 books = Book.objects.filter(authors=author_id) # Поиск книг по серии elif searchtype == 'rbooks': elif searchtype == 's': try: ser_id = int(searchterms) except: ser_id = 0 books = Book.objects.filter(series=ser_id) # Поиск книг по автору и серии elif searchtype == 'vbooks': elif searchtype == 'as': try: ser_id = int(searchterms0) except: ser_id = 0 try: author_id = int(searchterms) except: ser_id = 0 author_id = 0 books = Book.objects.filter(author=author_id, series=ser_id) books = Book.objects.filter(authors=author_id, series=ser_id if ser_id else None) return {"books":books, "searchterms":searchterms, "searchtype":searchtype, "page":page} return {"books":books, "searchterms":searchterms, "searchterms0":searchterms0, "searchtype":searchtype, "page":page} def get_link_kwargs(self, obj): kwargs={"searchtype":obj["searchtype"], "searchterms":obj["searchterms"]} if obj.get("serarchterms0") is not None: kwargs["searchterms0"]=obj["serarchterms0"] return kwargs def link(self, obj): return reverse("opds_catalog:searchbooks", kwargs={"searchtype":obj["searchtype"], "searchterms":obj["searchterms"]}) return reverse("opds_catalog:searchbooks", kwargs=self.get_link_kwargs(obj)) def feed_extra_kwargs(self, obj): kwargs = self.get_link_kwargs(obj) if obj["page"] != 1: prev_url = reverse("opds_catalog:searchbooks", kwargs={"searchtype":obj["searchtype"], "searchterms":obj["searchterms"], "page":(obj["page"]-1)}) kwargs["page"]=obj["page"]-1 prev_url = reverse("opds_catalog:searchbooks", kwargs=kwargs) else: prev_url = None if obj["page"]*settings.MAXITEMS<obj["books"].count(): next_url = reverse("opds_catalog:searchbooks", kwargs={"searchtype":obj["searchtype"], "searchterms":obj["searchterms"], "page":(obj["page"]+1)}) kwargs["page"]=obj["page"]+1 next_url = reverse("opds_catalog:searchbooks", kwargs=kwargs) else: next_url = None return { Loading Loading @@ -445,7 +451,7 @@ class SelectSeriesFeed(AuthFeed): return author_id def link(self, obj): return reverse("opds_catalog:searchbooks",kwargs={'searchtype':'asbooks','searchterms':obj}) return reverse("opds_catalog:searchbooks",kwargs={'searchtype':'as','searchterms':obj}) def feed_extra_kwargs(self, obj): return { Loading @@ -463,11 +469,11 @@ class SelectSeriesFeed(AuthFeed): def item_link(self, item): if item["id"] == 1: return reverse("opds_catalog:searchseries", kwargs={"searchtype":'aseries', "searchterms":item["author"]}) return reverse("opds_catalog:searchseries", kwargs={"searchtype":'a', "searchterms":item["author"]}) elif item["id"] == 2: return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'abooks', "searchterms":item["author"]}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'as', "searchterms":item["author"], "searchterms0":0}) elif item["id"] == 3: return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'abooks', "searchterms":item["author"]}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'a', "searchterms":item["author"]}) def item_title(self, item): return item['title'] Loading Loading @@ -496,11 +502,10 @@ class SearchAuthorsFeed(AuthFeed): if not isinstance(page, int): page = int(page) if searchtype == 'authors': if searchtype == 'm': authors = Author.objects.extra(where=["upper(last_name) like %s"], params=["%%%s%%"%searchterms.upper()]) elif searchtype == 'sauthors': elif searchtype == 'b': authors = Author.objects.extra(where=["upper(last_name) like %s"], params=["%s%%"%searchterms.upper()]) return {"authors":authors, "searchterms":searchterms, "searchtype":searchtype, "page":page} def link(self, obj): Loading Loading @@ -545,7 +550,7 @@ class SearchAuthorsFeed(AuthFeed): return "a:%s"%(item.id) def item_link(self, item): return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'asbooks', "searchterms":item.id}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":"as", "searchterms":item.id}) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) Loading @@ -558,17 +563,18 @@ class SearchSeriesFeed(AuthFeed): return "%s | %s"%(settings.TITLE,_("Series found")) def get_object(self, request, searchterms, searchtype, page=1): self.author_id = None if not isinstance(page, int): page = int(page) if searchtype == 'series': if searchtype == 'm': series = Series.objects.extra(where=["upper(ser) like %s"], params=["%%%s%%"%searchterms.upper()]) elif searchtype == 'sseries': elif searchtype == 'b': series = Series.objects.extra(where=["upper(ser) like %s"], params=["%s%%"%searchterms.upper()]) elif searchtype == 'aseries': elif searchtype == 'a': try: author_id = int(searchterms) books = Book.objects.filter(authors=author_id) self.author_id = int(searchterms) books = Book.objects.filter(authors=self.author_id) except: books = None Loading Loading @@ -618,7 +624,12 @@ class SearchSeriesFeed(AuthFeed): return "a:%s"%(item.id) def item_link(self, item): return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'rbooks', "searchterms":item.id}) if self.author_id: kwargs={"searchtype":"as", "searchterms":self.author_id,"searchterms0":item.id} else: kwargs={"searchtype":"s", "searchterms":item.id} return reverse("opds_catalog:searchbooks", kwargs=kwargs) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) Loading Loading @@ -720,7 +731,7 @@ class BooksFeed(AuthFeed): if item.cnt>=settings.SPLITITEMS: return reverse("opds_catalog:chars_books", kwargs={"lang_code":self.lang_code,"chars":item.id}) else: return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'sbooks', "searchterms":item.id}) return reverse("opds_catalog:searchbooks", kwargs={"searchtype":'b', "searchterms":item.id}) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) Loading Loading @@ -777,7 +788,7 @@ class AuthorsFeed(AuthFeed): if item.cnt>=settings.SPLITITEMS: return reverse("opds_catalog:chars_authors", kwargs={"lang_code":self.lang_code,"chars":item.id}) else: return reverse("opds_catalog:searchauthors", kwargs={"searchtype":'sauthors', "searchterms":item.id}) return reverse("opds_catalog:searchauthors", kwargs={"searchtype":'b', "searchterms":item.id}) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),) Loading Loading @@ -834,7 +845,7 @@ class SeriesFeed(AuthFeed): if item.cnt>=settings.SPLITITEMS: return reverse("opds_catalog:chars_series", kwargs={"lang_code":self.lang_code,"chars":item.id}) else: return reverse("opds_catalog:searchseries", kwargs={"searchtype":'sseries', "searchterms":item.id}) return reverse("opds_catalog:searchseries", kwargs={"searchtype":'b', "searchterms":item.id}) def item_enclosures(self, item): return (opdsEnclosure(self.item_link(item),"application/atom+xml;profile=opds-catalog;kind=navigation", "subsection"),)
opds_catalog/locale/ru/LC_MESSAGES/django.mo +848 B (3.72 KiB) File changed.No diff preview for this file type. View original file View changed file
opds_catalog/locale/ru/LC_MESSAGES/django.po +77 −46 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-07-25 10:48+0300\n" "POT-Creation-Date: 2016-08-02 15:50+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" Loading @@ -20,172 +20,203 @@ 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" #: .\opds_catalog\feeds.py:130 .\opds_catalog\feeds.py:188 #: .\opds_catalog\feeds.py:190 .\opds_catalog\tests\test_feeds.py:20 #: .\opds_catalog\feeds.py:121 #, python-format msgid "All books by %(last_name)s %(first_name)s" msgstr "Все книги автора %(last_name)s %(first_name)s" #: .\opds_catalog\feeds.py:147 .\opds_catalog\feeds.py:205 #: .\opds_catalog\feeds.py:207 .\opds_catalog\tests\test_feeds.py:20 msgid "By catalogs" msgstr "По каталогам" #: .\opds_catalog\feeds.py:131 .\opds_catalog\tests\test_feeds.py:21 #: .\opds_catalog\feeds.py:148 .\opds_catalog\tests\test_feeds.py:21 #, python-format msgid "Catalogs: %(catalogs)s, books: %(books)s." msgstr "Каталогов: %(catalogs)s, книг: %(books)s." #: .\opds_catalog\feeds.py:132 #: .\opds_catalog\feeds.py:149 msgid "By authors" msgstr "По авторам" #: .\opds_catalog\feeds.py:133 .\opds_catalog\tests\test_feeds.py:22 #: .\opds_catalog\feeds.py:150 .\opds_catalog\tests\test_feeds.py:22 #, python-format msgid "Authors: %(authors)s." msgstr "Авторов: %(authors)s." #: .\opds_catalog\feeds.py:134 #: .\opds_catalog\feeds.py:151 msgid "By titles" msgstr "По наименованиям" #: .\opds_catalog\feeds.py:135 #: .\opds_catalog\feeds.py:152 #, python-format msgid "Books: %(books)s." msgstr "Книг: %(books)s." #: .\opds_catalog\feeds.py:136 #: .\opds_catalog\feeds.py:153 msgid "By genres" msgstr "По жанрам" #: .\opds_catalog\feeds.py:137 .\opds_catalog\tests\test_feeds.py:23 #: .\opds_catalog\feeds.py:154 .\opds_catalog\tests\test_feeds.py:23 #, python-format msgid "Genres: %(genres)s." msgstr "Жанров: %(genres)s." #: .\opds_catalog\feeds.py:138 #: .\opds_catalog\feeds.py:155 msgid "By series" msgstr "По сериям" #: .\opds_catalog\feeds.py:139 #: .\opds_catalog\feeds.py:156 #, python-format msgid "Series: %(series)s." msgstr "Серий: %(series)s." #: .\opds_catalog\feeds.py:143 #, fuzzy, python-format #| msgid "Book shelf" #: .\opds_catalog\feeds.py:160 #, python-format msgid "%(username)s Book shelf" msgstr "Книжная полка %(username)s" msgstr "Книжная полка (%(username)s)" #: .\opds_catalog\feeds.py:144 #, fuzzy, python-format #| msgid "Books readed: %(bookshelf)s." #: .\opds_catalog\feeds.py:161 #, python-format msgid "%(username)s books readed: %(bookshelf)s." msgstr "Книг прочитано (%(username)s): %(bookshelf)s." #: .\opds_catalog\feeds.py:283 .\opds_catalog\tests\test_feeds.py:56 #: .\opds_catalog\feeds.py:300 .\opds_catalog\tests\test_feeds.py:56 msgid "Search by titles" msgstr "Поиск по наименованиям" #: .\opds_catalog\feeds.py:283 #: .\opds_catalog\feeds.py:300 msgid "Search books by title" msgstr "Поиск книг по наименованию" #: .\opds_catalog\feeds.py:284 #: .\opds_catalog\feeds.py:301 msgid "Search by authors" msgstr "Поиск авторов" #: .\opds_catalog\feeds.py:284 #: .\opds_catalog\feeds.py:301 msgid "Search authors by name" msgstr "Поиск авторов по имени" #: .\opds_catalog\feeds.py:285 #: .\opds_catalog\feeds.py:302 msgid "Search series" msgstr "Поиск серий" #: .\opds_catalog\feeds.py:320 #: .\opds_catalog\feeds.py:336 msgid "Books found" msgstr "Найдены книги" #: .\opds_catalog\feeds.py:400 #: .\opds_catalog\feeds.py:444 msgid "Series by authors select" msgstr "Выбор серий у автора" #: .\opds_catalog\feeds.py:465 msgid "Books by series" msgstr "Книги по сериям" #: .\opds_catalog\feeds.py:465 msgid "Books by author and series" msgstr "" #: .\opds_catalog\feeds.py:466 msgid "Books outside series" msgstr "Книги вне серий" #: .\opds_catalog\feeds.py:466 msgid "Books by author outside series" msgstr "Книги автора вне серий" #: .\opds_catalog\feeds.py:467 msgid "Books by alphabet" msgstr "Книги по алфавиту" #: .\opds_catalog\feeds.py:467 msgid "Books by author alphabetical order" msgstr "Книги автора в алфавитном порядке" #: .\opds_catalog\feeds.py:499 msgid "Authors found" msgstr "Найдены авторы" #: .\opds_catalog\feeds.py:449 .\opds_catalog\feeds.py:514 #: .\opds_catalog\feeds.py:547 .\opds_catalog\feeds.py:621 #, python-format msgid "Books count: %s" msgstr "Всего: %s книг" #: .\opds_catalog\feeds.py:465 #: .\opds_catalog\feeds.py:563 msgid "Series found" msgstr "Найдены серии" #: .\opds_catalog\feeds.py:533 #: .\opds_catalog\feeds.py:645 msgid "Select language" msgstr "Выбор алфавита" #: .\opds_catalog\feeds.py:544 .\opds_catalog\tests\test_feeds.py:99 #: .\opds_catalog\feeds.py:656 .\opds_catalog\tests\test_feeds.py:102 msgid "Cyrillic" msgstr "Кириллица (РУС)" #: .\opds_catalog\feeds.py:545 .\opds_catalog\tests\test_feeds.py:100 #: .\opds_catalog\feeds.py:657 .\opds_catalog\tests\test_feeds.py:103 msgid "Latin" msgstr "Латинница (LAT)" #: .\opds_catalog\feeds.py:546 .\opds_catalog\tests\test_feeds.py:101 #: .\opds_catalog\feeds.py:658 .\opds_catalog\tests\test_feeds.py:104 msgid "Digits" msgstr "Цифры (0..9)" #: .\opds_catalog\feeds.py:547 .\opds_catalog\tests\test_feeds.py:102 #: .\opds_catalog\feeds.py:659 .\opds_catalog\tests\test_feeds.py:105 msgid "Other symbols" msgstr "Другие символы" #: .\opds_catalog\feeds.py:548 .\opds_catalog\tests\test_feeds.py:103 #: .\opds_catalog\feeds.py:660 .\opds_catalog\tests\test_feeds.py:106 msgid "Show all" msgstr "Показать все" #: .\opds_catalog\feeds.py:578 #: .\opds_catalog\feeds.py:691 msgid "Select books by substring" msgstr "Поиск книг по подстроке" #: .\opds_catalog\feeds.py:615 #: .\opds_catalog\feeds.py:728 #, python-format msgid "Found: %s books" msgstr "Найдено %s книг" #: .\opds_catalog\feeds.py:635 #: .\opds_catalog\feeds.py:748 msgid "Select authors by substring" msgstr "Поиск авторов по подстроке" #: .\opds_catalog\feeds.py:672 #: .\opds_catalog\feeds.py:785 #, python-format msgid "Found: %s authors" msgstr "Найдено %s авторов" #: .\opds_catalog\feeds.py:692 #: .\opds_catalog\feeds.py:805 msgid "Select series by substring" msgstr "Поиск серий по подстроке" #: .\opds_catalog\feeds.py:729 #: .\opds_catalog\feeds.py:842 #, python-format msgid "Found: %s series" msgstr "Найдено %s серий" #: .\opds_catalog\templates\book_description.html:6 #: .\opds_catalog\templates\book_description.html:7 msgid "Book name:" msgstr "Название:" #: .\opds_catalog\templates\book_description.html:7 #: .\opds_catalog\templates\book_description.html:8 msgid "Authors:" msgstr "Авторы:" #: .\opds_catalog\templates\book_description.html:8 #: .\opds_catalog\templates\book_description.html:9 msgid "Genres:" msgstr "Жанры:" #: .\opds_catalog\templates\book_description.html:9 #: .\opds_catalog\templates\book_description.html:10 msgid "File:" msgstr "Файл:" #: .\opds_catalog\templates\book_description.html:10 #: .\opds_catalog\templates\book_description.html:11 msgid "File size:" msgstr "Размер файла:" #: .\opds_catalog\templates\book_description.html:11 #: .\opds_catalog\templates\book_description.html:12 msgid "Changes date:" msgstr "Дата правки:"