summaryrefslogtreecommitdiffstats
path: root/askbot/views/writers.py
diff options
context:
space:
mode:
Diffstat (limited to 'askbot/views/writers.py')
-rw-r--r--askbot/views/writers.py54
1 files changed, 41 insertions, 13 deletions
diff --git a/askbot/views/writers.py b/askbot/views/writers.py
index 9de14517..0ee4b7ef 100644
--- a/askbot/views/writers.py
+++ b/askbot/views/writers.py
@@ -12,6 +12,7 @@ import random
import sys
import tempfile
import time
+import urlparse
from django.core.files.storage import get_storage_class
from django.shortcuts import get_object_or_404
from django.contrib.auth.decorators import login_required
@@ -99,16 +100,29 @@ def upload(request):#ajax upload file to a question or answer
if error == '':
result = 'Good'
file_url = file_storage.url(new_file_name)
+ parsed_url = urlparse.urlparse(file_url)
+ file_url = urlparse.urlunparse(
+ urlparse.ParseResult(
+ parsed_url.scheme,
+ parsed_url.netloc,
+ parsed_url.path,
+ '', '', ''
+ )
+ )
else:
result = ''
file_url = ''
- data = simplejson.dumps({
- 'result': result,
- 'error': error,
- 'file_url': file_url
- })
- return HttpResponse(data, mimetype = 'application/json')
+ #data = simplejson.dumps({
+ # 'result': result,
+ # 'error': error,
+ # 'file_url': file_url
+ #})
+ #return HttpResponse(data, mimetype = 'application/json')
+ xml_template = "<result><msg><![CDATA[%s]]></msg><error><![CDATA[%s]]></error><file_url>%s</file_url></result>"
+ xml = xml_template % (result, error, file_url)
+
+ return HttpResponse(xml, mimetype="application/xml")
def __import_se_data(dump_file):
"""non-view function that imports the SE data
@@ -187,7 +201,13 @@ def import_data(request):
#@login_required #actually you can post anonymously, but then must register
@csrf.csrf_protect
-@decorators.check_authorization_to_post(_('Please log in to ask questions'))
+@decorators.check_authorization_to_post(_(
+ "<span class=\"strong big\">You are welcome to start submitting your question "
+ "anonymously</span>. When you submit the post, you will be redirected to the "
+ "login/signup page. Your question will be saved in the current session and "
+ "will be published after you log in. Login/signup process is very simple. "
+ "Login takes about 30 seconds, initial signup takes a minute or less."
+))
@decorators.check_spam('text')
def ask(request):#view used to ask a new question
"""a view to ask a new question
@@ -196,8 +216,8 @@ def ask(request):#view used to ask a new question
user can start posting a question anonymously but then
must login/register in order for the question go be shown
"""
- if request.method == "POST":
- form = forms.AskForm(request.POST)
+ form = forms.AskForm(request.REQUEST)
+ if request.method == 'POST':
if form.is_valid():
timestamp = datetime.datetime.now()
title = form.cleaned_data['title']
@@ -237,10 +257,17 @@ def ask(request):#view used to ask a new question
ip_addr = request.META['REMOTE_ADDR'],
)
return HttpResponseRedirect(url_utils.get_login_url())
- else:
+
+ if request.method == 'GET':
form = forms.AskForm()
- if 'title' in request.GET: # prepopulate title (usually from search query on main page)
- form.initial['title'] = request.GET['title']
+
+ form.initial = {
+ 'title': request.REQUEST.get('title', ''),
+ 'text': request.REQUEST.get('text', ''),
+ 'tags': request.REQUEST.get('tags', ''),
+ 'wiki': request.REQUEST.get('wiki', False),
+ 'is_anonymous': request.REQUEST.get('is_anonymous', False),
+ }
data = {
'active_tab': 'ask',
@@ -464,7 +491,7 @@ def answer(request, id):#process a new answer
"""
question = get_object_or_404(models.Post, post_type='question', id=id)
if request.method == "POST":
- form = forms.AnswerForm(question, request.user, request.POST)
+ form = forms.AnswerForm(request.POST)
if form.is_valid():
wiki = form.cleaned_data['wiki']
text = form.cleaned_data['text']
@@ -621,6 +648,7 @@ def delete_comment(request):
#attn: recalc denormalized field
parent.comment_count = parent.comment_count - 1
parent.save()
+ parent.thread.invalidate_cached_data()
return __generate_comments_json(parent, request.user)