summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-11-17 17:57:09 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-11-17 17:57:09 -0300
commit5b951d7db05a103523eaa9a0729ea0f2909127e8 (patch)
tree88a13b4a9c6573396016bc444085e1bd8025f4d5
parent8fb693146db9ada774d01ef51691dd3c6d7cc6ab (diff)
downloadaskbot-5b951d7db05a103523eaa9a0729ea0f2909127e8.tar.gz
askbot-5b951d7db05a103523eaa9a0729ea0f2909127e8.tar.bz2
askbot-5b951d7db05a103523eaa9a0729ea0f2909127e8.zip
added django-style template loader class and replaced render_into_skin with render
-rw-r--r--askbot/deps/django_authopenid/views.py21
-rw-r--r--askbot/mail/lamson_handlers.py8
-rw-r--r--askbot/mail/messages.py4
-rw-r--r--askbot/management/commands/send_accept_answer_reminders.py4
-rw-r--r--askbot/management/commands/send_unanswered_question_reminders.py4
-rw-r--r--askbot/media/style/style.less2
-rw-r--r--askbot/models/__init__.py4
-rw-r--r--askbot/models/post.py8
-rw-r--r--askbot/models/question.py2
-rw-r--r--askbot/setup_templates/settings.py.mustache5
-rw-r--r--askbot/skins/loaders.py54
-rw-r--r--askbot/startup_procedures.py29
-rw-r--r--askbot/tasks.py3
-rw-r--r--askbot/templates/404.html49
-rw-r--r--askbot/templates/404.jinja.html44
-rw-r--r--askbot/templates/500.html (renamed from askbot/templates/500.jinja.html)0
-rw-r--r--askbot/templatetags/extra_tags.py8
-rw-r--r--askbot/tests/email_parsing_tests.py2
-rw-r--r--askbot/tests/post_model_tests.py2
-rw-r--r--askbot/views/avatar_views.py14
-rw-r--r--askbot/views/commands.py13
-rw-r--r--askbot/views/meta.py32
-rw-r--r--askbot/views/readers.py49
-rw-r--r--askbot/views/users.py38
-rw-r--r--askbot/views/widgets.py52
-rw-r--r--askbot/views/writers.py14
26 files changed, 235 insertions, 230 deletions
diff --git a/askbot/deps/django_authopenid/views.py b/askbot/deps/django_authopenid/views.py
index 05e0cdc5..9e383b49 100644
--- a/askbot/deps/django_authopenid/views.py
+++ b/askbot/deps/django_authopenid/views.py
@@ -41,6 +41,8 @@ from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate
from django.core.urlresolvers import reverse
from django.forms.util import ErrorList
+from django.shortcuts import render
+from django.template.loader import get_template
from django.views.decorators import csrf
from django.utils.encoding import smart_unicode
from django.utils.html import escape
@@ -48,7 +50,6 @@ from django.utils.translation import ugettext as _
from django.utils.safestring import mark_safe
from askbot.mail import send_mail
from recaptcha_works.decorators import fix_recaptcha_remote_ip
-from askbot.skins.loaders import render_into_skin, get_template
from askbot.deps.django_authopenid.ldap_auth import ldap_create_user
from askbot.deps.django_authopenid.ldap_auth import ldap_authenticate
from askbot.utils.loading import load_module
@@ -169,7 +170,7 @@ def logout_page(request):
'page_class': 'meta',
'have_federated_login_methods': util.have_enabled_federated_login_methods()
}
- return render_into_skin('authopenid/logout.html', data, request)
+ return render(request, 'authopenid/logout.html', data)
def get_url_host(request):
if request.is_secure():
@@ -721,7 +722,7 @@ def show_signin_view(
data['major_login_providers'] = major_login_providers.values()
data['minor_login_providers'] = minor_login_providers.values()
- return render_into_skin(template_name, data, request)
+ return render(request, template_name, data)
@login_required
def delete_login_method(request):
@@ -993,7 +994,7 @@ def register(request, login_provider_name=None, user_identifier=None):
'login_type':'openid',
'gravatar_faq_url':reverse('faq') + '#gravatar',
}
- return render_into_skin('authopenid/complete.html', data, request)
+ return render(request, 'authopenid/complete.html', data)
def signin_failure(request, message):
"""
@@ -1052,7 +1053,7 @@ def verify_email_and_register(request):
return HttpResponseRedirect(reverse('index'))
else:
data = {'page_class': 'validate-email-page'}
- return render_into_skin('authopenid/verify_email.html', data, request)
+ return render(request, 'authopenid/verify_email.html', data)
@not_authenticated
@decorators.valid_password_login_provider_required
@@ -1138,10 +1139,10 @@ def signup_with_password(request):
'minor_login_providers': minor_login_providers.values(),
'login_form': login_form
}
- return render_into_skin(
+ return render(
+ request,
'authopenid/signup_with_password.html',
- context_data,
- request
+ context_data
)
#what if request is not posted?
@@ -1201,7 +1202,7 @@ def send_email_key(email, key, handler_url_name='user_account_recover'):
'?validation_code=' + key
}
template = get_template('authopenid/email_validation.html')
- message = template.render(data)
+ message = template.render(data)#todo: inject language preference
send_mail(subject, message, django_settings.DEFAULT_FROM_EMAIL, [email])
def send_user_new_email_key(user):
@@ -1273,4 +1274,4 @@ def validation_email_sent(request):
'change_email_url': reverse('user_changeemail'),
'action_type': 'validate'
}
- return render_into_skin('authopenid/changeemail.html', data, request)
+ return render(request, 'authopenid/changeemail.html', data)
diff --git a/askbot/mail/lamson_handlers.py b/askbot/mail/lamson_handlers.py
index d1f0c71d..8bfa86f7 100644
--- a/askbot/mail/lamson_handlers.py
+++ b/askbot/mail/lamson_handlers.py
@@ -3,13 +3,13 @@ import functools
from django.core.files.uploadedfile import SimpleUploadedFile
from django.conf import settings as django_settings
from django.template import Context
+from django.template.loader import get_template
from django.utils.translation import ugettext as _
from lamson.routing import route, stateless
from lamson.server import Relay
from askbot.models import ReplyAddress, Group, Tag
from askbot import mail
from askbot.conf import settings as askbot_settings
-from askbot.skins.loaders import get_template
#we might end up needing to use something like this
#to distinguish the reply text from the quoted original message
@@ -166,7 +166,7 @@ def process_reply(func):
if error is not None:
template = get_template('email/reply_by_email_error.html')
- body_text = template.render(Context({'error':error}))
+ body_text = template.render(Context({'error':error}))#todo: set lang
mail.send_mail(
subject_line = "Error posting your reply",
body_text = body_text,
@@ -243,7 +243,7 @@ def VALIDATE_EMAIL(
mail.send_mail(
subject_line = _('Re: Welcome to %(site_name)s') % data,
- body_text = template.render(Context(data)),
+ body_text = template.render(Context(data)),#todo: set lang
recipient_list = [from_address,]
)
except ValueError:
@@ -312,6 +312,6 @@ def PROCESS(
mail.send_mail(
subject_line = _('Re: %s') % subject_line,
- body_text = template.render(Context(data)),
+ body_text = template.render(Context(data)),#todo: set lang
recipient_list = [from_address,]
)
diff --git a/askbot/mail/messages.py b/askbot/mail/messages.py
index 3ab3ff2f..0e888545 100644
--- a/askbot/mail/messages.py
+++ b/askbot/mail/messages.py
@@ -3,8 +3,8 @@ of email messages for various occasions
"""
import functools
from django.template import Context
+from django.template.loader import get_template
from askbot.conf import settings as askbot_settings
-from askbot.skins.loaders import get_template
from askbot.utils import html as html_utils
def message(template = None):
@@ -16,7 +16,7 @@ def message(template = None):
def wrapped(*args, **kwargs):
template_object = get_template(template)
data = func(*args, **kwargs)
- return template_object.render(Context(data))
+ return template_object.render(Context(data))#todo: set lang
return wrapped
return decorate
diff --git a/askbot/management/commands/send_accept_answer_reminders.py b/askbot/management/commands/send_accept_answer_reminders.py
index 119d7611..2b8b0851 100644
--- a/askbot/management/commands/send_accept_answer_reminders.py
+++ b/askbot/management/commands/send_accept_answer_reminders.py
@@ -1,6 +1,7 @@
import datetime
from django.core.management.base import NoArgsCommand
from django.conf import settings as django_settings
+from django.template.loader import get_template
from askbot import models
from askbot import const
from askbot.conf import settings as askbot_settings
@@ -8,7 +9,6 @@ from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
from askbot import mail
from askbot.utils.classes import ReminderSchedule
-from askbot.skins.loaders import get_template
from django.template import Context
DEBUG_THIS_COMMAND = False
@@ -73,7 +73,7 @@ class Command(NoArgsCommand):
}
template = get_template('email/accept_answer_reminder.html')
- body_text = template.render(Context(data))
+ body_text = template.render(Context(data))#todo: set lang
if DEBUG_THIS_COMMAND:
print "User: %s<br>\nSubject:%s<br>\nText: %s<br>\n" % \
diff --git a/askbot/management/commands/send_unanswered_question_reminders.py b/askbot/management/commands/send_unanswered_question_reminders.py
index 3fa390ad..982dbafb 100644
--- a/askbot/management/commands/send_unanswered_question_reminders.py
+++ b/askbot/management/commands/send_unanswered_question_reminders.py
@@ -1,4 +1,5 @@
from django.core.management.base import NoArgsCommand
+from django.template.loader import get_template
from askbot import models
from askbot import const
from askbot.conf import settings as askbot_settings
@@ -6,7 +7,6 @@ from django.utils.translation import ungettext
from askbot import mail
from askbot.utils.classes import ReminderSchedule
from askbot.models.question import Thread
-from askbot.skins.loaders import get_template
from django.template import Context
DEBUG_THIS_COMMAND = False
@@ -78,7 +78,7 @@ class Command(NoArgsCommand):
}
template = get_template('email/unanswered_question_reminder.html')
- body_text = template.render(Context(data))
+ body_text = template.render(Context(data))#todo: set lang
if DEBUG_THIS_COMMAND:
diff --git a/askbot/media/style/style.less b/askbot/media/style/style.less
index ed0e0572..69f4daf7 100644
--- a/askbot/media/style/style.less
+++ b/askbot/media/style/style.less
@@ -531,7 +531,7 @@ body.anon {
#searchBar {
width: 500px;
.searchInput {
- width: 440px;
+ width: 435px;
}
.searchInputCancelable {
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index c2c4a58d..0da80c4c 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -21,6 +21,7 @@ from celery.task import task
from django.core.urlresolvers import reverse, NoReverseMatch
from django.db.models import signals as django_signals
from django.template import Context
+from django.template.loader import get_template
from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
from django.utils.safestring import mark_safe
@@ -3438,9 +3439,8 @@ def send_respondable_email_validation_message(
)
data['email_code'] = reply_address.address
- from askbot.skins.loaders import get_template
template = get_template(template_name)
- body_text = template.render(Context(data))
+ body_text = template.render(Context(data))#todo: set lang
reply_to_address = 'welcome-%s@%s' % (
reply_address.address,
diff --git a/askbot/models/post.py b/askbot/models/post.py
index 03791e5e..ce7b249b 100644
--- a/askbot/models/post.py
+++ b/askbot/models/post.py
@@ -862,8 +862,8 @@ class Post(models.Model):
if quote_level > 0, the post will be indented that number of times
todo: move to views?
"""
- from askbot.skins.loaders import get_template
from django.template import Context
+ from django.template.loader import get_template
template = get_template('email/quoted_post.html')
data = {
'post': self,
@@ -871,7 +871,7 @@ class Post(models.Model):
'is_leaf_post': is_leaf_post,
'format': format
}
- return template.render(Context(data))
+ return template.render(Context(data))#todo: set lang
def format_for_email_as_parent_thread_summary(self):
"""format for email as summary of parent posts
@@ -895,10 +895,10 @@ class Post(models.Model):
"""outputs question or answer and all it's comments
returns empty string for all other post types
"""
- from askbot.skins.loaders import get_template
from django.template import Context
+ from django.template.loader import get_template
template = get_template('email/post_as_subthread.html')
- return template.render(Context({'post': self}))
+ return template.render(Context({'post': self}))#todo: set lang
def set_cached_comments(self, comments):
"""caches comments in the lifetime of the object
diff --git a/askbot/models/question.py b/askbot/models/question.py
index f7ead369..5c0d5732 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -8,6 +8,7 @@ from django.contrib.auth.models import User
from django.core import cache # import cache, not from cache import cache, to be able to monkey-patch cache.cache in test cases
from django.core import exceptions as django_exceptions
from django.core.urlresolvers import reverse
+from django.template.loader import get_template
from django.utils.hashcompat import md5_constructor
from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
@@ -30,7 +31,6 @@ from askbot import const
from askbot.utils.lists import LazyList
from askbot.search import mysql
from askbot.utils.slug import slugify
-from askbot.skins.loaders import get_template #jinja2 template loading enviroment
from askbot.search.state_manager import DummySearchState
class ThreadQuerySet(models.query.QuerySet):
diff --git a/askbot/setup_templates/settings.py.mustache b/askbot/setup_templates/settings.py.mustache
index 333df331..1f3dabd2 100644
--- a/askbot/setup_templates/settings.py.mustache
+++ b/askbot/setup_templates/settings.py.mustache
@@ -91,10 +91,9 @@ SECRET_KEY = 'sdljdfjkldsflsdjkhsjkldgjlsdgfs s '
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
+ 'askbot.skins.loaders.Loader',
'django.template.loaders.app_directories.Loader',
- #below is askbot stuff for this tuple
- 'askbot.skins.loaders.filesystem_load_template_source',
+ 'django.template.loaders.filesystem.Loader',
#'django.template.loaders.eggs.load_template_source',
)
diff --git a/askbot/skins/loaders.py b/askbot/skins/loaders.py
index 16b4ccf0..50276f34 100644
--- a/askbot/skins/loaders.py
+++ b/askbot/skins/loaders.py
@@ -1,6 +1,7 @@
import os.path
-from django.template.loaders.filesystem import Loader
+from django.template.loader import BaseLoader
from django.template import RequestContext
+from django.template import TemplateDoesNotExist
from django.http import HttpResponse
from django.utils import translation
from django.conf import settings as django_settings
@@ -22,29 +23,6 @@ template.add_to_builtins('askbot.templatetags.extra_filters_jinja')
#here it is ignored because it is assumed that we won't use unicode paths
ASKBOT_SKIN_COLLECTION_DIR = os.path.dirname(__file__)
-filesystem = Loader()
-
-#changed the name from load_template_source
-def filesystem_load_template_source(name, dirs=None):
- """Django template loader
- """
-
- if dirs is None:
- dirs = (ASKBOT_SKIN_COLLECTION_DIR, )
- else:
- dirs += (ASKBOT_SKIN_COLLECTION_DIR, )
-
- try:
- #todo: move this to top after splitting out get_skin_dirs()
- tname = os.path.join(askbot_settings.ASKBOT_DEFAULT_SKIN, 'templates', name)
- return filesystem.load_template_source(tname, dirs)
- except:
- tname = os.path.join('default', 'templates', name)
- return filesystem.load_template_source(tname, dirs)
-filesystem_load_template_source.is_usable = True
-#added this for backward compatbility
-load_template_source = filesystem_load_template_source
-
class SkinEnvironment(CoffinEnvironment):
"""Jinja template environment
that loads templates from askbot skins
@@ -105,8 +83,9 @@ def get_skin(request = None):
for a given request (request var is not used at this time)"""
return SKINS[askbot_settings.ASKBOT_DEFAULT_SKIN]
-def get_template(template, request = None):
- """retreives template for the skin
+def get_askbot_template(template, request = None):
+ """
+ retreives template for the skin
request variable will be used in the future to set
template according to the user preference or admins preference
@@ -119,21 +98,22 @@ def get_template(template, request = None):
def render_into_skin_as_string(template, data, request):
context = RequestContext(request, data)
- template = get_template(template, request)
+ template = get_askbot_template(template, request)
return template.render(context)
-def render_into_skin(template, data, request, mimetype = 'text/html'):
- """in the future this function will be able to
- switch skin depending on the site administrator/user selection
- right now only admins can switch
- """
- return HttpResponse(
- render_into_skin_as_string(template, data, request),
- mimetype=mimetype
- )
-
def render_text_into_skin(text, data, request):
context = RequestContext(request, data)
skin = get_skin(request)
template = skin.from_string(text)
return template.render(context)
+
+class Loader(BaseLoader):
+ """skins template loader for Django > 1.2
+ todo: verify that this actually follows django's convention correctly
+ """
+ is_usable = True
+ def load_template(self, template_name, template_dirs = None):
+ try:
+ return get_askbot_template(template_name), template_name
+ except TemplateNotFound:
+ raise TemplateDoesNotExist
diff --git a/askbot/startup_procedures.py b/askbot/startup_procedures.py
index 957aa14e..acb99b50 100644
--- a/askbot/startup_procedures.py
+++ b/askbot/startup_procedures.py
@@ -211,14 +211,28 @@ def test_encoding():
def test_template_loader():
"""Sends a warning if you have an old style template
loader that used to send a warning"""
- old_template_loader = 'askbot.skins.loaders.load_template_source'
- if old_template_loader in django_settings.TEMPLATE_LOADERS:
- raise AskbotConfigError(
- "\nPlease change: \n"
- "'askbot.skins.loaders.load_template_source', to\n"
- "'askbot.skins.loaders.filesystem_load_template_source',\n"
- "in the TEMPLATE_LOADERS of your settings.py file"
+ old_loaders = (
+ 'askbot.skins.loaders.load_template_source',
+ 'askbot.skins.loaders.filesystem_load_template_source',
+ )
+ errors = list()
+ for loader in old_loaders:
+ if loader in django_settings.TEMPLATE_LOADERS:
+ errors.append(
+ 'remove "%s" from the TEMPLATE_LOADERS setting' % loader
+ )
+
+ current_loader = 'askbot.skins.loaders.Loader'
+ if current_loader not in django_settings.TEMPLATE_LOADERS:
+ errors.append(
+ 'add "%s" to the beginning of the TEMPLATE_LOADERS' % current_loader
+ )
+ elif django_settings.TEMPLATE_LOADERS[0] != current_loader:
+ errors.append(
+ '"%s" must be the first element of TEMPLATE_LOADERS' % current_loader
)
+
+ print_errors(errors)
def test_celery():
"""Tests celery settings
@@ -458,7 +472,6 @@ def test_staticfiles():
' python manage.py collectstatic\n'
)
-
print_errors(errors)
if django_settings.STATICFILES_STORAGE == \
'django.contrib.staticfiles.storage.StaticFilesStorage':
diff --git a/askbot/tasks.py b/askbot/tasks.py
index 5cdd59b7..0ae96c09 100644
--- a/askbot/tasks.py
+++ b/askbot/tasks.py
@@ -24,6 +24,7 @@ import uuid
from django.contrib.contenttypes.models import ContentType
from django.template import Context
+from django.template.loader import get_template
from django.utils.translation import ugettext as _
from celery.decorators import task
from askbot.conf import settings as askbot_settings
@@ -80,7 +81,6 @@ def notify_author_of_published_revision_celery_task(revision):
}
#load the template
- from askbot.skins.loaders import get_template
template = get_template('email/notify_author_about_approved_post.html')
#todo: possibly add headers to organize messages in threads
headers = {'Reply-To': append_content_address}
@@ -191,7 +191,6 @@ def send_instant_notifications_about_activity_in_post(
return
#calculate some variables used in the loop below
- from askbot.skins.loaders import get_template
update_type_map = const.RESPONSE_ACTIVITY_TYPE_MAP_FOR_TEMPLATES
update_type = update_type_map[update_activity.activity_type]
origin_post = post.get_origin_post()
diff --git a/askbot/templates/404.html b/askbot/templates/404.html
index 158bfb94..2da99646 100644
--- a/askbot/templates/404.html
+++ b/askbot/templates/404.html
@@ -1,5 +1,44 @@
-{% load extra_tags %}
-{% include_jinja "404.jinja.html" request %}
-{% comment %}
-this one has to be a django template because of use of default hander404
-{% endcomment %}
+{% extends "one_column_body.html" %}
+<!-- template 404.jinja.html -->
+{% block title %}{% spaceless %}{% trans %}Page not found{% endtrans %}{% endspaceless %}{% endblock %}
+{% block forestyle%}
+<style type="text/css">
+ form input { margin-right: 5px; }
+</style>
+{% endblock %}
+{% block content %}
+<h1>{% trans %}Page not found{% endtrans %}</h1>
+<div id="main-body">
+ <div style="padding:5px 0px 10px 0;line-height:25px;">
+ <h2>{% trans %}Sorry, could not find the page you requested.{% endtrans %}</h2>
+ <div style="margin-top:5px">
+ {% trans %}This might have happened for the following reasons:{% endtrans %}<br/>
+ <ul>
+ <li>{% trans %}this question or answer has been deleted;{% endtrans %}</li>
+ <li>{% trans %}url has error - please check it;{% endtrans %}</li>
+ <li>{% trans %}the page you tried to visit is protected or you don't have sufficient points, see{% endtrans %} <a href="{% url faq %}">{% trans %}faq{% endtrans %}</a>;</li>
+ <li>{% trans %}if you believe this error 404 should not have occured, please{% endtrans %}
+ <a href="{{feedback_site_url}}" target="_blank">{% trans %}report this problem{% endtrans %}</a></li>
+ </u>
+ </div>
+ <script type="text/javascript">
+ var GOOG_FIXURL_LANG = '{{settings.LANGUAGE_CODE}}';
+ var GOOG_FIXURL_SITE = '{{site_url}}';
+ </script>
+ <script type="text/javascript" src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
+ <ul>
+ <li><a href="#" id="linkPrevious">{% trans %}back to previous page{% endtrans %} »</li>
+ <li><a href="{% url questions %}">{% trans %}see all questions{% endtrans %} »</a></li>
+ <li><a href="{% url tags %}">{% trans %}see all tags{% endtrans %} »</a></li>
+ </u>
+ </div>
+</div>
+{% endblock %}
+{% block endjs %}
+ <script type="text/javascript">
+ $().ready(function(){
+ $("#linkPrevious").bind("click", back=function(){history.go(-1);})
+ });
+ </script>
+{% endblock %}
+<!-- end template 404.jinja.html -->
diff --git a/askbot/templates/404.jinja.html b/askbot/templates/404.jinja.html
deleted file mode 100644
index 2da99646..00000000
--- a/askbot/templates/404.jinja.html
+++ /dev/null
@@ -1,44 +0,0 @@
-{% extends "one_column_body.html" %}
-<!-- template 404.jinja.html -->
-{% block title %}{% spaceless %}{% trans %}Page not found{% endtrans %}{% endspaceless %}{% endblock %}
-{% block forestyle%}
-<style type="text/css">
- form input { margin-right: 5px; }
-</style>
-{% endblock %}
-{% block content %}
-<h1>{% trans %}Page not found{% endtrans %}</h1>
-<div id="main-body">
- <div style="padding:5px 0px 10px 0;line-height:25px;">
- <h2>{% trans %}Sorry, could not find the page you requested.{% endtrans %}</h2>
- <div style="margin-top:5px">
- {% trans %}This might have happened for the following reasons:{% endtrans %}<br/>
- <ul>
- <li>{% trans %}this question or answer has been deleted;{% endtrans %}</li>
- <li>{% trans %}url has error - please check it;{% endtrans %}</li>
- <li>{% trans %}the page you tried to visit is protected or you don't have sufficient points, see{% endtrans %} <a href="{% url faq %}">{% trans %}faq{% endtrans %}</a>;</li>
- <li>{% trans %}if you believe this error 404 should not have occured, please{% endtrans %}
- <a href="{{feedback_site_url}}" target="_blank">{% trans %}report this problem{% endtrans %}</a></li>
- </u>
- </div>
- <script type="text/javascript">
- var GOOG_FIXURL_LANG = '{{settings.LANGUAGE_CODE}}';
- var GOOG_FIXURL_SITE = '{{site_url}}';
- </script>
- <script type="text/javascript" src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
- <ul>
- <li><a href="#" id="linkPrevious">{% trans %}back to previous page{% endtrans %} »</li>
- <li><a href="{% url questions %}">{% trans %}see all questions{% endtrans %} »</a></li>
- <li><a href="{% url tags %}">{% trans %}see all tags{% endtrans %} »</a></li>
- </u>
- </div>
-</div>
-{% endblock %}
-{% block endjs %}
- <script type="text/javascript">
- $().ready(function(){
- $("#linkPrevious").bind("click", back=function(){history.go(-1);})
- });
- </script>
-{% endblock %}
-<!-- end template 404.jinja.html -->
diff --git a/askbot/templates/500.jinja.html b/askbot/templates/500.html
index 297ae736..297ae736 100644
--- a/askbot/templates/500.jinja.html
+++ b/askbot/templates/500.html
diff --git a/askbot/templatetags/extra_tags.py b/askbot/templatetags/extra_tags.py
index dc9da5fc..6b148b4b 100644
--- a/askbot/templatetags/extra_tags.py
+++ b/askbot/templatetags/extra_tags.py
@@ -1,11 +1,12 @@
import math
from django import template
+from django.template import RequestContext
+from django.template.loader import get_template
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from askbot.utils import functions
from askbot.utils.slug import slugify
-from askbot.skins.loaders import get_template
from askbot.conf import settings as askbot_settings
register = template.Library()
@@ -90,8 +91,8 @@ class IncludeJinja(template.Node):
self.request_var = template.Variable(request_var)
def render(self, context):
request = self.request_var.resolve(context)
- jinja_template = get_template(self.filename, request)
- return jinja_template.render(context)
+ jinja_template = get_template(self.filename)
+ return jinja_template.render(RequestContext(request, context))
@register.tag
def include_jinja(parser, token):
@@ -112,4 +113,3 @@ def include_jinja(parser, token):
raise template.TemplateSyntaxError('file name must be quoted')
return IncludeJinja(filename, request_var)
-
diff --git a/askbot/tests/email_parsing_tests.py b/askbot/tests/email_parsing_tests.py
index c8f3a057..3ed0908a 100644
--- a/askbot/tests/email_parsing_tests.py
+++ b/askbot/tests/email_parsing_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from django.conf import settings as django_settings
-from askbot.skins.loaders import get_template
from django.template import Context
+from django.template.loader import get_template
from askbot import mail
from askbot import models
from askbot.tests import utils
diff --git a/askbot/tests/post_model_tests.py b/askbot/tests/post_model_tests.py
index e61fcd2d..031909fb 100644
--- a/askbot/tests/post_model_tests.py
+++ b/askbot/tests/post_model_tests.py
@@ -3,13 +3,13 @@ import datetime
from operator import attrgetter
import time
from askbot.search.state_manager import SearchState
-from askbot.skins.loaders import get_template
from django.contrib.auth.models import User
from django.core import cache, urlresolvers
from django.core.cache.backends.dummy import DummyCache
from django.core.cache.backends.locmem import LocMemCache
from django.core.exceptions import ValidationError
+from django.template.loader import get_template
from askbot.tests.utils import AskbotTestCase
from askbot.models import Post
from askbot.models import PostRevision
diff --git a/askbot/views/avatar_views.py b/askbot/views/avatar_views.py
index 42d0b38a..94252860 100644
--- a/askbot/views/avatar_views.py
+++ b/askbot/views/avatar_views.py
@@ -1,10 +1,15 @@
-"""this is an unfortunate copy-paste (mostly)
+"""
+todo: remove this module - not needed any more
+
+this is an unfortunate copy-paste (mostly)
from the avatar app - the reason is that django-avatar app
does not support jinja templates
"""
import urllib
from django.http import HttpResponseRedirect
from django.template import RequestContext
+from django.template.loader import get_template
+from django.shortcuts import render
from django.utils.translation import ugettext as _
from django.views.decorators import csrf
from django.conf import settings
@@ -17,7 +22,6 @@ from avatar.settings import AVATAR_MAX_AVATARS_PER_USER, AVATAR_DEFAULT_SIZE
from avatar.util import get_primary_avatar, get_default_avatar_url
from avatar.views import render_primary as django_avatar_render_primary
-from askbot.skins.loaders import render_into_skin
from askbot import models
notification = False
@@ -111,7 +115,7 @@ def add(request, extra_context=None, next_override=None,
if extra_context:
data.update(extra_context)
- return render_into_skin('avatar/add.html', data, request)
+ return render(request, 'avatar/add.html', data)
@login_required
@csrf.csrf_protect
@@ -153,7 +157,7 @@ def change(request, extra_context=None, next_override=None,
if extra_context:
data.update(extra_context)
- return render_into_skin('avatar/change.html', data, request)
+ return render(request, 'avatar/change.html', data)
@login_required
@csrf.csrf_protect
@@ -190,7 +194,7 @@ def delete(request, extra_context=None, next_override=None, *args, **kwargs):
if extra_context:
data.update(extra_context)
- return render_into_skin('avatar/confirm_delete.html', data, request)
+ return render(request, 'avatar/confirm_delete.html', data)
def render_primary(request, user_id = None, *args, **kwargs):
user = models.User.objects.get(id = user_id)
diff --git a/askbot/views/commands.py b/askbot/views/commands.py
index c072f7b8..de5bb12b 100644
--- a/askbot/views/commands.py
+++ b/askbot/views/commands.py
@@ -20,6 +20,8 @@ from django.http import HttpResponseRedirect
from django.http import HttpResponseForbidden
from django.forms import ValidationError, IntegerField, CharField
from django.shortcuts import get_object_or_404
+from django.shortcuts import render
+from django.template.loader import get_template
from django.views.decorators import csrf
from django.utils import simplejson
from django.utils.html import escape
@@ -35,8 +37,7 @@ from askbot.utils import decorators
from askbot.utils import url_utils
from askbot.utils.forms import get_db_object_or_404
from askbot import mail
-from django.template import Context
-from askbot.skins.loaders import render_into_skin, get_template
+from django.template import RequestContext
from askbot.skins.loaders import render_into_skin_as_string
from askbot.skins.loaders import render_text_into_skin
from askbot import const
@@ -115,7 +116,7 @@ def manage_inbox(request):
'post': post.html,
'reject_reason': reject_reason.details.html
}
- body_text = template.render(Context(data))
+ body_text = template.render(RequestContext(request, data))
mail.send_mail(
subject_line = _('your post was not accepted'),
body_text = unicode(body_text),
@@ -684,7 +685,7 @@ def subscribe_for_tags(request):
return HttpResponseRedirect(reverse('index'))
else:
data = {'tags': tag_names}
- return render_into_skin('subscribe_for_tags.html', data, request)
+ return render(request, 'subscribe_for_tags.html', data)
else:
all_tag_names = pure_tag_names + wildcards
message = _('Please sign in to subscribe for: %(tags)s') \
@@ -769,7 +770,7 @@ def close(request, id):#close question
'question': question,
'form': form,
}
- return render_into_skin('close.html', data, request)
+ return render(request, 'close.html', data)
except exceptions.PermissionDenied, e:
request.user.message_set.create(message = unicode(e))
return HttpResponseRedirect(question.get_absolute_url())
@@ -798,7 +799,7 @@ def reopen(request, id):#re-open question
'closed_by_profile_url': closed_by_profile_url,
'closed_by_username': closed_by_username,
}
- return render_into_skin('reopen.html', data, request)
+ return render(request, 'reopen.html', data)
except exceptions.PermissionDenied, e:
request.user.message_set.create(message = unicode(e))
diff --git a/askbot/views/meta.py b/askbot/views/meta.py
index 22c701d9..bb152d5b 100644
--- a/askbot/views/meta.py
+++ b/askbot/views/meta.py
@@ -6,7 +6,9 @@ This module contains a collection of views displaying all sorts of secondary and
from django.shortcuts import render_to_response, get_object_or_404
from django.core.urlresolvers import reverse
from django.core.paginator import Paginator, EmptyPage, InvalidPage
+from django.shortcuts import render
from django.template import RequestContext, Template
+from django.template.loader import get_template
from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
@@ -21,16 +23,16 @@ from askbot.utils.forms import get_next_url
from askbot.mail import mail_moderators
from askbot.models import BadgeData, Award, User, Tag
from askbot.models import badges as badge_data
-from askbot.skins.loaders import get_template, render_into_skin, render_text_into_skin
+from askbot.skins.loaders import render_text_into_skin
from askbot.utils.decorators import admins_only
from askbot.utils.forms import get_next_url
from askbot.utils import functions
def generic_view(request, template = None, page_class = None):
- """this may be not necessary, since it is just a rewrite of render_into_skin"""
+ """this may be not necessary, since it is just a rewrite of render"""
if request is None: # a plug for strange import errors in django startup
return render_to_response('django_error.html')
- return render_into_skin(template, {'page_class': page_class}, request)
+ return render(request, template, {'page_class': page_class})
def config_variable(request, variable_name = None, mimetype = None):
"""Print value from the configuration settings
@@ -47,7 +49,7 @@ def about(request, template='about.html'):
'page_class': 'meta',
'content': askbot_settings.FORUM_ABOUT
}
- return render_into_skin('static_page.html', data, request)
+ return render(request, 'static_page.html', data)
def page_not_found(request, template='404.html'):
return generic_view(request, template)
@@ -60,7 +62,7 @@ def help(request):
'app_name': askbot_settings.APP_SHORT_NAME,
'page_class': 'meta'
}
- return render_into_skin('help.html', data, request)
+ return render(render, 'help.html', data)
def faq(request):
if askbot_settings.FORUM_FAQ.strip() != '':
@@ -69,18 +71,14 @@ def faq(request):
'content': askbot_settings.FORUM_FAQ,
'page_class': 'meta',
}
- return render_into_skin(
- 'static_page.html',
- data,
- request
- )
+ return render(request, 'static_page.html', data)
else:
data = {
'gravatar_faq_url': reverse('faq') + '#gravatar',
'ask_question_url': reverse('ask'),
'page_class': 'meta',
}
- return render_into_skin('faq_static.html', data, request)
+ return render(request, 'faq_static.html', data)
@csrf.csrf_protect
def feedback(request):
@@ -108,7 +106,7 @@ def feedback(request):
data['message'] = form.cleaned_data['message']
data['name'] = form.cleaned_data.get('name', None)
- template = get_template('email/feedback_email.txt', request)
+ template = get_template('email/feedback_email.txt')
message = template.render(RequestContext(request, data))
headers = {}
@@ -128,7 +126,7 @@ def feedback(request):
initial={'next':get_next_url(request)})
data['form'] = form
- return render_into_skin('feedback.html', data, request)
+ return render(request, 'feedback.html', data)
feedback.CANCEL_MESSAGE=_('We look forward to hearing your feedback! Please, give it next time :)')
def privacy(request):
@@ -137,7 +135,7 @@ def privacy(request):
'page_class': 'meta',
'content': askbot_settings.FORUM_PRIVACY
}
- return render_into_skin('static_page.html', data, request)
+ return render(request, 'static_page.html', data)
def badges(request):#user status/reputation system
#todo: supplement database data with the stuff from badges.py
@@ -161,7 +159,7 @@ def badges(request):#user status/reputation system
'mybadges' : my_badges,
'feedback_faq_url' : reverse('feedback'),
}
- return render_into_skin('badges.html', data, request)
+ return render(request, 'badges.html', data)
def badge(request, id):
#todo: supplement database data with the stuff from badges.py
@@ -182,7 +180,7 @@ def badge(request, id):
'badge' : badge,
'page_class': 'meta',
}
- return render_into_skin('badge.html', data, request)
+ return render(request, 'badge.html', data)
@admins_only
def list_suggested_tags(request):
@@ -222,4 +220,4 @@ def list_suggested_tags(request):
'page_title': _('Suggested tags'),
'paginator_context' : paginator_context,
}
- return render_into_skin('list_suggested_tags.html', data, request)
+ return render(request, 'list_suggested_tags.html', data)
diff --git a/askbot/views/readers.py b/askbot/views/readers.py
index 3211a86b..f1b31b32 100644
--- a/askbot/views/readers.py
+++ b/askbot/views/readers.py
@@ -11,9 +11,11 @@ import logging
import urllib
import operator
from django.shortcuts import get_object_or_404
+from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse, Http404, HttpResponseNotAllowed
from django.core.paginator import Paginator, EmptyPage, InvalidPage
-from django.template import Context
+from django.template.loader import get_template
+from django.template import RequestContext
from django.utils import simplejson
from django.utils.html import escape
from django.utils.translation import ugettext as _
@@ -41,7 +43,6 @@ from askbot.utils.decorators import anonymous_forbidden, ajax_only, get_only
from askbot.search.state_manager import SearchState, DummySearchState
from askbot.templatetags import extra_tags
from askbot.conf import settings as askbot_settings
-from askbot.skins.loaders import render_into_skin, get_template #jinja2 template loading enviroment
from askbot.views import context
# used in index page
@@ -151,23 +152,31 @@ def questions(request, **kwargs):
question_counter = question_counter % {'q_num': humanize.intcomma(q_count),}
if q_count > page_size:
- paginator_tpl = get_template('main_page/paginator.html', request)
- paginator_html = paginator_tpl.render(Context({
- 'context': functions.setup_paginator(paginator_context),
- 'questions_count': q_count,
- 'page_size' : page_size,
- 'search_state': search_state,
- }))
+ paginator_tpl = get_template('main_page/paginator.html')
+ paginator_html = paginator_tpl.render(
+ RequestContext(
+ request, {
+ 'context': functions.setup_paginator(paginator_context),
+ 'questions_count': q_count,
+ 'page_size' : page_size,
+ 'search_state': search_state,
+ }
+ )
+ )
else:
paginator_html = ''
- questions_tpl = get_template('main_page/questions_loop.html', request)
- questions_html = questions_tpl.render(Context({
- 'threads': page,
- 'search_state': search_state,
- 'reset_method_count': reset_method_count,
- 'request': request
- }))
+ questions_tpl = get_template('main_page/questions_loop.html')
+ questions_html = questions_tpl.render(
+ RequestContext(
+ request, {
+ 'threads': page,
+ 'search_state': search_state,
+ 'reset_method_count': reset_method_count,
+ 'request': request
+ }
+ )
+ )
ajax_data = {
'query_data': {
@@ -226,7 +235,7 @@ def questions(request, **kwargs):
'feed_url': context_feed_url,
}
- return render_into_skin('main_page.html', template_data, request)
+ return render(request, 'main_page.html', template_data)
def tags(request):#view showing a listing of available tags - plain list
@@ -316,7 +325,7 @@ def tags(request):#view showing a listing of available tags - plain list
'search_state': SearchState(*[None for x in range(7)])
}
- return render_into_skin('tags.html', data, request)
+ return render(request, 'tags.html', data)
@csrf.csrf_protect
def question(request, id):#refactor - long subroutine. display question body, answers and comments
@@ -598,7 +607,7 @@ def question(request, id):#refactor - long subroutine. display question body, an
data.update(context.get_for_tag_editor())
- return render_into_skin('question.html', data, request)
+ return render(request, 'question.html', data)
def revisions(request, id, post_type = None):
assert post_type in ('question', 'answer')
@@ -621,7 +630,7 @@ def revisions(request, id, post_type = None):
'post': post,
'revisions': revisions,
}
- return render_into_skin('revisions.html', data, request)
+ return render(request, 'revisions.html', data)
@csrf.csrf_exempt
@ajax_only
diff --git a/askbot/views/users.py b/askbot/views/users.py
index 2a5b1047..6c2a34fd 100644
--- a/askbot/views/users.py
+++ b/askbot/views/users.py
@@ -21,6 +21,7 @@ from django.core.paginator import Paginator, EmptyPage, InvalidPage
from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404
+from django.shortcuts import render
from django.http import HttpResponse, HttpResponseForbidden
from django.http import HttpResponseRedirect, Http404
from django.utils.translation import ugettext as _
@@ -40,7 +41,6 @@ from askbot import models
from askbot import exceptions
from askbot.models.badges import award_badges_signal
from askbot.models.tag import format_personal_group_name
-from askbot.skins.loaders import render_into_skin
from askbot.search.state_manager import SearchState
from askbot.utils import url_utils
from askbot.utils.loading import load_module
@@ -200,7 +200,7 @@ def show_users(request, by_group=False, group_id=None, group_slug=None):
'group_openness_choices': group_openness_choices
}
- return render_into_skin('users.html', data, request)
+ return render(request, 'users.html', data)
@csrf.csrf_protect
def user_moderate(request, subject, context):
@@ -294,7 +294,7 @@ def user_moderate(request, subject, context):
'user_status_changed': user_status_changed
}
context.update(data)
- return render_into_skin('user_profile/user_moderate.html', context, request)
+ return render(request, 'user_profile/user_moderate.html', context)
#non-view function
def set_new_email(user, new_email, nomessage=False):
@@ -356,7 +356,7 @@ def edit_user(request, id):
'support_custom_avatars': ('avatar' in django_settings.INSTALLED_APPS),
'view_user': user,
}
- return render_into_skin('user_profile/user_edit.html', data, request)
+ return render(request, 'user_profile/user_edit.html', data)
def user_stats(request, user, context):
question_filter = {}
@@ -528,7 +528,7 @@ def user_stats(request, user, context):
}
context.update(data)
- return render_into_skin('user_profile/user_stats.html', context, request)
+ return render(request, 'user_profile/user_stats.html', context)
def user_recent(request, user, context):
@@ -682,7 +682,7 @@ def user_recent(request, user, context):
'activities' : activities[:const.USER_VIEW_DATA_SIZE]
}
context.update(data)
- return render_into_skin('user_profile/user_recent.html', context, request)
+ return render(request, 'user_profile/user_recent.html', context)
#not a view - no direct url route here, called by `user_responses`
@csrf.csrf_protect
@@ -714,7 +714,7 @@ def show_group_join_requests(request, user, context):
'join_requests': join_requests
}
context.update(data)
- return render_into_skin('user_inbox/group_join_requests.html', context, request)
+ return render(request, 'user_inbox/group_join_requests.html', context)
@owner_or_moderator_required
@@ -769,9 +769,7 @@ def user_responses(request, user, context):
'page_title' : _('profile - messages')
}
context.update(data)
- return render_into_skin(
- 'user_inbox/messages.html', context, request
- )
+ return render(request, 'user_inbox/messages.html', context)
else:
raise Http404
@@ -839,7 +837,7 @@ def user_responses(request, user, context):
'responses' : filtered_response_list,
}
context.update(data)
- return render_into_skin('user_inbox/responses_and_flags.html', context, request)
+ return render(request, 'user_inbox/responses_and_flags.html', context)
def user_network(request, user, context):
if 'followit' not in django_settings.INSTALLED_APPS:
@@ -850,7 +848,7 @@ def user_network(request, user, context):
'followers': user.get_followers(),
}
context.update(data)
- return render_into_skin('user_profile/user_network.html', context, request)
+ return render(request, 'user_profile/user_network.html', context)
@owner_or_moderator_required
def user_votes(request, user, context):
@@ -880,7 +878,7 @@ def user_votes(request, user, context):
'votes' : votes[:const.USER_VIEW_DATA_SIZE]
}
context.update(data)
- return render_into_skin('user_profile/user_votes.html', context, request)
+ return render(request, 'user_profile/user_votes.html', context)
def user_reputation(request, user, context):
@@ -903,7 +901,7 @@ def user_reputation(request, user, context):
'reps': reps
}
context.update(data)
- return render_into_skin('user_profile/user_reputation.html', context, request)
+ return render(request, 'user_profile/user_reputation.html', context)
def user_favorites(request, user, context):
@@ -921,7 +919,7 @@ def user_favorites(request, user, context):
'questions' : questions,
}
context.update(data)
- return render_into_skin('user_profile/user_favorites.html', context, request)
+ return render(request, 'user_profile/user_favorites.html', context)
@owner_or_moderator_required
@@ -972,10 +970,10 @@ def user_email_subscriptions(request, user, context):
'action_status': action_status,
}
context.update(data)
- return render_into_skin(
+ return render(
+ request,
'user_profile/user_email_subscriptions.html',
- context,
- request
+ context
)
@csrf.csrf_protect
@@ -994,7 +992,7 @@ def user_custom_tab(request, user, context):
'tab_name': tab_settings['SLUG'],
'page_title': page_title
})
- return render_into_skin('user_profile/custom_tab.html', context, request)
+ return render(request, 'user_profile/custom_tab.html', context)
USER_VIEW_CALL_TABLE = {
'stats': user_stats,
@@ -1118,4 +1116,4 @@ def groups(request, id = None, slug = None):
'tab_name': scope,
'page_class': 'groups-page'
}
- return render_into_skin('groups.html', data, request)
+ return render(request, 'groups.html', data)
diff --git a/askbot/views/widgets.py b/askbot/views/widgets.py
index 9ad2d900..f607411d 100644
--- a/askbot/views/widgets.py
+++ b/askbot/views/widgets.py
@@ -1,6 +1,8 @@
from datetime import datetime
-from django.template import Context
+from django.template import RequestContext
+from django.template.loader import get_template
+from django.shortcuts import render
from django.http import HttpResponse, Http404
from django.views.decorators import csrf
from django.core.urlresolvers import reverse
@@ -8,7 +10,6 @@ from django.shortcuts import redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
-from askbot.skins.loaders import render_into_skin, get_template
from askbot.conf import settings as askbot_settings
from askbot.utils import decorators
from askbot import models
@@ -45,7 +46,7 @@ def widgets(request):
'question_widgets': models.QuestionWidget.objects.all().count(),
'page_class': 'widgets'
}
- return render_into_skin('embed/widgets.html', data, request)
+ return render(request, 'embed/widgets.html', data)
@csrf.csrf_protect
def ask_widget(request, widget_id):
@@ -127,7 +128,7 @@ def ask_widget(request, widget_id):
'widget': widget,
'editor_type': askbot_settings.EDITOR_TYPE
}
- return render_into_skin('embed/ask_by_widget.html', data, request)
+ return render(request, 'embed/ask_by_widget.html', data)
@login_required
def ask_widget_complete(request):
@@ -142,7 +143,7 @@ def ask_widget_complete(request):
del request.session['widget_css']
data = {'question_url': question_url, 'custom_css': custom_css}
- return render_into_skin('embed/ask_widget_complete.html', data, request)
+ return render(request, 'embed/ask_widget_complete.html', data)
@decorators.admins_only
@@ -153,7 +154,7 @@ def list_widgets(request, model):
'widgets': widgets,
'widget_name': model
}
- return render_into_skin('embed/list_widgets.html', data, request)
+ return render(request, 'embed/list_widgets.html', data)
@decorators.admins_only
def create_widget(request, model):
@@ -171,7 +172,7 @@ def create_widget(request, model):
data = {'form': form,
'action': 'edit',
'widget_name': model}
- return render_into_skin('embed/widget_form.html', data, request)
+ return render(request, 'embed/widget_form.html', data)
@decorators.admins_only
def edit_widget(request, model, widget_id):
@@ -210,7 +211,7 @@ def edit_widget(request, model, widget_id):
data = {'form': form,
'action': 'edit',
'widget_name': model}
- return render_into_skin('embed/widget_form.html', data, request)
+ return render(request, 'embed/widget_form.html', data)
@decorators.admins_only
def delete_widget(request, model, widget_id):
@@ -220,28 +221,35 @@ def delete_widget(request, model, widget_id):
widget.delete()
return redirect('list_widgets', model=model)
else:
- return render_into_skin('embed/delete_widget.html',
- {'widget': widget, 'widget_name': model}, request)
+ return render(
+ request,
+ 'embed/delete_widget.html',
+ {'widget': widget, 'widget_name': model}
+ )
def render_ask_widget_js(request, widget_id):
widget = get_object_or_404(models.AskWidget, pk=widget_id)
variable_name = "AskbotAskWidget%d" % widget.id
- content_tpl = get_template('embed/askbot_widget.js', request)
- context_dict = {'widget': widget,
- 'host': request.get_host(),
- 'variable_name': variable_name}
- content = content_tpl.render(Context(context_dict))
+ content_tpl = get_template('embed/askbot_widget.js')
+ context_dict = {
+ 'widget': widget,
+ 'host': request.get_host(),
+ 'variable_name': variable_name
+ }
+ content = content_tpl.render(RequestContext(request, context_dict))
return HttpResponse(content, mimetype='text/javascript')
def render_ask_widget_css(request, widget_id):
widget = get_object_or_404(models.AskWidget, pk=widget_id)
variable_name = "AskbotAskWidget%d" % widget.id
- content_tpl = get_template('embed/askbot_widget.css', request)
- context_dict = {'widget': widget,
- 'host': request.get_host(),
- 'editor_type': askbot_settings.EDITOR_TYPE,
- 'variable_name': variable_name}
- content = content_tpl.render(Context(context_dict))
+ content_tpl = get_template('embed/askbot_widget.css')
+ context_dict = {
+ 'widget': widget,
+ 'host': request.get_host(),
+ 'editor_type': askbot_settings.EDITOR_TYPE,
+ 'variable_name': variable_name
+ }
+ content = content_tpl.render(RequestContext(request, context_dict))
return HttpResponse(content, mimetype='text/css')
def question_widget(request, widget_id):
@@ -275,4 +283,4 @@ def question_widget(request, widget_id):
'widget': widget
}
- return render_into_skin('embed/question_widget.html', data, request)
+ return render(request, 'embed/question_widget.html', data)
diff --git a/askbot/views/writers.py b/askbot/views/writers.py
index d1504d23..da4ce6a1 100644
--- a/askbot/views/writers.py
+++ b/askbot/views/writers.py
@@ -14,6 +14,7 @@ import tempfile
import time
import urlparse
from django.shortcuts import get_object_or_404
+from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, Http404
@@ -29,7 +30,6 @@ from askbot import exceptions as askbot_exceptions
from askbot import forms
from askbot import models
from askbot.conf import settings as askbot_settings
-from askbot.skins.loaders import render_into_skin
from askbot.utils import decorators
from askbot.utils.forms import format_errors
from askbot.utils.functions import diff_date
@@ -192,7 +192,7 @@ def import_data(request):
'dump_upload_form': form,
'need_configuration': (not stackexchange.is_ready())
}
- return render_into_skin('import_data.html', data, request)
+ return render(request, 'import_data.html', data)
#@login_required #actually you can post anonymously, but then must register
@csrf.csrf_protect
@@ -302,7 +302,7 @@ def ask(request):#view used to ask a new question
'tag_names': list()#need to keep context in sync with edit_question for tag editor
}
data.update(context.get_for_tag_editor())
- return render_into_skin('ask.html', data, request)
+ return render(request, 'ask.html', data)
@login_required
@csrf.csrf_exempt
@@ -349,7 +349,7 @@ def retag_question(request, id):
'question': question,
'form' : form,
}
- return render_into_skin('question_retag.html', data, request)
+ return render(request, 'question_retag.html', data)
except exceptions.PermissionDenied, e:
if request.is_ajax():
response_data = {
@@ -394,7 +394,7 @@ def edit_question(request, id):
form = forms.EditQuestionForm(
request.POST,
question=question,
- user=quest.user,
+ user=question.user,
revision=revision
)
else:#new content edit
@@ -455,7 +455,7 @@ def edit_question(request, id):
'category_tree_data': askbot_settings.CATEGORY_TREE
}
data.update(context.get_for_tag_editor())
- return render_into_skin('question_edit.html', data, request)
+ return render(request, 'question_edit.html', data)
except exceptions.PermissionDenied, e:
request.user.message_set.create(message = unicode(e))
@@ -522,7 +522,7 @@ def edit_answer(request, id):
'revision_form': revision_form,
'form': form,
}
- return render_into_skin('answer_edit.html', data, request)
+ return render(request, 'answer_edit.html', data)
except exceptions.PermissionDenied, e:
request.user.message_set.create(message = unicode(e))