diff --git a/forum/models.py b/forum/models.py index abe9206..07cf60a 100644 --- a/forum/models.py +++ b/forum/models.py @@ -67,4 +67,13 @@ class PostAnswer(models.Model): app_label ='forum' def __str__(self): - return ''.join([self.user.name, " / ", str(self.answer_date)]) \ No newline at end of file + return ''.join([self.user.name, " / ", str(self.answer_date)]) + + def is_modified(self): + create = self.answer_date.strftime("%Y-%m-%d %H:%M:%S") + edit = self.modification_date.strftime("%Y-%m-%d %H:%M:%S") + + if create != edit: + return True + + return False \ No newline at end of file diff --git a/forum/static/js/forum.js b/forum/static/js/forum.js index ee794a6..c21ba63 100644 --- a/forum/static/js/forum.js +++ b/forum/static/js/forum.js @@ -246,6 +246,10 @@ function load_more_posts(pageNum, numberPages, url) { $("#loading_posts").hide(); $("#posts_list").append(data); + }, + error: function(data) { + console.log(data); + console.log('Error'); } }); }, 1000) @@ -356,3 +360,35 @@ function delete_answer(url, answer, message) { }); } +/* +* +* Function to load more answers of a post +* +*/ +function load_more_answers(post_id, pageNum, numberPages, url) { + // Remove button from the template + $("#post_"+post_id).find(".load_more_answers").remove(); + + // Check if page is equal to the number of pages + if (pageNum == numberPages) { + return false + } + + pageNum += 1; + + // Show loader + $("#post_"+post_id).find(".loading_answers").show(); + + // Configure the url we're about to hit + setTimeout(function (){ + $.ajax({ + url: url, + data: {'page_answer': pageNum}, + success: function(data) { + $("#post_"+post_id).find(".loading_answers").hide(); + + $("#post_"+post_id).find(".answer_list").append(data); + } + }); + }, 1000) +}; \ No newline at end of file diff --git a/forum/templates/post/post_list.html b/forum/templates/post/post_list.html index 0934969..020c576 100644 --- a/forum/templates/post/post_list.html +++ b/forum/templates/post/post_list.html @@ -39,6 +39,11 @@
{% list_post_answer request post %}
+ {% endfor %} diff --git a/forum/templates/post_answers/post_answer_list.html b/forum/templates/post_answers/post_answer_list.html index dd9561b..9869908 100644 --- a/forum/templates/post_answers/post_answer_list.html +++ b/forum/templates/post_answers/post_answer_list.html @@ -24,7 +24,7 @@

{{ answer.answer_date|timesince }} {% trans 'ago' %} - {% if answer.answer_date != answer.modifiction_date %} + {% if answer.is_modified %} - {% trans 'Edited' %} {% endif %}

@@ -35,4 +35,10 @@
{% endfor %} +{% endif %} + +{% if not page_obj.number == paginator.num_pages %} + + {% trans 'Load more answers' %} + {% endif %} \ No newline at end of file diff --git a/forum/templates/post_answers/post_answer_render.html b/forum/templates/post_answers/post_answer_render.html index 1db908d..35532ff 100644 --- a/forum/templates/post_answers/post_answer_render.html +++ b/forum/templates/post_answers/post_answer_render.html @@ -22,7 +22,7 @@

{{ answer.answer_date|timesince }} {% trans 'ago' %} - {% if answer.answer_date != answer.modifiction_date %} + {% if answer.is_modified %} - {% trans 'Edited' %} {% endif %}

diff --git a/forum/templatetags/list_post.py b/forum/templatetags/list_post.py index 06fe36d..4442100 100644 --- a/forum/templatetags/list_post.py +++ b/forum/templatetags/list_post.py @@ -1,6 +1,7 @@ from django import template from django.core.paginator import Paginator, EmptyPage +from django.http import Http404 from forum.models import Post @@ -18,7 +19,7 @@ def list_posts(request, forum): posts = Post.objects.filter(forum = forum).order_by('post_date') - paginator = Paginator(posts, 1) + paginator = Paginator(posts, 2) try: page_number = int(request.GET.get('page', 1)) diff --git a/forum/templatetags/list_post_answer.py b/forum/templatetags/list_post_answer.py index e50b1a0..24527de 100644 --- a/forum/templatetags/list_post_answer.py +++ b/forum/templatetags/list_post_answer.py @@ -1,5 +1,8 @@ from django import template +from django.core.paginator import Paginator, EmptyPage +from django.http import Http404 + from forum.models import PostAnswer register = template.Library() @@ -14,6 +17,24 @@ def list_post_answer(request, post): 'request': request, } - context['answers'] = PostAnswer.objects.filter(post = post) + answers = PostAnswer.objects.filter(post = post) + + paginator = Paginator(answers, 2) + + try: + page_number = int(request.GET.get('page_answer', 1)) + except ValueError: + raise Http404 + + try: + page_obj = paginator.page(page_number) + except EmptyPage: + raise Http404 + + context['paginator'] = paginator + context['page_obj'] = page_obj + + context['answers'] = page_obj.object_list + context['post'] = post return context \ No newline at end of file diff --git a/forum/urls.py b/forum/urls.py index b3fa00f..e9c0fc0 100644 --- a/forum/urls.py +++ b/forum/urls.py @@ -17,6 +17,7 @@ urlpatterns = [ url(r'^delete_post/(?P[\w_-]+)/$', views.PostDeleteView.as_view(), name='delete_post'), url(r'^render_post/([\w_-]+)/$', views.render_post, name='render_post'), url(r'^post_deleted/$', views.post_deleted, name='deleted_post'), + url(r'^load_answers/(?P[\w_-]+)/$', views.load_answers, name='load_answers'), url(r'^post_answers/$', views.PostAnswerIndex.as_view(), name='post_answers'), url(r'^reply_post/$', views.CreatePostAnswerView.as_view(), name='reply_post'), url(r'^update_post_answer/(?P[\w_-]+)/$', views.PostAnswerUpdateView.as_view(), name='update_post_answer'), diff --git a/forum/views.py b/forum/views.py index ba3c9ad..fdb6d72 100644 --- a/forum/views.py +++ b/forum/views.py @@ -121,7 +121,7 @@ def load_posts(request, forum_id): posts = Post.objects.filter(forum = forum).order_by('post_date') - paginator = Paginator(posts, 1) + paginator = Paginator(posts, 2) try: page_number = int(request.GET.get('page', 1)) @@ -133,8 +133,6 @@ def load_posts(request, forum_id): except EmptyPage: raise Http404 - print(page_number) - context['paginator'] = paginator context['page_obj'] = page_obj @@ -199,6 +197,34 @@ def post_deleted(request): """ Post Answer Section """ +def load_answers(request, post_id): + context = { + 'request': request, + } + + post = get_object_or_404(Post, id = post_id) + + answers = PostAnswer.objects.filter(post = post) + + paginator = Paginator(answers, 2) + + try: + page_number = int(request.GET.get('page_answer', 1)) + except ValueError: + raise Http404 + + try: + page_obj = paginator.page(page_number) + except EmptyPage: + raise Http404 + + context['paginator'] = paginator + context['page_obj'] = page_obj + + context['answers'] = page_obj.object_list + context['post'] = post + + return render(request, 'post_answers/post_answer_list.html', context) class PostAnswerIndex(LoginRequiredMixin, generic.ListView): login_url = reverse_lazy("core:home") -- libgit2 0.21.2