mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Adding folder search for admin only. If you're reading this commit message, don't get excited. I probably won't be launching folder search using this method. It'll be a while before I can ship it. But if for some strange reason folder search is much faster than I thought, this has a chance.
This commit is contained in:
parent
088e43d63b
commit
687c044b10
5 changed files with 42 additions and 4 deletions
|
@ -827,6 +827,7 @@ def load_river_stories__redis(request):
|
||||||
page = int(request.REQUEST.get('page', 1))
|
page = int(request.REQUEST.get('page', 1))
|
||||||
order = request.REQUEST.get('order', 'newest')
|
order = request.REQUEST.get('order', 'newest')
|
||||||
read_filter = request.REQUEST.get('read_filter', 'unread')
|
read_filter = request.REQUEST.get('read_filter', 'unread')
|
||||||
|
query = request.REQUEST.get('query')
|
||||||
now = localtime_for_timezone(datetime.datetime.now(), user.profile.timezone)
|
now = localtime_for_timezone(datetime.datetime.now(), user.profile.timezone)
|
||||||
usersubs = []
|
usersubs = []
|
||||||
offset = (page-1) * limit
|
offset = (page-1) * limit
|
||||||
|
@ -836,6 +837,21 @@ def load_river_stories__redis(request):
|
||||||
if story_hashes:
|
if story_hashes:
|
||||||
unread_feed_story_hashes = None
|
unread_feed_story_hashes = None
|
||||||
read_filter = 'unread'
|
read_filter = 'unread'
|
||||||
|
mstories = MStory.objects(story_hash__in=story_hashes).order_by(story_date_order)
|
||||||
|
stories = Feed.format_stories(mstories)
|
||||||
|
elif query:
|
||||||
|
if user.profile.is_premium:
|
||||||
|
usersubs = UserSubscription.subs_for_feeds(user.pk, feed_ids=feed_ids,
|
||||||
|
read_filter='all')
|
||||||
|
feed_ids = [sub.feed_id for sub in usersubs]
|
||||||
|
stories = Feed.find_feed_stories(feed_ids, query, offset=offset, limit=limit)
|
||||||
|
mstories = stories
|
||||||
|
unread_feed_story_hashes = UserSubscription.story_hashes(user.pk, feed_ids=feed_ids,
|
||||||
|
read_filter="unread", order=order,
|
||||||
|
group_by_feed=False)
|
||||||
|
else:
|
||||||
|
stories = []
|
||||||
|
message = "You must be a premium subscriber to search."
|
||||||
else:
|
else:
|
||||||
usersubs = UserSubscription.subs_for_feeds(user.pk, feed_ids=feed_ids,
|
usersubs = UserSubscription.subs_for_feeds(user.pk, feed_ids=feed_ids,
|
||||||
read_filter=read_filter)
|
read_filter=read_filter)
|
||||||
|
@ -857,6 +873,7 @@ def load_river_stories__redis(request):
|
||||||
|
|
||||||
mstories = MStory.objects(story_hash__in=story_hashes).order_by(story_date_order)
|
mstories = MStory.objects(story_hash__in=story_hashes).order_by(story_date_order)
|
||||||
stories = Feed.format_stories(mstories)
|
stories = Feed.format_stories(mstories)
|
||||||
|
|
||||||
found_feed_ids = list(set([story['story_feed_id'] for story in stories]))
|
found_feed_ids = list(set([story['story_feed_id'] for story in stories]))
|
||||||
stories, user_profiles = MSharedStory.stories_with_comments_and_profiles(stories, user.pk)
|
stories, user_profiles = MSharedStory.stories_with_comments_and_profiles(stories, user.pk)
|
||||||
|
|
||||||
|
|
|
@ -1140,6 +1140,18 @@ class Feed(models.Model):
|
||||||
|
|
||||||
return stories
|
return stories
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def find_feed_stories(cls, feed_ids, query, offset=0, limit=25):
|
||||||
|
stories_db = MStory.objects(
|
||||||
|
Q(story_feed_id__in=feed_ids) &
|
||||||
|
(Q(story_title__icontains=query) |
|
||||||
|
Q(story_author_name__icontains=query) |
|
||||||
|
Q(story_tags__icontains=query))
|
||||||
|
).order_by('-story_date')[offset:offset+limit]
|
||||||
|
stories = cls.format_stories(stories_db)
|
||||||
|
|
||||||
|
return stories
|
||||||
|
|
||||||
def find_stories(self, query, offset=0, limit=25):
|
def find_stories(self, query, offset=0, limit=25):
|
||||||
stories_db = MStory.objects(
|
stories_db = MStory.objects(
|
||||||
Q(story_feed_id=self.pk) &
|
Q(story_feed_id=self.pk) &
|
||||||
|
|
|
@ -575,7 +575,8 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
|
||||||
feeds: feeds,
|
feeds: feeds,
|
||||||
page: page,
|
page: page,
|
||||||
order: this.view_setting(feed_id, 'order'),
|
order: this.view_setting(feed_id, 'order'),
|
||||||
read_filter: this.view_setting(feed_id, 'read_filter')
|
read_filter: this.view_setting(feed_id, 'read_filter'),
|
||||||
|
query: NEWSBLUR.reader.flags.search
|
||||||
}, pre_callback, error_callback, {
|
}, pre_callback, error_callback, {
|
||||||
'ajax_group': (page ? 'feed_page' : 'feed'),
|
'ajax_group': (page ? 'feed_page' : 'feed'),
|
||||||
'request_type': 'GET'
|
'request_type': 'GET'
|
||||||
|
|
|
@ -1185,7 +1185,8 @@
|
||||||
this.open_river_stories(this.active_folder &&
|
this.open_river_stories(this.active_folder &&
|
||||||
this.active_folder.folder_view &&
|
this.active_folder.folder_view &&
|
||||||
this.active_folder.folder_view.$el,
|
this.active_folder.folder_view.$el,
|
||||||
this.active_folder);
|
this.active_folder,
|
||||||
|
options);
|
||||||
} else {
|
} else {
|
||||||
this.open_feed(this.active_feed, options);
|
this.open_feed(this.active_feed, options);
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,6 +116,7 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({
|
||||||
<%= NEWSBLUR.assets.view_setting("river:"+folder_title, "order") %>\
|
<%= NEWSBLUR.assets.view_setting("river:"+folder_title, "order") %>\
|
||||||
</span>\
|
</span>\
|
||||||
</div>\
|
</div>\
|
||||||
|
<div class="NB-search-container"></div>\
|
||||||
<div class="NB-story-title-indicator">\
|
<div class="NB-story-title-indicator">\
|
||||||
<div class="NB-story-title-indicator-count"></div>\
|
<div class="NB-story-title-indicator-count"></div>\
|
||||||
<span class="NB-story-title-indicator-text">show hidden stories</span>\
|
<span class="NB-story-title-indicator-text">show hidden stories</span>\
|
||||||
|
@ -143,6 +144,12 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({
|
||||||
if (this.options.feedbar) {
|
if (this.options.feedbar) {
|
||||||
this.show_collapsed_folder_count();
|
this.show_collapsed_folder_count();
|
||||||
}
|
}
|
||||||
|
if (this.options.feedbar && NEWSBLUR.Globals.is_staff) {
|
||||||
|
this.search_view = new NEWSBLUR.Views.FeedSearchView({
|
||||||
|
feedbar_view: this
|
||||||
|
}).render();
|
||||||
|
this.$(".NB-search-container").html(this.search_view.$el);
|
||||||
|
}
|
||||||
return $folder;
|
return $folder;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue