diff options
Diffstat (limited to 'askbot/views/writers.py')
-rw-r--r-- | askbot/views/writers.py | 54 |
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) |