diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2010-09-20 18:25:17 -0400 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2010-09-20 18:25:17 -0400 |
commit | 3edb3fd2b0663458b7aa9857e7b8196437e0cd58 (patch) | |
tree | d93bf24df5ef995513df4ab42a5cdc60508b4036 | |
parent | bd0c24f9fdc1a72c87e5ab653d9483d340faea0e (diff) | |
download | askbot-3edb3fd2b0663458b7aa9857e7b8196437e0cd58.tar.gz askbot-3edb3fd2b0663458b7aa9857e7b8196437e0cd58.tar.bz2 askbot-3edb3fd2b0663458b7aa9857e7b8196437e0cd58.zip |
speed optimization for live search
-rw-r--r-- | askbot/skins/default/media/js/live_search.js | 10 | ||||
-rw-r--r-- | askbot/views/readers.py | 55 |
2 files changed, 40 insertions, 25 deletions
diff --git a/askbot/skins/default/media/js/live_search.js b/askbot/skins/default/media/js/live_search.js index 0cf7817b..ea429ddd 100644 --- a/askbot/skins/default/media/js/live_search.js +++ b/askbot/skins/default/media/js/live_search.js @@ -69,7 +69,9 @@ $(document).ready(function(){ var render_title = function(result){ return '<h2>' + '<a title="' + result['summary'] + '" ' + - 'href="' + result['url'] + '"' + + 'href="' + scriptUrl + + $.i18n._('question/') + result['id'] + + '/"' + '>' + result['title'] + '</a>' + @@ -77,9 +79,11 @@ $(document).ready(function(){ }; var render_user_link = function(result){ - if (result['u_url'] !== false){ + if (result['u_id'] !== false){ + var u_slug = result['u_name'].toLowerCase().replace(/ +/g, '-'); return '<a ' + - 'href="' + result['u_url'] + '"' + + 'href="' + scriptUrl + $.i18n._('users/') + result['u_id'] + + '/' + u_slug + '/"' + '>' + result['u_name'] + '</a> '; diff --git a/askbot/views/readers.py b/askbot/views/readers.py index 5baac3ab..1281918c 100644 --- a/askbot/views/readers.py +++ b/askbot/views/readers.py @@ -154,6 +154,7 @@ def questions(request): } if request.is_ajax(): + q_count = objects_list.count question_counter = ungettext( '%(q_num)s question', @@ -171,7 +172,6 @@ def questions(request): ) ) ) - ajax_data = { #current page is 1 by default now #because ajax is only called by update in the search button @@ -207,42 +207,53 @@ def questions(request): for contributor in contributors: ajax_data['faces'].append(extra_tags.gravatar(contributor, 48)) + votes_color_empty_fg = askbot_settings.COLORS_VOTE_COUNTER_EMPTY_FG + votes_bgcolor_empty = askbot_settings.COLORS_VOTE_COUNTER_EMPTY_BG + votes_color_min_fg = askbot_settings.COLORS_VOTE_COUNTER_MIN_FG + votes_bgcolor_min = askbot_settings.COLORS_VOTE_COUNTER_MIN_BG + answers_color_empty_fg = askbot_settings.COLORS_ANSWER_COUNTER_EMPTY_FG + answers_bgcolor_empty = askbot_settings.COLORS_ANSWER_COUNTER_EMPTY_BG + answers_color_accepted_fg = askbot_settings.COLORS_ANSWER_COUNTER_ACCEPTED_FG + answers_bgcolor_accepted = askbot_settings.COLORS_ANSWER_COUNTER_ACCEPTED_BG + answers_color_min_fg = askbot_settings.COLORS_ANSWER_COUNTER_MIN_FG + answers_bgcolor_min = askbot_settings.COLORS_ANSWER_COUNTER_MIN_BG + views_color_empty_fg = askbot_settings.COLORS_VIEW_COUNTER_EMPTY_FG + views_bgcolor_empty = askbot_settings.COLORS_VIEW_COUNTER_EMPTY_BG + views_color_min_fg = askbot_settings.COLORS_VIEW_COUNTER_MIN_FG + views_bgcolor_min = askbot_settings.COLORS_VIEW_COUNTER_MIN_BG + for question in questions.object_list: timestamp = question.last_activity_at author = question.last_activity_by - #'u_gold_title': pluralized_gold_badge_title, - #'u_silver': author.silver, - #'u_silver_title': pluralized_silver_badge_title, - #'u_bronze': author.bronze, - #'u_bronze_title': pluralized_bronze_badge_title, + if question.score == 0: - votes_color = askbot_settings.COLORS_VOTE_COUNTER_EMPTY_FG - votes_bgcolor = askbot_settings.COLORS_VOTE_COUNTER_EMPTY_BG + votes_color = votes_color_empty_fg + votes_bgcolor = votes_bgcolor_empty else: - votes_color = askbot_settings.COLORS_VOTE_COUNTER_MIN_FG - votes_bgcolor = askbot_settings.COLORS_VOTE_COUNTER_MIN_BG + votes_color = votes_color_min_fg + votes_bgcolor = votes_bgcolor_min if question.answer_count == 0: - answers_color = askbot_settings.COLORS_ANSWER_COUNTER_EMPTY_FG - answers_bgcolor = askbot_settings.COLORS_ANSWER_COUNTER_EMPTY_BG + answers_color = answers_color_empty_fg + answers_bgcolor = answers_bgcolor_empty elif question.answer_accepted: - answers_color = askbot_settings.COLORS_ANSWER_COUNTER_ACCEPTED_FG - answers_bgcolor = askbot_settings.COLORS_ANSWER_COUNTER_ACCEPTED_BG + answers_color = answers_color_accepted_fg + answers_bgcolor = answers_bgcolor_accepted else: - answers_color = askbot_settings.COLORS_ANSWER_COUNTER_MIN_FG - answers_bgcolor = askbot_settings.COLORS_ANSWER_COUNTER_MIN_BG + answers_color = answers_color_min_fg + answers_bgcolor = answers_bgcolor_min if question.view_count == 0: - views_color = askbot_settings.COLORS_VIEW_COUNTER_EMPTY_FG - views_bgcolor = askbot_settings.COLORS_VIEW_COUNTER_EMPTY_BG + views_color = views_color_empty_fg + views_bgcolor = views_bgcolor_empty else: - views_color = askbot_settings.COLORS_VIEW_COUNTER_MIN_FG - views_bgcolor = askbot_settings.COLORS_VIEW_COUNTER_MIN_BG + views_color = views_color_min_fg + views_bgcolor = views_bgcolor_min question_data = { 'title': question.title, 'summary': question.summary, - 'url': question.get_absolute_url(), + 'id': question.id, 'tags': question.get_tag_names(), 'votes': extra_filters.humanize_counter(question.score), 'votes_color': votes_color, @@ -258,7 +269,7 @@ def questions(request): 'views_word': ungettext('view', 'views', question.view_count), 'timestamp': unicode(timestamp), 'timesince': extra_tags.diff_date(timestamp), - 'u_url': author.get_absolute_url(), + 'u_id': author.id, 'u_name': author.username, 'u_rep': author.reputation, 'u_gold': author.gold, |