# encoding:utf-8
import os.path
-import time, datetime, random
-import logging
+
+import datetime
+
+from django.core.urlresolvers import reverse
from django.core.files.storage import FileSystemStorage
+from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render_to_response, get_object_or_404
-from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.template import RequestContext
+from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.utils.html import *
-from django.utils import simplejson
from django.utils.translation import ugettext as _
-from django.core.urlresolvers import reverse
-from django.core.exceptions import PermissionDenied
-from forum.actions import AskAction, AnswerAction, ReviseAction, RollbackAction, RetagAction, AnswerToQuestionAction
+from django.contrib import messages
+
+from forum.actions import AskAction, AnswerAction, ReviseAction, RollbackAction, RetagAction, AnswerToQuestionAction, CommentToQuestionAction
from forum.forms import *
from forum.models import *
-from forum.forms import get_next_url
from forum.utils import html
from forum.http_responses import HttpResponseUnauthorized
from vars import PENDING_SUBMISSION_SESSION_ATTR
+@csrf_exempt
def upload(request):#ajax upload file to a question or answer
class FileTypeNotAllow(Exception):
pass
}
if request.user.is_authenticated():
- request.user.message_set.create(message=_("Your question is pending until you %s.") % html.hyperlink(
+ messages.info(request, _("Your question is pending until you %s.") % html.hyperlink(
reverse('send_validation_email'), _("validate your email")
))
return HttpResponseRedirect(reverse('index'))
def convert_to_question(request, id):
user = request.user
- answer = get_object_or_404(Answer, id=id)
- if not user.can_convert_to_question(answer):
+ node_type = request.GET.get('node_type', 'answer')
+ if node_type == 'comment':
+ node = get_object_or_404(Comment, id=id)
+ action_class = CommentToQuestionAction
+ else:
+ node = get_object_or_404(Answer, id=id)
+ action_class = AnswerToQuestionAction
+
+ if not user.can_convert_to_question(node):
return HttpResponseUnauthorized(request)
- return _edit_question(request, answer, template='node/convert_to_question.html', summary=_("Converted to question"),
- action_class=AnswerToQuestionAction, allow_rollback=False, url_getter=lambda a: Question.objects.get(id=a.id).get_absolute_url())
+ return _edit_question(request, node, template='node/convert_to_question.html', summary=_("Converted to question"),
+ action_class =action_class, allow_rollback=False, url_getter=lambda a: Question.objects.get(id=a.id).get_absolute_url())
def edit_question(request, id):
question = get_object_or_404(Question, id=id)
#'tags' : _get_tags_cache_json(),
}, context_instance=RequestContext(request))
-def _edit_question(request, question, template='question_edit.html', summary='', action_class=ReviseAction, allow_rollback=True, url_getter=lambda q: q.get_absolute_url()):
+def _edit_question(request, question, template='question_edit.html', summary='', action_class=ReviseAction,
+ allow_rollback=True, url_getter=lambda q: q.get_absolute_url(), additional_context=None):
if request.method == 'POST':
revision_form = RevisionForm(question, data=request.POST)
revision_form.is_valid()
revision_form = RevisionForm(question)
form = EditQuestionForm(question, request.user, initial={'summary': summary})
- return render_to_response(template, {
+ context = {
'question': question,
'revision_form': revision_form,
'form' : form,
- }, context_instance=RequestContext(request))
+ }
+
+ if not (additional_context is None):
+ context.update(additional_context)
+
+ return render_to_response(template, context, context_instance=RequestContext(request))
def edit_answer(request, id):
}
if request.user.is_authenticated():
- request.user.message_set.create(message=_("Your answer is pending until you %s.") % html.hyperlink(
+ messages.info(request, _("Your answer is pending until you %s.") % html.hyperlink(
reverse('send_validation_email'), _("validate your email")
))
return HttpResponseRedirect(question.get_absolute_url())