diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2013-03-27 23:41:46 -0400 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2013-03-27 23:41:46 -0400 |
commit | 85db009cc8f28f98c277c3631f169b5d648a1155 (patch) | |
tree | 3225549f3a128bf4671079aa09d047fa02de70c4 /askbot/views | |
parent | a4a2fcf214813d5c79908609b335cab3d2599a62 (diff) | |
parent | 86c38acf1038c23f0f4bd83a980cf5369834eaf5 (diff) | |
download | askbot-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.py | 9 | ||||
-rw-r--r-- | askbot/views/users.py | 1 | ||||
-rw-r--r-- | askbot/views/writers.py | 59 |
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)) |