Exemple #1
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))
Exemple #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

                    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))
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))