Esempio n. 1
0
def answer(request, id):
    question = get_object_or_404(Question, id=id)
    if request.POST:
        form = AnswerForm(question, request.POST)
        if form.is_valid():
            if request.user.is_authenticated():
                answer = AnswerAction(user=request.user, ip=request.META['REMOTE_ADDR']).save(dict(question=question, **form.cleaned_data)).node
                return HttpResponseRedirect(answer.get_absolute_url())
            else:
                request.session['temp_node_data'] = request.POST
                request.session['temp_node_type'] = 'answer'
                request.session['temp_question_id'] = id
                return HttpResponseRedirect(reverse('auth_action_signin', kwargs={'action': 'newquestion'}))
        else:
            request.session['redirect_POST_data'] = request.POST
            return HttpResponseRedirect(question.get_absolute_url() + '#fmanswer')

    return HttpResponseRedirect(question.get_absolute_url())
Esempio n. 2
0
def answer(request, id):
    question = get_object_or_404(Question, id=id)

    if request.POST:
        form = AnswerForm(request.POST, request.user)

        if request.session.pop('reviewing_pending_data',
                               False) or not form.is_valid():
            request.session['redirect_POST_data'] = request.POST
            return HttpResponseRedirect(question.get_absolute_url() +
                                        '#fmanswer')

        if request.user.is_authenticated(
        ) and request.user.email_valid_and_can_answer():
            answer_action = AnswerAction(user=request.user,
                                         ip=request.META['REMOTE_ADDR']).save(
                                             dict(question=question,
                                                  **form.cleaned_data))
            answer = answer_action.node

            if settings.WIKI_ON and request.POST.get('wiki', False):
                answer.nstate.wiki = answer_action

            return HttpResponseRedirect(answer.get_absolute_url())
        else:
            #            request.session[PENDING_SUBMISSION_SESSION_ATTR] = {
            #                'POST': request.POST,
            #                'data_name': _("answer"),
            #                'type': 'answer',
            #                'submission_url': reverse('answer', kwargs={'id': id}),
            #                'time': datetime.datetime.now(pytz.utc)
            #            }

            if request.user.is_authenticated():
                #               messages.info(request, _("Your answer is pending until you %s.") % html.hyperlink(
                #                   django_settings.APP_URL + reverse('send_validation_email', prefix='/'), _("validate your email")
                #               ))
                messages.info(
                    request,
                    _("Your Magnate status does not allow you to answer questions."
                      ))
                return HttpResponseRedirect(question.get_absolute_url())
            else:
                return HttpResponseRedirect(reverse('auth_signin'))

    return HttpResponseRedirect(question.get_absolute_url())
Esempio n. 3
0
def answer(request, id):
    question = get_object_or_404(Question, id=id)

    from forum.models import CustomBadge
    if not CustomBadge.is_response_restricted(request.user,
                                              question) and request.POST:
        form = AnswerForm(request.POST, request.user)

        if request.session.pop('reviewing_pending_data',
                               False) or not form.is_valid():
            request.session['redirect_POST_data'] = request.POST
            return HttpResponseRedirect(question.get_absolute_url() +
                                        '#fmanswer')

        if request.user.is_authenticated(
        ) and request.user.email_valid_and_can_answer():
            answer_action = AnswerAction(user=request.user,
                                         ip=request.META['REMOTE_ADDR']).save(
                                             dict(question=question,
                                                  **form.cleaned_data))
            answer = answer_action.node

            if settings.WIKI_ON and request.POST.get('wiki', False):
                answer.nstate.wiki = answer_action

            return HttpResponseRedirect(answer.get_absolute_url())
        else:
            request.session['pending_submission_data'] = {
                'POST': request.POST,
                'data_name': _("answer"),
                'type': 'answer',
                'submission_url': reverse('answer', kwargs={'id': id}),
                'time': datetime.datetime.now()
            }

            if request.user.is_authenticated():
                request.user.message_set.create(
                    message=_("Your answer is pending until you %s.") %
                    html.hyperlink(reverse('send_validation_email'),
                                   _("validate your email")))
                return HttpResponseRedirect(question.get_absolute_url())
            else:
                return HttpResponseRedirect(reverse('auth_signin'))

    return HttpResponseRedirect(question.get_absolute_url())
Esempio n. 4
0
    room.speak(unicode(message))


def full_app_url(url):
    return APP_URL + url


def question_posted(action, new):
    if not enabled():
        return
    question = action.node
    speak(_('New question: %(headline)s - %(url)s' % {
            'headline': question.headline,
            'url': full_app_url(question.get_absolute_url())
            }))


def answer_posted(action, new):
    if not enabled():
        return
    answer = action.node
    question = answer.question
    speak(_('New answer posted for question: %(headline)s - %(url)s' % {
        'headline': question.headline,
        'url': full_app_url(question.get_absolute_url())
        }))


AskAction.hook(question_posted)
AnswerAction.hook(answer_posted)
Esempio n. 5
0
    subscribers = question.subscribers.filter(
        subscription_settings__enable_notifications=True,
        subscription_settings__notify_answers=True,
        subscription_settings__subscribed_questions='i').exclude(
            id=answer.author.id).distinct()

    subscribers = filter_subscribers(subscribers)

    send_template_email(subscribers, "notifications/newanswer.html",
                        {'answer': answer})

    create_subscription_if_not_exists(question, answer.author)


AnswerAction.hook(answer_posted)


def comment_posted(action, new):
    comment = action.node
    post = comment.parent

    if not comment.is_notifiable or not post.is_notifiable:
        return

    if post.__class__ == Question:
        question = post
    else:
        question = post.question

    q_filter = Q(subscription_settings__notify_comments=True) | Q(