summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDejan Noveski <dr.mote@gmail.com>2011-11-15 23:42:04 +0100
committerDejan Noveski <dr.mote@gmail.com>2011-11-15 23:42:04 +0100
commitff17439076efd7abff617ddc5b96f4ee8f7ee340 (patch)
treec1149c07ef2b483e22089b58562c449961f8fb0d
parent54c40830e3f93760debb53dd5fc5853d75e06818 (diff)
downloadaskbot-ff17439076efd7abff617ddc5b96f4ee8f7ee340.tar.gz
askbot-ff17439076efd7abff617ddc5b96f4ee8f7ee340.tar.bz2
askbot-ff17439076efd7abff617ddc5b96f4ee8f7ee340.zip
Updated live search to switch feed url, added comments - better code, removed unused import, querystring building moved further up to be used in AJAX response
-rw-r--r--askbot/feed.py10
-rw-r--r--askbot/skins/common/media/js/live_search.js7
-rw-r--r--askbot/views/readers.py29
3 files changed, 35 insertions, 11 deletions
diff --git a/askbot/feed.py b/askbot/feed.py
index b71a3696..20932f1a 100644
--- a/askbot/feed.py
+++ b/askbot/feed.py
@@ -18,7 +18,6 @@ from django.utils.translation import ugettext as _
from django.core.exceptions import ObjectDoesNotExist
from askbot.models import Question, Answer, Comment
from askbot.conf import settings as askbot_settings
-from askbot.search.state_manager import SearchState
import itertools
class RssIndividualQuestionFeed(Feed):
@@ -138,15 +137,22 @@ class RssLastestQuestionsFeed(Feed):
def items(self, item):
"""get questions for the feed
"""
+ #initial filtering
qs = Question.objects.filter(deleted=False)
+
+ #get search string and tags from GET
query = self.request.GET.get("q", None)
tags = self.request.GET.getlist("tags")
if query:
+ #if there's a search string, use the
+ #question search method
qs = qs.get_by_text_query(query)
if tags:
- for tag in tags:
+ #if there are tags in GET, filter the
+ #questions additionally
+ for tag in tags:
qs = qs.filter(tags__name = tag)
return qs.order_by('-last_activity_at')
diff --git a/askbot/skins/common/media/js/live_search.js b/askbot/skins/common/media/js/live_search.js
index a02060f8..73e1453a 100644
--- a/askbot/skins/common/media/js/live_search.js
+++ b/askbot/skins/common/media/js/live_search.js
@@ -338,6 +338,12 @@ var liveSearch = function(){
}
};
+ var change_rss_url = function(feed_url){
+ if(feed_url){
+ $("#ContentLeft a.rss:first").attr("href", feed_url);
+ }
+ }
+
var remove_search_tag = function(tag_name){
$.ajax({
url: askbot['urls']['questions'],
@@ -414,6 +420,7 @@ var liveSearch = function(){
render_faces(data['faces']);
render_related_tags(data['related_tags']);
render_relevance_sort_tab();
+ change_rss_url(data['feed_url']);
set_active_sort_tab(sortMethod);
query.focus();
diff --git a/askbot/views/readers.py b/askbot/views/readers.py
index eb81f963..f352a166 100644
--- a/askbot/views/readers.py
+++ b/askbot/views/readers.py
@@ -125,6 +125,24 @@ def questions(request):
'page_size' : search_state.page_size,#todo in T pagesize -> page_size
}
+ # We need to pass the rss feed url based
+ # on the search state to the template.
+ # We use QueryDict to get a querystring
+ # from dicts and arrays. Much cleaner
+ # than parsing and string formating.
+ rss_query_dict = QueryDict("").copy()
+ if search_state.query:
+ # We have search string in session - pass it to
+ # the QueryDict
+ rss_query_dict.update({"q": search_state.query})
+ if search_state.tags:
+ # We have tags in session - pass it to the
+ # QueryDict but as a list - we want tags+
+ rss_query_dict.setlist("tags", search_state.tags)
+
+ # Format the url with the QueryDict
+ context_feed_url = '/feeds/rss/?%s' % rss_query_dict.urlencode()
+
if request.is_ajax():
q_count = paginator.count
@@ -171,7 +189,8 @@ def questions(request):
'question_counter': question_counter,
'questions': list(),
'related_tags': list(),
- 'faces': list()
+ 'faces': list(),
+ 'feed_url': context_feed_url,
}
badge_levels = dict(const.BADGE_TYPE_CHOICES)
@@ -225,14 +244,6 @@ def questions(request):
if meta_data.get('author_name',None):
reset_method_count += 1
- rss_query_dict = QueryDict("").copy()
- if search_state.query:
- rss_query_dict.update({"q": search_state.query})
- if search_state.tags:
- rss_query_dict.setlist("tags", search_state.tags)
-
-
- context_feed_url = '/feeds/rss/?%s' % rss_query_dict.urlencode()
template_data = {
'active_tab': 'questions',