Fix for #1660 (Pagination in advanced search not working, error 500 for no filter in advanced search)
Fix #1666 (Pagination in search not working)
This commit is contained in:
		
							parent
							
								
									e8620a0986
								
							
						
					
					
						commit
						2814617e4b
					
				
							
								
								
									
										33
									
								
								cps/web.py
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								cps/web.py
									
									
									
									
									
								
							| 
						 | 
					@ -1231,7 +1231,9 @@ def reconnect():
 | 
				
			||||||
def search():
 | 
					def search():
 | 
				
			||||||
    term = request.args.get("query")
 | 
					    term = request.args.get("query")
 | 
				
			||||||
    if term:
 | 
					    if term:
 | 
				
			||||||
        return render_search_results(term, 0, None, config.config_books_per_page)
 | 
					        # flask_session['query'] = json.dumps(request.form)
 | 
				
			||||||
 | 
					        return redirect(url_for('web.books_list', data="search", sort_param='stored', query=term))
 | 
				
			||||||
 | 
					        # return render_search_results(term, 0, None, config.config_books_per_page)
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        return render_title_template('search.html',
 | 
					        return render_title_template('search.html',
 | 
				
			||||||
                                     searchterm="",
 | 
					                                     searchterm="",
 | 
				
			||||||
| 
						 | 
					@ -1243,8 +1245,9 @@ def search():
 | 
				
			||||||
@web.route("/advanced_search", methods=['POST'])
 | 
					@web.route("/advanced_search", methods=['POST'])
 | 
				
			||||||
@login_required_if_no_ano
 | 
					@login_required_if_no_ano
 | 
				
			||||||
def advanced_search():
 | 
					def advanced_search():
 | 
				
			||||||
    term = request.form
 | 
					    flask_session['query'] = json.dumps(request.form)
 | 
				
			||||||
    return render_adv_search_results(term, 0, None, config.config_books_per_page)
 | 
					    return redirect(url_for('web.books_list', data="advsearch", sort_param='stored', query=""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def render_adv_search_results(term, offset=None, order=None, limit=None):
 | 
					def render_adv_search_results(term, offset=None, order=None, limit=None):
 | 
				
			||||||
    order = order or [db.Books.sort]
 | 
					    order = order or [db.Books.sort]
 | 
				
			||||||
| 
						 | 
					@ -1379,18 +1382,18 @@ def render_adv_search_results(term, offset=None, order=None, limit=None):
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    q = q.filter(getattr(db.Books, 'custom_column_' + str(c.id)).any(
 | 
					                    q = q.filter(getattr(db.Books, 'custom_column_' + str(c.id)).any(
 | 
				
			||||||
                        func.lower(db.cc_classes[c.id].value).ilike("%" + custom_query + "%")))
 | 
					                        func.lower(db.cc_classes[c.id].value).ilike("%" + custom_query + "%")))
 | 
				
			||||||
        q = q.order_by(*order).all()
 | 
					    q = q.order_by(*order).all()
 | 
				
			||||||
        flask_session['query'] = json.dumps(term)
 | 
					    flask_session['query'] = json.dumps(term)
 | 
				
			||||||
        ub.store_ids(q)
 | 
					    ub.store_ids(q)
 | 
				
			||||||
        # entries, result_count, pagination = calibre_db.get_search_results(term, offset, order, limit)
 | 
					    # entries, result_count, pagination = calibre_db.get_search_results(term, offset, order, limit)
 | 
				
			||||||
        result_count = len(q)
 | 
					    result_count = len(q)
 | 
				
			||||||
        if offset != None and limit != None:
 | 
					    if offset != None and limit != None:
 | 
				
			||||||
            offset = int(offset)
 | 
					        offset = int(offset)
 | 
				
			||||||
            limit_all = offset + int(limit)
 | 
					        limit_all = offset + int(limit)
 | 
				
			||||||
            pagination = Pagination((offset / (int(limit)) + 1), limit, result_count)
 | 
					        pagination = Pagination((offset / (int(limit)) + 1), limit, result_count)
 | 
				
			||||||
        else:
 | 
					    else:
 | 
				
			||||||
            offset = 0
 | 
					        offset = 0
 | 
				
			||||||
            limit_all = result_count
 | 
					        limit_all = result_count
 | 
				
			||||||
    return render_title_template('search.html',
 | 
					    return render_title_template('search.html',
 | 
				
			||||||
                                 adv_searchterm=searchterm,
 | 
					                                 adv_searchterm=searchterm,
 | 
				
			||||||
                                 pagination=pagination,
 | 
					                                 pagination=pagination,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user