summaryrefslogtreecommitdiffstats
path: root/askbot/views
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2013-03-27 23:41:46 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2013-03-27 23:41:46 -0400
commit85db009cc8f28f98c277c3631f169b5d648a1155 (patch)
tree3225549f3a128bf4671079aa09d047fa02de70c4 /askbot/views
parenta4a2fcf214813d5c79908609b335cab3d2599a62 (diff)
parent86c38acf1038c23f0f4bd83a980cf5369834eaf5 (diff)
downloadaskbot-85db009cc8f28f98c277c3631f169b5d648a1155.tar.gz
askbot-85db009cc8f28f98c277c3631f169b5d648a1155.tar.bz2
askbot-85db009cc8f28f98c277c3631f169b5d648a1155.zip
merged the master branch
Diffstat (limited to 'askbot/views')
-rw-r--r--askbot/views/readers.py9
-rw-r--r--askbot/views/users.py1
-rw-r--r--askbot/views/writers.py59
3 files changed, 59 insertions, 10 deletions
diff --git a/askbot/views/readers.py b/askbot/views/readers.py
index ce92ded6..fa39426c 100644
--- a/askbot/views/readers.py
+++ b/askbot/views/readers.py
@@ -40,6 +40,7 @@ from askbot import const
from askbot.utils import functions
from askbot.utils.html import sanitize_html
from askbot.utils.decorators import anonymous_forbidden, ajax_only, get_only
+from askbot.utils.loading import load_module
from askbot.search.state_manager import SearchState, DummySearchState
from askbot.templatetags import extra_tags
from askbot.conf import settings as askbot_settings
@@ -614,6 +615,14 @@ def question(request, id):#refactor - long subroutine. display question body, an
data.update(context.get_for_tag_editor())
+ extra_context = getattr(
+ django_settings, 'ASKBOT_QUESTION_PAGE_EXTRA_CONTEXT', None
+ )
+ if extra_context:
+ extra_context_getter = load_module(extra_context)
+ extra_data = extra_context_getter(request, data)
+ data.update(extra_data)
+
return render(request, 'question.html', data)
def revisions(request, id, post_type = None):
diff --git a/askbot/views/users.py b/askbot/views/users.py
index 0305eb48..a1304dfb 100644
--- a/askbot/views/users.py
+++ b/askbot/views/users.py
@@ -726,6 +726,7 @@ def show_group_join_requests(request, user, context):
).order_by('-active_at')
data = {
'active_tab':'users',
+ 'inbox_section': 'group-join-requests',
'page_class': 'user-profile-page',
'tab_name' : 'join_requests',
'tab_description' : _('group joining requests'),
diff --git a/askbot/views/writers.py b/askbot/views/writers.py
index f886b7a6..896ef09d 100644
--- a/askbot/views/writers.py
+++ b/askbot/views/writers.py
@@ -35,12 +35,14 @@ from django.views.decorators import csrf
from askbot import exceptions as askbot_exceptions
from askbot import forms
from askbot import models
+from askbot.models import signals
from askbot.conf import settings as askbot_settings
from askbot.utils import decorators
from askbot.utils.forms import format_errors
from askbot.utils.functions import diff_date
from askbot.utils import url_utils
from askbot.utils.file_utils import store_file
+from askbot.utils.loading import load_module
from askbot.views import context
from askbot.templatetags import extra_filters_jinja as template_filters
from askbot.importers.stackexchange import management as stackexchange#todo: may change
@@ -479,6 +481,13 @@ def edit_question(request, id):
def edit_answer(request, id):
answer = get_object_or_404(models.Post, id=id)
revision = answer.get_latest_revision()
+
+ class_path = getattr(settings, 'ASKBOT_EDIT_ANSWER_FORM', None)
+ if class_path:
+ edit_answer_form_class = load_module(class_path)
+ else:
+ edit_answer_form_class = forms.EditAnswerForm
+
try:
request.user.assert_can_edit_answer(answer)
if request.method == "POST":
@@ -493,18 +502,18 @@ def edit_answer(request, id):
# Replace with those from the selected revision
rev = revision_form.cleaned_data['revision']
revision = answer.revisions.get(revision = rev)
- form = forms.EditAnswerForm(
+ form = edit_answer_form_class(
answer, revision, user=request.user
)
else:
- form = forms.EditAnswerForm(
- answer,
- revision,
- request.POST,
- user=request.user
- )
+ form = edit_answer_form_class(
+ answer,
+ revision,
+ request.POST,
+ user=request.user
+ )
else:
- form = forms.EditAnswerForm(
+ form = edit_answer_form_class(
answer, revision, request.POST, user=request.user
)
revision_form = forms.RevisionForm(answer, revision)
@@ -522,12 +531,27 @@ def edit_answer(request, id):
is_private=is_private,
suppress_email=suppress_email
)
+
+ signals.answer_edited.send(None,
+ answer=answer,
+ user=user,
+ form_data=form.cleaned_data
+ )
+
return HttpResponseRedirect(answer.get_absolute_url())
else:
revision_form = forms.RevisionForm(answer, revision)
- form = forms.EditAnswerForm(answer, revision, user=request.user)
+ form = edit_answer_form_class(answer, revision, user=request.user)
if request.user.can_make_group_private_posts():
form.initial['post_privately'] = answer.is_private()
+
+ #gives a chance to set extra initial data on the form
+ signals.answer_before_editing.send(None,
+ answer=answer,
+ user=request.user,
+ form=form
+ )
+
data = {
'page_class': 'edit-answer-page',
'active_tab': 'questions',
@@ -555,7 +579,15 @@ def answer(request, id):#process a new answer
"""
question = get_object_or_404(models.Post, post_type='question', id=id)
if request.method == "POST":
- form = forms.AnswerForm(request.POST, user=request.user)
+
+ custom_class_path = getattr(settings, 'ASKBOT_NEW_ANSWER_FORM', None)
+ if custom_class_path:
+ form_class = load_module(custom_class_path)
+ else:
+ form_class = forms.AnswerForm
+
+ form = form_class(request.POST, user=request.user)
+
if form.is_valid():
wiki = form.cleaned_data['wiki']
text = form.cleaned_data['text']
@@ -581,6 +613,13 @@ def answer(request, id):#process a new answer
is_private = is_private,
timestamp = update_time,
)
+
+ signals.new_answer_posted.send(None,
+ answer=answer,
+ user=user,
+ form_data=form.cleaned_data
+ )
+
return HttpResponseRedirect(answer.get_absolute_url())
except askbot_exceptions.AnswerAlreadyGiven, e:
request.user.message_set.create(message = unicode(e))