Commit 3a6a41bd2ffbea2d61618f3997ea706b93f0a79e
1 parent
8847726a
Exists in
master
and in
5 other branches
Applying date limit [Issue: #259]
Showing
5 changed files
with
80 additions
and
65 deletions
Show diff stats
forum/models.py
... | ... | @@ -6,6 +6,8 @@ from autoslug.fields import AutoSlugField |
6 | 6 | from courses.models import Activity |
7 | 7 | from users.models import User |
8 | 8 | |
9 | +from datetime import date | |
10 | + | |
9 | 11 | """ |
10 | 12 | It's one kind of activity available for a Topic. |
11 | 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 | 25 | def __str__(self): |
24 | 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 | 35 | It represents a post made in a forum (topic) | ... | ... |
forum/static/js/forum.js
... | ... | @@ -62,6 +62,7 @@ function createForum(url, topic) { |
62 | 62 | function setForumCreateFormSubmit(topic) { |
63 | 63 | $('.date-picker').datepicker({ |
64 | 64 | language: locale, |
65 | + startDate: "dateToday" | |
65 | 66 | }); |
66 | 67 | |
67 | 68 | var frm = $('#forum_create'); |
... | ... | @@ -114,6 +115,7 @@ function editForum(url, forum, success_message) { |
114 | 115 | function setForumUpdateFormSubmit(success_message) { |
115 | 116 | $('.date-picker').datepicker({ |
116 | 117 | language: locale, |
118 | + startDate: "dateToday" | |
117 | 119 | }); |
118 | 120 | |
119 | 121 | var frm = $('#forum_create'); | ... | ... |
forum/templates/forum/forum_view.html
... | ... | @@ -59,45 +59,47 @@ |
59 | 59 | <h4><b>{% trans 'Opened in' %}:</b> {{ forum.create_date }}</h4> |
60 | 60 | </div> |
61 | 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">×</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">×</span> | |
81 | + </button> | |
82 | + <ul> | |
83 | + {% for error in field.errors %} | |
84 | + <li>{{ error }}</li> | |
85 | + {% endfor %} | |
86 | + </ul> | |
87 | + </div> | |
86 | 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 | 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 | 103 | <div id="posts_list"> |
102 | 104 | {% list_posts request forum %} |
103 | 105 | </div> | ... | ... |
forum/templates/post/post_list.html
... | ... | @@ -6,23 +6,25 @@ |
6 | 6 | <div id="post_{{ post.id }}" class="col-sm-12 col-xs-12"> |
7 | 7 | <h3 class="user-name"> |
8 | 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 | 28 | </h3> |
27 | 29 | <div class="post_content"> |
28 | 30 | <div class="card-data"> | ... | ... |
forum/templates/post_answers/post_answer_list.html
... | ... | @@ -7,18 +7,20 @@ |
7 | 7 | <div class="col-sm-12 col-xs-12"> |
8 | 8 | <h3 class="user-name"> |
9 | 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 | 22 | </div> |
21 | - </div> | |
23 | + {% endif %} | |
22 | 24 | {% endif %} |
23 | 25 | </h3> |
24 | 26 | <div class="post_answer_content"> | ... | ... |