Commit 1d943b85 authored by Dmitry Shelepnev's avatar Dmitry Shelepnev
Browse files

Add series search

parent 7f7423b8
Loading
Loading
Loading
Loading
+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
+48 −0
Original line number Diff line number Diff line
@@ -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:
@@ -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):