diff options
author | Vlad Bokov <razum2um@mail.ru> | 2011-11-05 06:45:46 +0700 |
---|---|---|
committer | Vlad Bokov <razum2um@mail.ru> | 2011-11-05 06:45:46 +0700 |
commit | f692b0847445359a9edfe10bd897607ee9bd05fc (patch) | |
tree | 275c91af7748f4802dda7de85b237581280bedaa | |
parent | 114867ecbc9b4120fc40293e9654c7092829c033 (diff) | |
download | askbot-f692b0847445359a9edfe10bd897607ee9bd05fc.tar.gz askbot-f692b0847445359a9edfe10bd897607ee9bd05fc.tar.bz2 askbot-f692b0847445359a9edfe10bd897607ee9bd05fc.zip |
Feature #134: time-based cache for anonymous only & tests
-rw-r--r-- | askbot/setup_templates/settings.py | 1 | ||||
-rw-r--r-- | askbot/skins/common/templates/question/answer_vote_buttons.html | 2 | ||||
-rw-r--r-- | askbot/tests/db_api_tests.py | 35 | ||||
-rw-r--r-- | askbot/views/readers.py | 2 |
4 files changed, 39 insertions, 1 deletions
diff --git a/askbot/setup_templates/settings.py b/askbot/setup_templates/settings.py index a97402aa..3aead40f 100644 --- a/askbot/setup_templates/settings.py +++ b/askbot/setup_templates/settings.py @@ -176,6 +176,7 @@ CACHE_BACKEND = 'locmem://' #needed for django-keyedcache CACHE_TIMEOUT = 6000 CACHE_PREFIX = 'askbot' #make this unique +CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True #If you use memcache you may want to uncomment the following line to enable memcached based sessions #SESSION_ENGINE = 'django.contrib.sessions.backends.cache_db' diff --git a/askbot/skins/common/templates/question/answer_vote_buttons.html b/askbot/skins/common/templates/question/answer_vote_buttons.html index 807f3ab8..1cdd5188 100644 --- a/askbot/skins/common/templates/question/answer_vote_buttons.html +++ b/askbot/skins/common/templates/question/answer_vote_buttons.html @@ -17,7 +17,7 @@ {% endif %} alt="{% trans %}i dont like this answer (click again to cancel){% endtrans %}" title="{% trans %}i dont like this answer (click again to cancel){% endtrans %}" /> -{% if request.user == question.author or request.user.is_moderator() or request.user.is_superuser() %} +{% if request.user == question.author or request.user.is_authenticated() and (request.user.is_moderator() or request.user.is_superuser()) %} <img id="answer-img-accept-{{ answer.id }}" class="answer-img-accept" {% if answer.accepted %} src="{{'/images/vote-accepted-on.png'|media}}" diff --git a/askbot/tests/db_api_tests.py b/askbot/tests/db_api_tests.py index 00091934..e1268d9f 100644 --- a/askbot/tests/db_api_tests.py +++ b/askbot/tests/db_api_tests.py @@ -4,6 +4,10 @@ functions that happen on behalf of users e.g. ``some_user.do_something(...)`` """ from django.core import exceptions +from django.core.urlresolvers import reverse +from django.db import connection +from django.test.client import Client +from django.conf import settings from askbot.tests.utils import AskbotTestCase from askbot import models from askbot import const @@ -39,6 +43,37 @@ class DBApiTests(AskbotTestCase): self.assertTrue(post.deleted_by == None) self.assertTrue(post.deleted_at == None) + def test_anonymous_question_cache(self): + question = self.post_question() + settings.DEBUG = True # because it's forsed to False + url = reverse('question', kwargs={'id': question.id}) + + client = Client() + client.get(url, follow=True) + counter = len(connection.queries) + client.get(url, follow=True) + + self.assertTrue(counter > len(connection.queries)) + self.assertEqual(3, len(connection.queries)) # session-related only + settings.DEBUG = False + + def test_authentificated_no_question_cache(self): + question = self.post_question() + settings.DEBUG = True # because it's forsed to False + url = reverse('question', kwargs={'id': question.id}) + + password = '123' + client = Client() + self.other_user.set_password(password) + client.login(username=self.other_user.username, password=password) + + client.get(url, follow=True) + counter = len(connection.queries) + client.get(url, follow=True) + + self.assertEqual(counter, len(connection.queries)) + settings.DEBUG = False + def test_flag_question(self): self.user.set_status('m') self.user.flag_post(self.question) diff --git a/askbot/views/readers.py b/askbot/views/readers.py index eabef3c8..8d06c2be 100644 --- a/askbot/views/readers.py +++ b/askbot/views/readers.py @@ -23,6 +23,7 @@ from django.views.decorators import csrf from django.core.urlresolvers import reverse from django.core import exceptions as django_exceptions from django.contrib.humanize.templatetags import humanize +from django.views.decorators.cache import cache_page import askbot from askbot import exceptions @@ -349,6 +350,7 @@ def tags(request):#view showing a listing of available tags - plain list return render_into_skin('tags.html', data, request) @csrf.csrf_protect +@cache_page(60 * 5) def question(request, id):#refactor - long subroutine. display question body, answers and comments """view that displays body of the question and all answers to it |