Commit 6191de1d authored by Shelepnev Dmitry's avatar Shelepnev Dmitry
Browse files

Simple redesigne urls

parent a611dc25
Loading
Loading
Loading
Loading
+52 −41
Original line number Diff line number Diff line
@@ -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:       
@@ -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']
@@ -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 {
@@ -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 {
@@ -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']
@@ -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):
@@ -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"),)
@@ -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
              
@@ -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"),)
@@ -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"),)
@@ -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"),)
@@ -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"),)
+77 −46
Original line number Diff line number Diff line
@@ -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"
@@ -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