Example #1
0
def answer(request, id):
    question = get_object_or_404(Question, id=id)

    if request.POST:
        form = AnswerForm(request.POST, request.user.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.user.email_valid_and_can_answer():
            answer_action = AnswerAction(user=request.user.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()
            }

            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")
                ))
                return HttpResponseRedirect(question.get_absolute_url())
            else:
                return HttpResponseRedirect(reverse('auth_signin'))

    return HttpResponseRedirect(question.get_absolute_url())
Example #2
0
def ask(request):
    form = None

    if request.POST:
        if request.session.pop('reviewing_pending_data', False):
            form = AskForm(initial=request.POST, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated(
                ) and request.user.email_valid_and_can_ask():
                    ask_action = AskAction(
                        user=request.user,
                        ip=request.META['REMOTE_ADDR']).save(
                            data=form.cleaned_data)
                    question = ask_action.node

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

                    if "expert_email" in form.cleaned_data:
                        email = form.cleaned_data["expert_email"].split()
                        u = User(username=_("Friend"), email=email)

                        send_template_email([u],
                                            "notifications/newquestion.html", {
                                                'question': question,
                                                "exclude_finetune": True
                                            })

                    return HttpResponseRedirect(question.get_absolute_url())
                else:
                    request.session[PENDING_SUBMISSION_SESSION_ATTR] = {
                        'POST': request.POST,
                        'data_name': _("question"),
                        'type': 'ask',
                        'submission_url': reverse('ask'),
                        'time': datetime.datetime.now()
                    }

                    if request.user.is_authenticated():
                        request.user.message_set.create(
                            message=_("Your question is pending until you %s.")
                            % html.hyperlink(reverse('send_validation_email'),
                                             _("validate your email")))
                        return HttpResponseRedirect(reverse('index'))
                    else:
                        return HttpResponseRedirect(reverse('auth_signin'))
        elif "go" in request.POST:
            form = AskForm({'title': request.POST['q']}, user=request.user)

    if not form:
        form = AskForm(user=request.user)

    return render_to_response('ask.html', {
        'form': form,
        'tab': 'ask'
    },
                              context_instance=RequestContext(request))
Example #3
0
def ask(request):
    form = None

    if request.POST:
        if request.session.pop('reviewing_pending_data', False):
            form = AskForm(initial=request.POST, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated(
                ) and request.user.email_valid_and_can_ask():
                    ask_action = AskAction(
                        user=request.user,
                        ip=request.META['REMOTE_ADDR']).save(
                            data=form.cleaned_data)
                    question = ask_action.node

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

                    return HttpResponseRedirect(question.get_absolute_url())
                else:
                    request.session[PENDING_SUBMISSION_SESSION_ATTR] = {
                        'POST': request.POST,
                        'data_name': _("question"),
                        'type': 'ask',
                        'submission_url': reverse('ask'),
                        'time': datetime.datetime.now()
                    }

                    if request.user.is_authenticated():
                        messages.info(
                            request,
                            _("Your question is pending until you %s.") %
                            html.hyperlink(
                                django_settings.APP_URL +
                                reverse('send_validation_email', prefix='/'),
                                _("validate your email")))
                        return HttpResponseRedirect(reverse('index'))
                    else:
                        return HttpResponseRedirect(reverse('auth_signin'))
        elif "go" in request.POST:
            form = AskForm({'title': request.POST['q']}, user=request.user)

    if not form:
        form = AskForm(user=request.user)

    return render_to_response('ask.html', {
        'form': form,
        'tab': 'ask'
    },
                              context_instance=RequestContext(request))
Example #4
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()
            }

            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")))
                return HttpResponseRedirect(question.get_absolute_url())
            else:
                return HttpResponseRedirect(reverse('auth_signin'))

    return HttpResponseRedirect(question.get_absolute_url())
Example #5
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())
def ask(request):
    form = None

    if request.POST:
        if request.session.pop("reviewing_pending_data", False):
            form = AskForm(initial=request.POST, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated() and request.user.email_valid_and_can_ask():
                    ask_action = AskAction(user=request.user, ip=request.META["REMOTE_ADDR"]).save(
                        data=form.cleaned_data
                    )
                    question = ask_action.node

                    if settings.WIKI_ON and request.POST.get("wiki", False):
                        question.nstate.wiki = ask_action

                    return HttpResponseRedirect(question.get_absolute_url())
                else:
                    request.session[PENDING_SUBMISSION_SESSION_ATTR] = {
                        "POST": request.POST,
                        "data_name": _("question"),
                        "type": "ask",
                        "submission_url": reverse("ask"),
                        "time": datetime.datetime.now(),
                    }

                    if request.user.is_authenticated():
                        request.user.message_set.create(
                            message=_("Your question is pending until you %s.")
                            % html.hyperlink(reverse("send_validation_email"), _("validate your email"))
                        )
                        return HttpResponseRedirect(reverse("index"))
                    else:
                        return HttpResponseRedirect(reverse("auth_signin"))
        elif "go" in request.POST:
            form = AskForm({"title": request.POST["q"]}, user=request.user)

    if not form:
        form = AskForm(user=request.user, initial={"tags": request.GET.get("tags", "")})

    return render_to_response("ask.html", {"form": form, "tab": "ask"}, context_instance=RequestContext(request))
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(),
            }

            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())
Example #8
0
def ask(request):
    form = None

    if request.POST:
        if request.session.pop('reviewing_pending_data', False):
            form = AskForm(initial=request.POST, files=request.FILES, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, request.FILES, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated() and request.user.email_valid_and_can_ask():
                    image = None
                    try:
                        image = _get_image(form)                        
                        ask_action = AskAction(user=request.user, ip=request.META['REMOTE_ADDR']).save(form.cleaned_data)
                        question = ask_action.node
                        image.nodes.add(question)
                        image.save()
    
                        if settings.WIKI_ON and request.POST.get('wiki', False):
                            question.nstate.wiki = ask_action
    
                        return HttpResponseRedirect(question.get_absolute_url())
                    except ValidationError as e:
                        form.add_error("text", e)
                        if image and not image.nodes.count():
                            image.delete()
                else:
                    request.session[PENDING_SUBMISSION_SESSION_ATTR] = {
                        'POST': request.POST,
                        'data_name': _("question"),
                        'type': 'ask',
                        'submission_url': reverse('ask'),
                        'time': datetime.datetime.now()
                    }

                    if request.user.is_authenticated():
                        messages.info(request, _("Your question is pending until you %s.") % html.hyperlink(
                            reverse('send_validation_email'), _("validate your email")
                        ))
                        return HttpResponseRedirect(reverse('index'))
                    else:
                        return HttpResponseRedirect(reverse('auth_signin'))
        elif "go" in request.POST:
            form = AskForm({'title': request.POST['q']}, user=request.user)
            
    if not form:
        form = AskForm(user=request.user)

    return render_to_response('ask.html', {
        'form' : form,
        'tab' : 'ask'
        }, context_instance=RequestContext(request))
Example #9
0
def ask(request):
    form = None

    if request.POST:
        if request.session.pop('reviewing_pending_data', False):
            form = AskForm(initial=request.POST, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated() and request.user.email_valid_and_can_ask():
                    ask_action = AskAction(user=request.user, ip=request.META['REMOTE_ADDR']).save(data=form.cleaned_data)
                    question = ask_action.node

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

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

                    if request.user.is_authenticated():
                        request.user.message_set.create(message=_("Your question is pending until you %s.") % html.hyperlink(
                            reverse('send_validation_email'), _("validate your email")
                        ))
                        return HttpResponseRedirect(reverse('index'))
                    else:
                        return HttpResponseRedirect(reverse('auth_signin'))
        elif "go" in request.POST:
            form = AskForm({'title': request.POST['q']}, user=request.user)
            
    if not form:
        form = AskForm(user=request.user)

    return render_to_response('ask.html', {
        'form' : form,
        'tab' : 'ask'
        }, context_instance=RequestContext(request))
Example #10
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())
Example #11
0
def ask(request):
    form = None
    if request.POST:
        if request.session.pop('reviewing_pending_data', False):
            form = AskForm(initial=request.POST, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated(
                ) and request.user.email_valid_and_can_ask():
                    ask_action = AskAction(
                        user=request.user,
                        ip=request.META['REMOTE_ADDR']).save(
                            data=form.cleaned_data)
                    question = ask_action.node

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

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

                    if request.user.is_authenticated():
                        messages.info(
                            request,
                            _("Your question is pending until you %s.") %
                            html.hyperlink(
                                django_settings.APP_URL +
                                reverse('send_validation_email', prefix='/'),
                                _("validate your email")))
                        return HttpResponseRedirect(reverse('index'))
                    else:
                        return HttpResponseRedirect(reverse('auth_signin'))
        elif "go" in request.POST:
            form = AskForm({'title': request.POST['q']}, user=request.user)

    #BEGIN

    template_name = 'ask.html'
    if not form:
        # BEGIN
        # Changed this part to link OSQA to Magnate's zinnia entries
        #
        # Original: form = AskForm(user=request.user)
        from zinnia.models.entry import Entry
        entry_id = None
        entry_title = None
        try:
            entry_id = int(request.GET.get('entry_id'))
            entry = Entry.objects.get(pk=entry_id)
            if entry.is_public(
            ):  # Can only ask questions about public entries
                form = AskForm(user=request.user,
                               initial={
                                   'entry_id': entry_id,
                                   'entry_title': entry.title
                               })
                template_name = 'ask_about.html'
            else:
                # No point to ask questions about private entries,
                # as this is likely a mistake.
                raise Http404
        except (TypeError, ValueError, Entry.DoesNotExist) as e:
            # No point to ask questions about no entry in particular,
            # as nobody will ever find them.
            #
            # form = AskForm(user=request.user)
            # template_name='ask.html'
            raise Http404

    # Also changed below ask.html --> ask_about.html
    # END

    # template_name was just ask.html
    return render_to_response(template_name, {
        'form': form,
        'tab': 'ask',
    },
                              context_instance=RequestContext(request))
Example #12
0
def ask(request):
    form = None

    if request.POST:
        if request.session.pop('reviewing_pending_data', False):
            form = AskForm(initial=request.POST, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated() and request.user.email_valid_and_can_ask():
                    ask_action = AskAction(user=request.user, ip=request.META['REMOTE_ADDR']).save(data=form.cleaned_data)
                    question = ask_action.node

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

                    return HttpResponseRedirect(question.get_absolute_url())
                else:
                    request.session[PENDING_SUBMISSION_SESSION_ATTR] = {
                        'POST': request.POST,
                        'data_name': _("question"),
                        'type': 'ask',
                        'submission_url': reverse('ask'),
                        'time': datetime.datetime.now()
                    }

                    if request.user.is_authenticated():
                        request.user.message_set.create(message=_("Your question is pending until you %s.") % html.hyperlink(
                            django_settings.APP_URL + reverse('send_validation_email', prefix='/'), _("validate your email")
                        ))
                        return HttpResponseRedirect(reverse('index'))
                    else:
                        return HttpResponseRedirect(reverse('auth_signin'))
        elif "go" in request.POST:
            form = AskForm({'title': request.POST['q']}, user=request.user)
            
    default_tag = ''
    if settings.AUTO_SET_TAG_ON_QUESTION and 'tag' in request.GET:
        default_tag = request.GET['tag']
    if not form:
        form = AskForm(user=request.user, default_tag=default_tag)

    return render_response('ask.html', {
        'form' : form,
        'tab' : 'ask'
        }, request, parent_template="base.html")
Example #13
0
def ask(request):
    form = None

    if request.POST:
        if request.session.pop('reviewing_pending_data', False):
            form = AskForm(initial=request.POST, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated() and request.user.email_valid_and_can_ask():
                    ask_action = AskAction(user=request.user, ip=request.META['REMOTE_ADDR']).save(data=form.cleaned_data)
                    question = ask_action.node

                    if settings.WIKI_ON and request.POST.get('wiki', False):
                        question.nstate.wiki = ask_action
    
                    if "expert_email" in form.cleaned_data:
                        email = form.cleaned_data["expert_email"].split()
                        u = User(username = _("Friend"), email = email)
                        
                        send_template_email([u], "notifications/newquestion.html", {'question': question, "exclude_finetune": True})


                    return HttpResponseRedirect(question.get_absolute_url())
                else:
                    request.session[PENDING_SUBMISSION_SESSION_ATTR] = {
                        'POST': request.POST,
                        'data_name': _("question"),
                        'type': 'ask',
                        'submission_url': reverse('ask'),
                        'time': datetime.datetime.now()
                    }

                    if request.user.is_authenticated():
                        request.user.message_set.create(message=_("Your question is pending until you %s.") % html.hyperlink(
                            reverse('send_validation_email'), _("validate your email")
                        ))
                        return HttpResponseRedirect(reverse('index'))
                    else:
                        return HttpResponseRedirect(reverse('auth_signin'))
        elif "go" in request.POST:
            form = AskForm({'title': request.POST['q']}, user=request.user)
            
    if not form:
        form = AskForm(user=request.user)

    return render_to_response('ask.html', {
        'form' : form,
        'tab' : 'ask'
        }, context_instance=RequestContext(request))
Example #14
0
def ask(request):
    form = None

    if not request.user.is_authenticated() and settings.REQUIRE_LOGIN_FOR_ASKING_QUESTION:
        # make sure that we get back on the page once we're authenticated
        request.session[ON_SIGNIN_SESSION_ATTR] = request.build_absolute_uri()
        return HttpResponseRedirect(reverse('auth_signin'))

    if request.POST:
        if request.session.pop('reviewing_pending_data', False):
            form = AskForm(initial=request.POST, user=request.user)
        elif "text" in request.POST:
            form = AskForm(request.POST, user=request.user)
            if form.is_valid():
                if request.user.is_authenticated() and request.user.email_valid_and_can_ask():
                    ask_action = AskAction(user=request.user, ip=request.META['REMOTE_ADDR']).save(data=form.cleaned_data)
                    question = ask_action.node

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

                    return HttpResponseRedirect(question.get_absolute_url())
                else:
                    request.session[PENDING_SUBMISSION_SESSION_ATTR] = {
                        'POST': request.POST,
                        'data_name': _("question"),
                        'type': 'ask',
                        'submission_url': reverse('ask'),
                        'time': datetime.datetime.now()
                    }

                    if request.user.is_authenticated():
                        messages.info(request, _("Your question is pending until you %s.") % html.hyperlink(
                            django_settings.APP_URL + reverse('send_validation_email', prefix='/'), _("validate your email")
                        ))
                        return HttpResponseRedirect(reverse('index'))
                    else:
                        return HttpResponseRedirect(reverse('auth_signin'))
        elif "go" in request.POST:
            form = AskForm({'title': request.POST['q']}, user=request.user)

    default_tags = request.GET.get('tag', '').split()
    if not form:
        form = AskForm(user=request.user, default_tags=default_tags)

    return render_to_response('ask.html', {
        'form' : form,
        'tab' : 'ask'
        }, context_instance=RequestContext(request))