Loading sopds_web_backend/__pycache__/views.cpython-35.pyc +1.08 KiB (6.07 KiB) File changed.No diff preview for this file type. View original file View changed file sopds_web_backend/templates/sopds_series.html 0 → 100644 +37 −0 Original line number Diff line number Diff line {% extends "sopds_main.html" %} {% block body %} {% for s in series %} <div class="large-12 column"> <b>{{ s.ser }}</b> <a href="{% url "web:searchbooks" %}?searchtype=s&searchterms={{s.id}}"><span style="font-size:80%;">Total: {{ s.book_count }} books.</span></a> </div> {% endfor %} {% if series.paginator.num_pages > 1 %} <ul class="pagination" role="navigation" aria-label="Pagination"> <li class="pagination-previous {% if not series.has_previous %}disabled{%endif%}"> {% if series.has_previous %}<a href="{% url "web:searchseries" %}?searchtype={{searchtype}}&searchterms={{searchterms}}&page={{series.previous_page_number}}" aria-label="Previous page"> {%endif%} Previous <span class="show-for-sr">page</span> {% if series.has_previous %}</a>{%endif%} </li> {% for pn in page_range %} {% if series.number == pn %} <li class="current"><span class="show-for-sr">You're on page</span> {{pn}}</li> {% else %} <li><a href="{% url "web:searchseries" %}?searchtype={{searchtype}}&searchterms={{searchterms}}&page={{pn}}" aria-label="Page {{pn}}">{{pn}}</a></li> {% endif %} {# <li class="ellipsis" aria-hidden="true"></li> #} {% endfor %} <li class="pagination-next" {% if not series.has_next %}disabled{%endif%}> {% if series.has_next %}<a href="{% url "web:searchseries" %}?searchtype={{searchtype}}&searchterms={{searchterms}}&page={{series.next_page_number}}" aria-label="Next page">{%endif%} Next <span class="show-for-sr">page</span> {% if series.has_next %}</a>{%endif%} </li> </ul> {% else %} <div class="large-12 column"><p></p></div> {% endif %} {% endblock %} {# body #} No newline at end of file sopds_web_backend/views.py +48 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,13 @@ def SearchBooksView(request): except: author_id = 0 books = Book.objects.filter(authors=author_id) # Поиск книг по серии elif searchtype == 's': try: ser_id = int(searchterms) except: ser_id = 0 books = Book.objects.filter(series=ser_id) # Поиск дубликатов для книги elif searchtype == 'd': #try: Loading Loading @@ -107,6 +114,47 @@ def SelectSeriesView(request): #searchterms0 = int(request.POST.get('searchterms0', '')) page_num = int(request.GET.get('page', '1')) if searchtype == 'm': series = Series.objects.extra(where=["upper(ser) like %s"], params=["%%%s%%"%searchterms.upper()]) elif searchtype == 'b': series = Series.objects.extra(where=["upper(ser) like %s"], params=["%s%%"%searchterms.upper()]) elif searchtype == 'e': series = Series.objects.extra(where=["upper(ser)=%s"], params=["%s"%searchterms.upper()]) if len(series)>0: series = series.order_by('ser') # Создаем результирующее множество result = [] for row in series: p = {'id':row.id, 'ser':row.ser, 'lang_code': row.lang_code, 'book_count': Book.objects.filter(series=row).count()} result.append(p) p = Paginator(result, MAXITEMS) try: series = p.page(page_num) except InvalidPage: series = p.page(1) page_num = 1 firstpage = page_num - HALF_PAGES_LINKS lastpage = page_num + HALF_PAGES_LINKS if firstpage<1: lastpage = lastpage - firstpage + 1 firstpage = 1 if lastpage>p.num_pages: firstpage = firstpage - (lastpage-p.num_pages) lastpage = p.num_pages if firstpage<1: firstpage = 1 args['searchterms']=searchterms; args['searchtype']=searchtype; args['series']=series args['page_range']= [ i for i in range(firstpage,lastpage+1)] args['searchobject'] = 'series' return render_to_response('sopds_series.html', args) def SearchAuthorsViews(request): Loading Loading
sopds_web_backend/__pycache__/views.cpython-35.pyc +1.08 KiB (6.07 KiB) File changed.No diff preview for this file type. View original file View changed file
sopds_web_backend/templates/sopds_series.html 0 → 100644 +37 −0 Original line number Diff line number Diff line {% extends "sopds_main.html" %} {% block body %} {% for s in series %} <div class="large-12 column"> <b>{{ s.ser }}</b> <a href="{% url "web:searchbooks" %}?searchtype=s&searchterms={{s.id}}"><span style="font-size:80%;">Total: {{ s.book_count }} books.</span></a> </div> {% endfor %} {% if series.paginator.num_pages > 1 %} <ul class="pagination" role="navigation" aria-label="Pagination"> <li class="pagination-previous {% if not series.has_previous %}disabled{%endif%}"> {% if series.has_previous %}<a href="{% url "web:searchseries" %}?searchtype={{searchtype}}&searchterms={{searchterms}}&page={{series.previous_page_number}}" aria-label="Previous page"> {%endif%} Previous <span class="show-for-sr">page</span> {% if series.has_previous %}</a>{%endif%} </li> {% for pn in page_range %} {% if series.number == pn %} <li class="current"><span class="show-for-sr">You're on page</span> {{pn}}</li> {% else %} <li><a href="{% url "web:searchseries" %}?searchtype={{searchtype}}&searchterms={{searchterms}}&page={{pn}}" aria-label="Page {{pn}}">{{pn}}</a></li> {% endif %} {# <li class="ellipsis" aria-hidden="true"></li> #} {% endfor %} <li class="pagination-next" {% if not series.has_next %}disabled{%endif%}> {% if series.has_next %}<a href="{% url "web:searchseries" %}?searchtype={{searchtype}}&searchterms={{searchterms}}&page={{series.next_page_number}}" aria-label="Next page">{%endif%} Next <span class="show-for-sr">page</span> {% if series.has_next %}</a>{%endif%} </li> </ul> {% else %} <div class="large-12 column"><p></p></div> {% endif %} {% endblock %} {# body #} No newline at end of file
sopds_web_backend/views.py +48 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,13 @@ def SearchBooksView(request): except: author_id = 0 books = Book.objects.filter(authors=author_id) # Поиск книг по серии elif searchtype == 's': try: ser_id = int(searchterms) except: ser_id = 0 books = Book.objects.filter(series=ser_id) # Поиск дубликатов для книги elif searchtype == 'd': #try: Loading Loading @@ -107,6 +114,47 @@ def SelectSeriesView(request): #searchterms0 = int(request.POST.get('searchterms0', '')) page_num = int(request.GET.get('page', '1')) if searchtype == 'm': series = Series.objects.extra(where=["upper(ser) like %s"], params=["%%%s%%"%searchterms.upper()]) elif searchtype == 'b': series = Series.objects.extra(where=["upper(ser) like %s"], params=["%s%%"%searchterms.upper()]) elif searchtype == 'e': series = Series.objects.extra(where=["upper(ser)=%s"], params=["%s"%searchterms.upper()]) if len(series)>0: series = series.order_by('ser') # Создаем результирующее множество result = [] for row in series: p = {'id':row.id, 'ser':row.ser, 'lang_code': row.lang_code, 'book_count': Book.objects.filter(series=row).count()} result.append(p) p = Paginator(result, MAXITEMS) try: series = p.page(page_num) except InvalidPage: series = p.page(1) page_num = 1 firstpage = page_num - HALF_PAGES_LINKS lastpage = page_num + HALF_PAGES_LINKS if firstpage<1: lastpage = lastpage - firstpage + 1 firstpage = 1 if lastpage>p.num_pages: firstpage = firstpage - (lastpage-p.num_pages) lastpage = p.num_pages if firstpage<1: firstpage = 1 args['searchterms']=searchterms; args['searchtype']=searchtype; args['series']=series args['page_range']= [ i for i in range(firstpage,lastpage+1)] args['searchobject'] = 'series' return render_to_response('sopds_series.html', args) def SearchAuthorsViews(request): Loading