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"> | ... | ... |