Adding search to shared stories, removing from folders.

This commit is contained in:
Samuel Clay 2013-07-25 11:10:56 -07:00
parent 4e54bc5238
commit 41b794adf6
5 changed files with 21 additions and 6 deletions

View file

@ -9,6 +9,7 @@ import random
import requests
from collections import defaultdict
from BeautifulSoup import BeautifulSoup
from mongoengine.queryset import Q
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
@ -180,7 +181,17 @@ class MSocialProfile(mongo.Document):
kwargs={'user_id': self.user_id,
'username': self.username_slug}))
def find_stories(self, query, offset=0, limit=25):
stories_db = MSharedStory.objects(
Q(user_id=self.user_id) &
(Q(story_title__icontains=query) |
Q(story_content__icontains=query) |
Q(story_author_name__icontains=query))
).order_by('-shared_date')[offset:offset+limit]
stories = Feed.format_stories(stories_db)
return stories
def recommended_users(self):
r = redis.Redis(connection_pool=settings.REDIS_POOL)
following_key = "F:%s:F" % (self.user_id)

View file

@ -45,6 +45,7 @@ def load_social_stories(request, user_id, username=None):
page = request.REQUEST.get('page')
order = request.REQUEST.get('order', 'newest')
read_filter = request.REQUEST.get('read_filter', 'all')
query = request.REQUEST.get('query')
stories = []
message = ""
@ -60,6 +61,8 @@ def load_social_stories(request, user_id, username=None):
if social_profile.private and not social_profile.is_followed_by_user(user.pk):
message = "%s has a private blurblog and you must be following them in order to read it." % social_profile.username
elif query:
stories = social_profile.find_stories(query, offset=offset, limit=limit)
elif socialsub and (read_filter == 'unread' or order == 'oldest'):
story_hashes = socialsub.get_stories(order=order, read_filter=read_filter, offset=offset, limit=limit)
story_date_order = "%sshared_date" % ('' if order == 'oldest' else '-')

View file

@ -636,7 +636,8 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
this.make_request('/social/stories/'+user_id+'/', {
page: page,
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, {
'ajax_group': (page > 1 ? 'feed_page' : 'feed'),
'request_type': 'GET'

View file

@ -1177,7 +1177,7 @@
this.active_feed == 'river:global') {
this.open_river_blurblogs_stories({'global': true});
} else if (this.flags['social_view']) {
this.open_social_stories(this.active_feed);
this.open_social_stories(this.active_feed, options);
} else if (this.flags['river_view']) {
this.open_river_stories(this.active_folder &&
this.active_folder.folder_view &&
@ -1767,11 +1767,10 @@
this.iframe_scroll = null;
this.flags['opening_feed'] = true;
feed.set('selected', true, options);
this.set_correct_story_view_for_feed(this.active_feed);
this.make_feed_title_in_stories();
this.$s.$body.addClass('NB-view-river');
this.set_correct_story_view_for_feed(this.active_feed);
// TODO: Only make feed the default for blurblogs, not overriding an explicit pref.
this.switch_taskbar_view(this.story_view);
this.setup_mousemove_on_views();

View file

@ -42,6 +42,7 @@ NEWSBLUR.Views.StoryTitlesHeader = Backbone.View.extend({
<div class="folder_title_text">Saved Stories</div>\
</div>\
', {}));
$view.append(search_view.$el);
} else if (this.showing_fake_folder) {
$view = $(_.template('\
<div class="NB-folder NB-no-hover">\
@ -84,9 +85,9 @@ NEWSBLUR.Views.StoryTitlesHeader = Backbone.View.extend({
type: 'story'
}).render();
$view = this.view.$el;
$view.append(search_view.$el);
}
$view.append(search_view.$el);
this.$el.html($view);
this.setElement($view);
this.show_feed_hidden_story_title_indicator();