From 256cbf4f9685c0b0b4964aabd791b713fa609baa Mon Sep 17 00:00:00 2001 From: Azuny Date: Wed, 16 Aug 2017 17:59:29 +0300 Subject: [PATCH 1/2] Add date filter to search results --- nyaa/search.py | 14 ++++++++++++-- nyaa/static/js/main.js | 16 ++++++++++++++++ nyaa/templates/layout.html | 5 +++++ nyaa/templates/search_results.html | 18 ++++++++++++++++++ nyaa/views/main.py | 5 +++++ 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/nyaa/search.py b/nyaa/search.py index 56619739..694e778f 100644 --- a/nyaa/search.py +++ b/nyaa/search.py @@ -36,7 +36,7 @@ def _generate_query_string(term, category, filter, user): def search_elastic(term='', user=None, sort='id', order='desc', - category='0_0', quality_filter='0', page=1, + category='0_0', quality_filter='0', date_filter='', page=1, rss=False, admin=False, logged_in_user=None, per_page=75, max_search_results=1000): # This function can easily be memcached now @@ -136,6 +136,10 @@ def search_elastic(term='', user=None, sort='id', order='desc', default_operator="AND", query=term) + if date_filter: + date_min, date_max = date_filter.replace('-00', '-01').split(' - ')[:2] + s = s.filter('range', created_time={'gte': date_min, 'lte': date_max}) + # User view (/user/username) if user: s = s.filter('term', uploader_id=user) @@ -227,7 +231,7 @@ def wrapper(*args, **kwargs): def search_db(term='', user=None, sort='id', order='desc', category='0_0', - quality_filter='0', page=1, rss=False, admin=False, + quality_filter='0', date_filter='', page=1, rss=False, admin=False, logged_in_user=None, per_page=75): sort_keys = { 'id': models.Torrent.id, @@ -354,6 +358,12 @@ def search_db(term='', user=None, sort='id', order='desc', category='0_0', qpc.filter((models.Torrent.main_category_id == main_cat_id) & (models.Torrent.sub_category_id == sub_cat_id)) + if date_filter: + date_min, date_max = date_filter.replace('-00', '-01').split(' - ')[:2] + date_min += ' 00:00:00' + date_max += ' 23:59:59' + qpc.filter((models.Torrent.created_time <= date_max) & (models.Torrent.created_time >= date_min)) + if filter_tuple: qpc.filter(models.Torrent.flags.op('&')( int(filter_tuple[0])).is_(filter_tuple[1])) diff --git a/nyaa/static/js/main.js b/nyaa/static/js/main.js index c7d9cb89..0c9c68b5 100644 --- a/nyaa/static/js/main.js +++ b/nyaa/static/js/main.js @@ -71,6 +71,22 @@ $(document).ready(function() { $(this).blur().children('i').toggleClass('fa-folder-open fa-folder'); $(this).next().stop().slideToggle(250); }); + + // Date range picker + $(function() { + var el = $('input[name="d"'); + el.daterangepicker({ + "linkedCalendars": false, + "autoUpdateInput": true, + "startDate": el.attr('value') ? el.attr('value') : moment().subtract(6, 'days'), + "endDate": el.attr('value') ? el.attr('value').replace(/.* - /, '') : moment(), + "autoApply": true, + "locale": { + "format": "YYYY-MM-DD", + "separator": " - " + }, + }); + }); }); function _format_time_difference(seconds) { diff --git a/nyaa/templates/layout.html b/nyaa/templates/layout.html index 43da9cb8..9acd6c3d 100644 --- a/nyaa/templates/layout.html +++ b/nyaa/templates/layout.html @@ -48,6 +48,11 @@ + + + + + - - - + + + +