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