summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-06-27 12:14:43 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-06-27 12:14:43 -0400
commitb6c74b03375fe2daa85d6b72160d224b24f8a09a (patch)
tree2455380f5dbb0f9daeea5adf164b983967d9a4d6
parent7bd8f4ddefd6deb258cdce3dc2087d284bb9eeda (diff)
downloadaskbot-b6c74b03375fe2daa85d6b72160d224b24f8a09a.tar.gz
askbot-b6c74b03375fe2daa85d6b72160d224b24f8a09a.tar.bz2
askbot-b6c74b03375fe2daa85d6b72160d224b24f8a09a.zip
fixed revision editing for the rich editor use case
-rw-r--r--askbot/models/post.py2
-rw-r--r--askbot/skins/default/templates/answer_edit.html17
-rw-r--r--askbot/skins/default/templates/question_edit.html18
-rw-r--r--askbot/tests/post_model_tests.py36
-rw-r--r--askbot/views/writers.py49
5 files changed, 70 insertions, 52 deletions
diff --git a/askbot/models/post.py b/askbot/models/post.py
index ab885e2a..452f920b 100644
--- a/askbot/models/post.py
+++ b/askbot/models/post.py
@@ -1560,7 +1560,6 @@ class Post(models.Model):
comment = const.POST_STATUS['default_version']
else:
comment = 'No.%s Revision' % rev_no
- from askbot.models.post import PostRevision
return PostRevision.objects.create_answer_revision(
post = self,
author = author,
@@ -1590,7 +1589,6 @@ class Post(models.Model):
else:
comment = 'No.%s Revision' % rev_no
- from askbot.models.post import PostRevision
return PostRevision.objects.create_question_revision(
post = self,
revision = rev_no,
diff --git a/askbot/skins/default/templates/answer_edit.html b/askbot/skins/default/templates/answer_edit.html
index 2e58ae05..b38f3fff 100644
--- a/askbot/skins/default/templates/answer_edit.html
+++ b/askbot/skins/default/templates/answer_edit.html
@@ -14,9 +14,17 @@
<label for="id_revision" >{% trans %}revision{% endtrans %}:</label> <br/>
{% if revision_form.revision.errors %}{{ revision_form.revision.errors.as_ul() }}{% endif %}
<div style="vertical-align:middle">
- {{ revision_form.revision }} <input type="submit" style="display:none" id="select_revision" name="select_revision" value="{% trans %}select revision{% endtrans %}">
+ {{ revision_form.revision }} <input type="hidden"
+ id="select_revision"
+ name="select_revision"
+ value="false">
</div>
- {{ macros.edit_post(form, post_html = answer.html, editor_type = settings.EDITOR_TYPE) }}
+ {{ macros.edit_post(
+ form,
+ post_html = revision.text,
+ editor_type = settings.EDITOR_TYPE
+ )
+ }}
{% if settings.WIKI_ON and answer.wiki == False %}
{{ macros.checkbox_in_div(form.wiki) }}
{% endif %}
@@ -24,7 +32,7 @@
{{ macros.checkbox_in_div(form.post_privately) }}
{% endif %}
<div class="after-editor">
- <input type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
+ <input id="edit_post_form_submit_button" type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
<input type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" onclick="history.back(-1);" />
</div>
@@ -81,7 +89,8 @@
);
$('#id_revision').unbind().change(function(){
- $("#select_revision").click();
+ $("#select_revision").val('true');
+ $('#edit_post_form_submit_button').click();
});
lanai.highlightSyntax();
diff --git a/askbot/skins/default/templates/question_edit.html b/askbot/skins/default/templates/question_edit.html
index 3c6e9145..a6efe913 100644
--- a/askbot/skins/default/templates/question_edit.html
+++ b/askbot/skins/default/templates/question_edit.html
@@ -11,17 +11,18 @@
{% if revision_form.revision.errors %}{{ revision_form.revision.errors.as_ul() }}{% endif %}
<div style="vertical-align:middle">
- {{ revision_form.revision }} <input type="submit" style="display:none"
- id="select_revision" name="select_revision"
- value="{% trans %}select revision{% endtrans %}">
+ {{ revision_form.revision }} <input type="hidden"
+ id="select_revision"
+ name="select_revision"
+ value="false">
</div>
{% set use_category_selector = (settings.TAG_SOURCE == 'category-tree') %}
{{
macros.edit_post(
form,
- post_type='question',
- post_html=question.html,
- edit_title=True,
+ post_type = 'question',
+ post_html = revision.text,
+ edit_title = True,
mandatory_tags = mandatory_tags,
use_category_selector = use_category_selector,
tag_names = tag_names,
@@ -40,7 +41,7 @@
{{ macros.checkbox_in_div(form.post_privately) }}
{% endif %}
</div>
- <input type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
+ <input id="edit_post_form_submit_button" type="submit" value="{% trans %}Save edit{% endtrans %}" class="submit" />&nbsp;
<input type="button" value="{% trans %}Cancel{% endtrans %}" class="submit" onclick="history.back(-1);" />
</div>
@@ -100,7 +101,8 @@
);
$('#id_revision').unbind().change(function(){
- $("#select_revision").click();
+ $("#select_revision").val('true');
+ $('#edit_post_form_submit_button').click();
});
lanai.highlightSyntax();
diff --git a/askbot/tests/post_model_tests.py b/askbot/tests/post_model_tests.py
index ac09c667..64d2e9a7 100644
--- a/askbot/tests/post_model_tests.py
+++ b/askbot/tests/post_model_tests.py
@@ -487,15 +487,22 @@ class ThreadRenderCacheUpdateTests(AskbotTestCase):
time.sleep(1.5) # compensate for 1-sec time resolution in some databases
- response = self.client.post(urlresolvers.reverse('edit_question', kwargs={'id': question.id}), data={
- 'title': 'edited title',
- 'text': 'edited body text',
- 'tags': 'tag1 tag2',
- 'summary': 'just some edit',
- })
+ response = self.client.post(
+ urlresolvers.reverse('edit_question', kwargs={'id': question.id}),
+ data={
+ 'title': 'edited title',
+ 'text': 'edited body text',
+ 'tags': 'tag1 tag2',
+ 'summary': 'just some edit',
+ 'select_revision': 'false'
+ }
+ )
self.assertEqual(1, Post.objects.count())
question = Post.objects.all()[0]
- self.assertRedirects(response=response, expected_url=question.get_absolute_url())
+ self.assertRedirects(
+ response=response,
+ expected_url=question.get_absolute_url()
+ )
thread = question.thread
self.assertEqual(0, thread.answer_count)
@@ -574,10 +581,17 @@ class ThreadRenderCacheUpdateTests(AskbotTestCase):
time.sleep(1.5) # compensate for 1-sec time resolution in some databases
self.client.logout()
self.client.login(username='user2', password='pswd')
- response = self.client.post(urlresolvers.reverse('edit_answer', kwargs={'id': answer.id}), data={
- 'text': 'edited body text',
- 'summary': 'just some edit',
- })
+ response = self.client.post(
+ urlresolvers.reverse(
+ 'edit_answer',
+ kwargs={'id': answer.id}
+ ),
+ data={
+ 'text': 'edited body text',
+ 'summary': 'just some edit',
+ 'select_revision': 'false'
+ }
+ )
self.assertRedirects(response=response, expected_url=answer.get_absolute_url())
answer = Post.objects.get(id=answer.id)
diff --git a/askbot/views/writers.py b/askbot/views/writers.py
index dee1ee7b..9cfab9fd 100644
--- a/askbot/views/writers.py
+++ b/askbot/views/writers.py
@@ -334,46 +334,43 @@ def edit_question(request, id):
"""edit question view
"""
question = get_object_or_404(models.Post, id=id)
- latest_revision = question.get_latest_revision()
+ revision = question.get_latest_revision()
revision_form = None
try:
request.user.assert_can_edit_question(question)
if request.method == 'POST':
- if 'select_revision' in request.POST:
+ if request.POST['select_revision'] == 'true':
#revert-type edit - user selected previous revision
revision_form = forms.RevisionForm(
question,
- latest_revision,
+ revision,
request.POST
)
if revision_form.is_valid():
# Replace with those from the selected revision
rev_id = revision_form.cleaned_data['revision']
- selected_revision = models.PostRevision.objects.question_revisions().get(
- post = question,
- revision = rev_id
- )
+ revision = question.revisions.get(revision = rev_id)
form = forms.EditQuestionForm(
question = question,
user = request.user,
- revision = selected_revision
+ revision = revision
)
else:
form = forms.EditQuestionForm(
request.POST,
question = question,
user = request.user,
- revision = latest_revision
+ revision = revision
)
else:#new content edit
# Always check modifications against the latest revision
form = forms.EditQuestionForm(
request.POST,
question = question,
- revision = latest_revision,
+ revision = revision,
user = request.user,
)
- revision_form = forms.RevisionForm(question, latest_revision)
+ revision_form = forms.RevisionForm(question, revision)
if form.is_valid():
if form.has_changed():
@@ -397,14 +394,14 @@ def edit_question(request, id):
return HttpResponseRedirect(question.get_absolute_url())
else:
#request type was "GET"
- revision_form = forms.RevisionForm(question, latest_revision)
+ revision_form = forms.RevisionForm(question, revision)
initial = {
'post_privately': question.is_private(),
'wiki': question.wiki
}
form = forms.EditQuestionForm(
question = question,
- revision = latest_revision,
+ revision = revision,
user = request.user,
initial = initial
)
@@ -413,6 +410,7 @@ def edit_question(request, id):
'page_class': 'edit-question-page',
'active_tab': 'questions',
'question': question,
+ 'revision': revision,
'revision_form': revision_form,
'mandatory_tags': models.tag.get_mandatory_tags(),
'form' : form,
@@ -431,35 +429,31 @@ def edit_question(request, id):
@decorators.check_spam('text')
def edit_answer(request, id):
answer = get_object_or_404(models.Post, id=id)
- latest_revision = answer.get_latest_revision()
+ revision = answer.get_latest_revision()
try:
request.user.assert_can_edit_answer(answer)
- latest_revision = answer.get_latest_revision()
if request.method == "POST":
- if 'select_revision' in request.POST:
+ if request.POST['select_revision'] == 'true':
# user has changed revistion number
revision_form = forms.RevisionForm(
answer,
- latest_revision,
+ revision,
request.POST
)
if revision_form.is_valid():
# Replace with those from the selected revision
rev = revision_form.cleaned_data['revision']
- selected_revision = models.PostRevision.objects.answer_revisions().get(
- post = answer,
- revision = rev
- )
- form = forms.EditAnswerForm(answer, selected_revision)
+ revision = answer.revisions.get(revision = rev)
+ form = forms.EditAnswerForm(answer, revision)
else:
form = forms.EditAnswerForm(
answer,
- latest_revision,
+ revision,
request.POST
)
else:
- form = forms.EditAnswerForm(answer, latest_revision, request.POST)
- revision_form = forms.RevisionForm(answer, latest_revision)
+ form = forms.EditAnswerForm(answer, revision, request.POST)
+ revision_form = forms.RevisionForm(answer, revision)
if form.is_valid():
if form.has_changed():
@@ -473,14 +467,15 @@ def edit_answer(request, id):
)
return HttpResponseRedirect(answer.get_absolute_url())
else:
- revision_form = forms.RevisionForm(answer, latest_revision)
- form = forms.EditAnswerForm(answer, latest_revision)
+ revision_form = forms.RevisionForm(answer, revision)
+ form = forms.EditAnswerForm(answer, revision)
if request.user.can_make_group_private_posts():
form.initial['post_privately'] = answer.is_private()
data = {
'page_class': 'edit-answer-page',
'active_tab': 'questions',
'answer': answer,
+ 'revision': revision,
'revision_form': revision_form,
'form': form,
}