diff --git a/forum/forms.py b/forum/forms.py index ec1d2ff..fc216ed 100644 --- a/forum/forms.py +++ b/forum/forms.py @@ -41,10 +41,11 @@ class PostAnswerForm(forms.ModelForm): class Meta: model = PostAnswer - fields = ('message', ) + fields = ('message', 'post', ) labels = { 'message': _('Message') } widgets = { 'message': forms.Textarea(attrs={'cols': 80, 'rows': 3}), + 'post': forms.HiddenInput(), } \ No newline at end of file diff --git a/forum/static/js/forum.js b/forum/static/js/forum.js index 51d0069..0ccd594 100644 --- a/forum/static/js/forum.js +++ b/forum/static/js/forum.js @@ -217,6 +217,26 @@ function answer(id, url) { url: url, success: function(data) { $("#post_"+id).find(".answer_post").html(data); + $("#post_"+id).find("#id_post").val(id); + + var frm = $("#post_"+id).find(".answer_post_form"); + frm.submit(function () { + $.ajax({ + type: frm.attr('method'), + url: frm.attr('action'), + data: frm.serialize(), + success: function (data) { + $("#post_"+id).find(".answer_list").append(data); + + $("#post_"+id).find(".answer_post").hide(); + }, + error: function(data) { + console.log(frm.serialize()); + console.log('Error'); + } + }); + return false; + }); } }); diff --git a/forum/templates/post/post_list.html b/forum/templates/post/post_list.html index a2d51d9..5d3073a 100644 --- a/forum/templates/post/post_list.html +++ b/forum/templates/post/post_list.html @@ -36,8 +36,10 @@

{{ post.message|linebreaks }}

+
+ {% list_post_answer request post %} +
- {% list_post_answer request post %} {% endfor %} {% endif %} \ No newline at end of file diff --git a/forum/templates/post_answers/post_answer_form.html b/forum/templates/post_answers/post_answer_form.html index d2032bc..a71ff7b 100644 --- a/forum/templates/post_answers/post_answer_form.html +++ b/forum/templates/post_answers/post_answer_form.html @@ -1,36 +1,39 @@ {% load static i18n %} {% load widget_tweaks %} -
+ {% csrf_token %} {% for field in form %} -
-
- - {% render_field field class='form-control' %} - {{ field.help_text }} - {% if field.errors %} -
-
- -
+ {% endif %} {% endfor %} - \ No newline at end of file diff --git a/forum/templates/post_answers/post_answer_list.html b/forum/templates/post_answers/post_answer_list.html index 21f0e76..b634bd2 100644 --- a/forum/templates/post_answers/post_answer_list.html +++ b/forum/templates/post_answers/post_answer_list.html @@ -2,11 +2,11 @@ {% if answers|length > 0 %} {% for answer in answers %} -
+

{{ answer.user }} - {% if request.user|has_role:'system_admin' or request.user|has_role:'professor' and request.user == answer.user %} + {% if request.user|has_role:'system_admin' or request.user == answer.user %}
\ No newline at end of file diff --git a/forum/urls.py b/forum/urls.py index 2924f3c..a3ad25f 100644 --- a/forum/urls.py +++ b/forum/urls.py @@ -18,5 +18,6 @@ urlpatterns = [ url(r'^post_deleted/$', views.post_deleted, name='deleted_post'), url(r'^post_answers/$', views.PostAnswerIndex.as_view(), name='post_answers'), url(r'^reply_post/$', views.CreatePostAnswerView.as_view(), name='reply_post'), + url(r'^render_post_answer/([\w_-]+)/$', views.render_post_answer, name='render_post_answer'), url(r'^(?P[\w_-]+)/$', views.ForumDetailView.as_view(), name='view'), ] diff --git a/forum/views.py b/forum/views.py index a0cf2a5..572da42 100644 --- a/forum/views.py +++ b/forum/views.py @@ -10,6 +10,10 @@ from courses.models import Topic from .forms import ForumForm, PostForm, PostAnswerForm +""" + Forum Section +""" + class ForumIndex(LoginRequiredMixin, generic.ListView): login_url = reverse_lazy("core:home") redirect_field_name = 'next' @@ -103,6 +107,10 @@ class ForumDetailView(LoginRequiredMixin, generic.DetailView): return context +""" + Post Section +""" + class CreatePostView(LoginRequiredMixin, generic.edit.CreateView): login_url = reverse_lazy("core:home") redirect_field_name = 'next' @@ -154,6 +162,12 @@ class PostDeleteView(LoginRequiredMixin, generic.DeleteView): def post_deleted(request): return HttpResponse(_("Post deleted successfully.")) + + +""" + Post Answer Section +""" + class PostAnswerIndex(LoginRequiredMixin, generic.ListView): login_url = reverse_lazy("core:home") redirect_field_name = 'next' @@ -174,4 +188,24 @@ class CreatePostAnswerView(LoginRequiredMixin, generic.edit.CreateView): template_name = 'post_answers/post_answer_form.html' form_class = PostAnswerForm - success_url = reverse_lazy('course:forum:index') \ No newline at end of file + + def form_valid(self, form): + self.object = form.save(commit = False) + self.object.user = self.request.user + + self.object.save() + + return super(CreatePostAnswerView, self).form_valid(form) + + def get_success_url(self): + self.success_url = reverse('course:forum:render_post_answer', args = (self.object.id, )) + + return self.success_url + +def render_post_answer(request, answer): + last_answer = get_object_or_404(PostAnswer, id = answer) + + context = {} + context['answer'] = last_answer + + return render(request, "post_answers/post_answer_render.html", context) \ No newline at end of file -- libgit2 0.21.2