Commit 3a6a41bd2ffbea2d61618f3997ea706b93f0a79e

Authored by Zambom
1 parent 8847726a

Applying date limit [Issue: #259]

forum/models.py
@@ -6,6 +6,8 @@ from autoslug.fields import AutoSlugField @@ -6,6 +6,8 @@ from autoslug.fields import AutoSlugField
6 from courses.models import Activity 6 from courses.models import Activity
7 from users.models import User 7 from users.models import User
8 8
  9 +from datetime import date
  10 +
9 """ 11 """
10 It's one kind of activity available for a Topic. 12 It's one kind of activity available for a Topic.
11 It works like a 'topic' of forum, which users can post to it and answer posts of it. 13 It works like a 'topic' of forum, which users can post to it and answer posts of it.
@@ -23,6 +25,11 @@ class Forum(Activity): @@ -23,6 +25,11 @@ class Forum(Activity):
23 def __str__(self): 25 def __str__(self):
24 return self.name 26 return self.name
25 27
  28 + def is_closed(self):
  29 + today = date.today()
  30 +
  31 + return self.limit_date < today
  32 +
26 33
27 """ 34 """
28 It represents a post made in a forum (topic) 35 It represents a post made in a forum (topic)
forum/static/js/forum.js
@@ -62,6 +62,7 @@ function createForum(url, topic) { @@ -62,6 +62,7 @@ function createForum(url, topic) {
62 function setForumCreateFormSubmit(topic) { 62 function setForumCreateFormSubmit(topic) {
63 $('.date-picker').datepicker({ 63 $('.date-picker').datepicker({
64 language: locale, 64 language: locale,
  65 + startDate: "dateToday"
65 }); 66 });
66 67
67 var frm = $('#forum_create'); 68 var frm = $('#forum_create');
@@ -114,6 +115,7 @@ function editForum(url, forum, success_message) { @@ -114,6 +115,7 @@ function editForum(url, forum, success_message) {
114 function setForumUpdateFormSubmit(success_message) { 115 function setForumUpdateFormSubmit(success_message) {
115 $('.date-picker').datepicker({ 116 $('.date-picker').datepicker({
116 language: locale, 117 language: locale,
  118 + startDate: "dateToday"
117 }); 119 });
118 120
119 var frm = $('#forum_create'); 121 var frm = $('#forum_create');
forum/templates/forum/forum_view.html
@@ -59,45 +59,47 @@ @@ -59,45 +59,47 @@
59 <h4><b>{% trans 'Opened in' %}:</b> {{ forum.create_date }}</h4> 59 <h4><b>{% trans 'Opened in' %}:</b> {{ forum.create_date }}</h4>
60 </div> 60 </div>
61 </div> 61 </div>
62 - <div class="form_post_block">  
63 - <hr />  
64 - <form id="form_post" method="post" action="{% url 'course:forum:create_post' %}" enctype="multipart/form-data">  
65 - {% csrf_token %}  
66 - {% for field in form %}  
67 - {% if field.field.widget.input_type == 'hidden' %}  
68 - {% render_field field class='form-control' value=forum.id %}  
69 - {% else %}  
70 - <div class="form-group {% if form.has_error %} has-error {% endif %} is-fileinput">  
71 - <div class="input-group">  
72 - {% render_field field class='form-control' placeholder="Post a message" %}  
73 - <span class="help-block">{{ field.help_text }}</span>  
74 - {% if field.errors %}  
75 - <div class="row">  
76 - <br />  
77 - <div class="alert alert-danger alert-dismissible" role="alert">  
78 - <button type="button" class="close" data-dismiss="alert" aria-label="Close">  
79 - <span aria-hidden="true">&times;</span>  
80 - </button>  
81 - <ul>  
82 - {% for error in field.errors %}  
83 - <li>{{ error }}</li>  
84 - {% endfor %}  
85 - </ul> 62 + {% if not forum.is_closed %}
  63 + <div class="form_post_block">
  64 + <hr />
  65 + <form id="form_post" method="post" action="{% url 'course:forum:create_post' %}" enctype="multipart/form-data">
  66 + {% csrf_token %}
  67 + {% for field in form %}
  68 + {% if field.field.widget.input_type == 'hidden' %}
  69 + {% render_field field class='form-control' value=forum.id %}
  70 + {% else %}
  71 + <div class="form-group {% if form.has_error %} has-error {% endif %} is-fileinput">
  72 + <div class="input-group">
  73 + {% render_field field class='form-control' placeholder="Post a message" %}
  74 + <span class="help-block">{{ field.help_text }}</span>
  75 + {% if field.errors %}
  76 + <div class="row">
  77 + <br />
  78 + <div class="alert alert-danger alert-dismissible" role="alert">
  79 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  80 + <span aria-hidden="true">&times;</span>
  81 + </button>
  82 + <ul>
  83 + {% for error in field.errors %}
  84 + <li>{{ error }}</li>
  85 + {% endfor %}
  86 + </ul>
  87 + </div>
86 </div> 88 </div>
87 - </div>  
88 - {% endif %}  
89 - <span class="input-group-btn">  
90 - <button type="submit" class="btn btn-fab btn-fab-mini">  
91 - <i class="material-icons">{% trans 'send' %}</i>  
92 - </button>  
93 - </span> 89 + {% endif %}
  90 + <span class="input-group-btn">
  91 + <button type="submit" class="btn btn-fab btn-fab-mini">
  92 + <i class="material-icons">{% trans 'send' %}</i>
  93 + </button>
  94 + </span>
  95 + </div>
94 </div> 96 </div>
95 - </div>  
96 - {% endif %}  
97 - {% endfor %}  
98 - </form>  
99 - <hr />  
100 - </div> 97 + {% endif %}
  98 + {% endfor %}
  99 + </form>
  100 + <hr />
  101 + </div>
  102 + {% endif %}
101 <div id="posts_list"> 103 <div id="posts_list">
102 {% list_posts request forum %} 104 {% list_posts request forum %}
103 </div> 105 </div>
forum/templates/post/post_list.html
@@ -6,23 +6,25 @@ @@ -6,23 +6,25 @@
6 <div id="post_{{ post.id }}" class="col-sm-12 col-xs-12"> 6 <div id="post_{{ post.id }}" class="col-sm-12 col-xs-12">
7 <h3 class="user-name"> 7 <h3 class="user-name">
8 {{ post.user }} 8 {{ post.user }}
9 - <div class="pull-right">  
10 - <a href="javascript:answer('{{ post.id }}', '{% url 'course:forum:reply_post' %}');">  
11 - <i class="material-icons">{% trans 'reply' %}</i>  
12 - </a>  
13 - {% if request.user|has_role:'system_admin' or request.user == post.user %}  
14 - {% csrf_token %}  
15 - <div class="btn-group icon-more-horiz">  
16 - <a class="btn btn-default btn-xs dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">  
17 - <i class="material-icons">more_horiz</i>  
18 - </a>  
19 - <ul class="dropdown-menu pull-right" aria-labelledby="dropdownMenu1">  
20 - <li><a href="javascript:edit_post('{% url 'course:forum:update_post' post.id %}', '{{ post.id }}', '{% trans 'Post edited successfully!' %}')"><i class="material-icons">create</i> {% trans 'Edit' %}</a></li>  
21 - <li><a href="javascript:javascript:delete_post('{% url 'course:forum:delete_post' post.id %}', '{{ post.id }}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li>  
22 - </ul>  
23 - </div>  
24 - {% endif %}  
25 - </div> 9 + {% if not post.forum.is_closed %}
  10 + <div class="pull-right">
  11 + <a href="javascript:answer('{{ post.id }}', '{% url 'course:forum:reply_post' %}');">
  12 + <i class="material-icons">{% trans 'reply' %}</i>
  13 + </a>
  14 + {% if request.user|has_role:'system_admin' or request.user == post.user %}
  15 + {% csrf_token %}
  16 + <div class="btn-group icon-more-horiz">
  17 + <a class="btn btn-default btn-xs dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  18 + <i class="material-icons">more_horiz</i>
  19 + </a>
  20 + <ul class="dropdown-menu pull-right" aria-labelledby="dropdownMenu1">
  21 + <li><a href="javascript:edit_post('{% url 'course:forum:update_post' post.id %}', '{{ post.id }}', '{% trans 'Post edited successfully!' %}')"><i class="material-icons">create</i> {% trans 'Edit' %}</a></li>
  22 + <li><a href="javascript:javascript:delete_post('{% url 'course:forum:delete_post' post.id %}', '{{ post.id }}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li>
  23 + </ul>
  24 + </div>
  25 + {% endif %}
  26 + </div>
  27 + {% endif %}
26 </h3> 28 </h3>
27 <div class="post_content"> 29 <div class="post_content">
28 <div class="card-data"> 30 <div class="card-data">
forum/templates/post_answers/post_answer_list.html
@@ -7,18 +7,20 @@ @@ -7,18 +7,20 @@
7 <div class="col-sm-12 col-xs-12"> 7 <div class="col-sm-12 col-xs-12">
8 <h3 class="user-name"> 8 <h3 class="user-name">
9 {{ answer.user }} 9 {{ answer.user }}
10 - {% if request.user|has_role:'system_admin' or request.user == answer.user %}  
11 - <div class="pull-right">  
12 - <div class="btn-group icon-more-horiz">  
13 - <a class="btn btn-default btn-xs dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">  
14 - <i class="material-icons">more_horiz</i>  
15 - </a>  
16 - <ul class="dropdown-menu pull-right" aria-labelledby="dropdownMenu1">  
17 - <li><a href="javascript:edit_post_answer('{% url 'course:forum:update_post_answer' answer.id %}', '{{ answer.id }}', '{% trans 'Answer edited sucessfully!' %}')"><i class="material-icons">create</i> {% trans 'Edit' %}</a></li>  
18 - <li><a href="javascript:delete_answer('{% url 'course:forum:delete_answer' answer.id %}', '{{ answer.id }}', '{% trans "Are you sure you want to delete this answer?" %}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li>  
19 - </ul> 10 + {% if not answer.post.forum.is_closed %}
  11 + {% if request.user|has_role:'system_admin' or request.user == answer.user %}
  12 + <div class="pull-right">
  13 + <div class="btn-group icon-more-horiz">
  14 + <a class="btn btn-default btn-xs dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  15 + <i class="material-icons">more_horiz</i>
  16 + </a>
  17 + <ul class="dropdown-menu pull-right" aria-labelledby="dropdownMenu1">
  18 + <li><a href="javascript:edit_post_answer('{% url 'course:forum:update_post_answer' answer.id %}', '{{ answer.id }}', '{% trans 'Answer edited sucessfully!' %}')"><i class="material-icons">create</i> {% trans 'Edit' %}</a></li>
  19 + <li><a href="javascript:delete_answer('{% url 'course:forum:delete_answer' answer.id %}', '{{ answer.id }}', '{% trans "Are you sure you want to delete this answer?" %}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li>
  20 + </ul>
  21 + </div>
20 </div> 22 </div>
21 - </div> 23 + {% endif %}
22 {% endif %} 24 {% endif %}
23 </h3> 25 </h3>
24 <div class="post_answer_content"> 26 <div class="post_answer_content">