Commit b0e18756a7d5b02bd6f2896eec04430b72f74693

Authored by Zambom
1 parent e376ec1c

Adding post answers visualization [Issue: #73]

core/static/css/base/amadeus.css
@@ -287,6 +287,9 @@ a.alert_message:hover{color : grey} @@ -287,6 +287,9 @@ a.alert_message:hover{color : grey}
287 -webkit-padding-start: 0px !important; 287 -webkit-padding-start: 0px !important;
288 width: 100%; 288 width: 100%;
289 } 289 }
  290 +.timeline.post a {
  291 + color: #000;
  292 +}
290 .timeline.post li { 293 .timeline.post li {
291 padding: 10px; 294 padding: 10px;
292 border-bottom: 1px solid #fff; 295 border-bottom: 1px solid #fff;
courses/templates/subject/form_view_teacher.html
@@ -46,6 +46,25 @@ @@ -46,6 +46,25 @@
46 $("#collapse" + forum).collapse('show'); 46 $("#collapse" + forum).collapse('show');
47 } 47 }
48 } 48 }
  49 +
  50 + var postsAnswerUrl = '{% url "forum:post_answers" %}';
  51 + var formPostsAnswersUrl = '';
  52 +
  53 + function showPostsAnswers(post) {
  54 + if ($("#collapse" + post).hasClass('in')) {
  55 + $("#collapse" + post).collapse('hide');
  56 + } else {
  57 + $.ajax({
  58 + url: postsAnswerUrl,
  59 + data: {'post': post},
  60 + success: function(data) {
  61 + $("#collapse" + post).find(".well").html(data);
  62 + }
  63 + });
  64 +
  65 + $("#collapse" + post).collapse('show');
  66 + }
  67 + }
49 </script> 68 </script>
50 {% endblock %} 69 {% endblock %}
51 70
forum/models.py
@@ -50,4 +50,4 @@ class PostAnswer(models.Model): @@ -50,4 +50,4 @@ class PostAnswer(models.Model):
50 verbose_name_plural = _('Post Answers') 50 verbose_name_plural = _('Post Answers')
51 51
52 def __str__(self): 52 def __str__(self):
53 - return ''.join([self.user.name, " / ", self.answer_date])  
54 \ No newline at end of file 53 \ No newline at end of file
  54 + return ''.join([self.user.name, " / ", str(self.answer_date)])
55 \ No newline at end of file 55 \ No newline at end of file
forum/templates/post_answer_list.html
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
  1 +{% load i18n %}
  2 +
  3 +{% if answers|length > 0 %}
  4 + <ul class="timeline post">
  5 + {% for answer in answers %}
  6 + <li>
  7 + <div class="timeline-panel">
  8 + <div class="row">
  9 + <div class="col-xs-2 col-sm-2 col-md-2">
  10 + <img class="img-responsive img-rounded" src="{{ answer.user.image_url }}" />
  11 + </div>
  12 + <div class="col-xs-10 col-sm-10 col-md-10">
  13 + <div class="timeline-heading">
  14 + <h3> {{ answer.user }}</h3>
  15 + </div>
  16 + <div class="timeline-body">
  17 + <p><em>{{ answer.message|linebreaks }}</em></p>
  18 + </div>
  19 + <hr>
  20 + <small class="text-muted">
  21 + <span class="pull-right">
  22 + <i class="glyphicon glyphicon-time"></i> {{ answer.answer_date|timesince }}
  23 + {% trans ' ago' %}
  24 + </span>
  25 + </small>
  26 + </div>
  27 + </div>
  28 + </div>
  29 + </li>
  30 + {% endfor %}
  31 + </ul>
  32 +{% else %}
  33 + <p>{% trans 'Nobody answered this post yet.' %}</p>
  34 +{% endif %}
0 \ No newline at end of file 35 \ No newline at end of file
forum/templates/post_list.html
@@ -4,27 +4,33 @@ @@ -4,27 +4,33 @@
4 <ul class="timeline post"> 4 <ul class="timeline post">
5 {% for post in posts %} 5 {% for post in posts %}
6 <li> 6 <li>
7 - <div class="timeline-panel">  
8 - <div class="row">  
9 - <div class="col-xs-2 col-sm-2 col-md-2">  
10 - <img class="img-responsive img-rounded" src="{{ post.user.image_url }}" />  
11 - </div>  
12 - <div class="col-xs-10 col-sm-10 col-md-10">  
13 - <div class="timeline-heading">  
14 - <h3> {{ post.user }}</h3> 7 + <a class="post_collapse" role="button" href="javascript: showPostsAnswers('{{ post.id }}')" aria-expanded="false">
  8 + <div class="timeline-panel">
  9 + <div class="row">
  10 + <div class="col-xs-2 col-sm-2 col-md-2">
  11 + <img class="img-responsive img-rounded" src="{{ post.user.image_url }}" />
15 </div> 12 </div>
16 - <div class="timeline-body">  
17 - <p><em>{{ post.message|linebreaks }}</em></p> 13 + <div class="col-xs-10 col-sm-10 col-md-10">
  14 + <div class="timeline-heading">
  15 + <h3> {{ post.user }}</h3>
  16 + </div>
  17 + <div class="timeline-body">
  18 + <p><em>{{ post.message|linebreaks }}</em></p>
  19 + </div>
  20 + <hr>
  21 + <small class="text-muted">
  22 + <span class="pull-right">
  23 + <i class="glyphicon glyphicon-time"></i> {{ post.post_date|timesince }}
  24 + {% trans ' ago' %}
  25 + </span>
  26 + </small>
18 </div> 27 </div>
19 - <hr>  
20 - <small class="text-muted">  
21 - <span class="pull-right">  
22 - <i class="glyphicon glyphicon-time"></i> {{ post.post_date|timesince }}  
23 - {% trans ' ago' %}  
24 - </span>  
25 - </small>  
26 </div> 28 </div>
27 </div> 29 </div>
  30 + </a>
  31 + <div class="collapse" id="collapse{{ post.id }}" style="margin-top:10px;">
  32 + <div class="well">
  33 + </div>
28 </div> 34 </div>
29 </li> 35 </li>
30 {% endfor %} 36 {% endfor %}
@@ -7,4 +7,5 @@ urlpatterns = [ @@ -7,4 +7,5 @@ urlpatterns = [
7 url(r'^$', views.ForumIndex.as_view(), name='index'), 7 url(r'^$', views.ForumIndex.as_view(), name='index'),
8 url(r'^create$', views.CreateForumView.as_view(), name='create'), 8 url(r'^create$', views.CreateForumView.as_view(), name='create'),
9 url(r'^posts$', views.PostIndex.as_view(), name='posts'), 9 url(r'^posts$', views.PostIndex.as_view(), name='posts'),
  10 + url(r'^post_answers$', views.PostAnswerIndex.as_view(), name='post_answers'),
10 ] 11 ]
forum/views.py
@@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _ @@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _
4 from django.views import generic 4 from django.views import generic
5 from django.contrib.auth.mixins import LoginRequiredMixin 5 from django.contrib.auth.mixins import LoginRequiredMixin
6 6
7 -from .models import Forum, Post 7 +from .models import Forum, Post, PostAnswer
8 from courses.models import Topic 8 from courses.models import Topic
9 9
10 from .forms import ForumForm 10 from .forms import ForumForm
@@ -41,4 +41,18 @@ class PostIndex(LoginRequiredMixin, generic.ListView): @@ -41,4 +41,18 @@ class PostIndex(LoginRequiredMixin, generic.ListView):
41 41
42 context = Post.objects.filter(forum = forum) 42 context = Post.objects.filter(forum = forum)
43 43
  44 + return context
  45 +
  46 +class PostAnswerIndex(LoginRequiredMixin, generic.ListView):
  47 + login_url = reverse_lazy("core:home")
  48 + redirect_field_name = 'next'
  49 +
  50 + template_name = "post_answer_list.html"
  51 + context_object_name = 'answers'
  52 +
  53 + def get_queryset(self):
  54 + post = get_object_or_404(Post, id = self.request.GET.get('post', ''))
  55 +
  56 + context = PostAnswer.objects.filter(post = post)
  57 +
44 return context 58 return context
45 \ No newline at end of file 59 \ No newline at end of file