Commit 00c4323fbed9053c6bff2fa585951eec2227b8f5
1 parent
415f147d
Exists in
master
and in
5 other branches
Adding subscribe button [Issue: #195]
Showing
4 changed files
with
29 additions
and
4 deletions
Show diff stats
courses/models.py
1 | from django.utils.translation import ugettext_lazy as _ | 1 | from django.utils.translation import ugettext_lazy as _ |
2 | from django.db import models | 2 | from django.db import models |
3 | +import datetime | ||
3 | from autoslug.fields import AutoSlugField | 4 | from autoslug.fields import AutoSlugField |
4 | from users.models import User | 5 | from users.models import User |
5 | from core.models import Resource, MimeType | 6 | from core.models import Resource, MimeType |
@@ -79,6 +80,11 @@ class Subject(models.Model): | @@ -79,6 +80,11 @@ class Subject(models.Model): | ||
79 | def __str__(self): | 80 | def __str__(self): |
80 | return self.name | 81 | return self.name |
81 | 82 | ||
83 | + def show_subscribe(self): | ||
84 | + today = datetime.date.today() | ||
85 | + | ||
86 | + return today < self.init_date | ||
87 | + | ||
82 | class Topic(models.Model): | 88 | class Topic(models.Model): |
83 | 89 | ||
84 | name = models.CharField(_('Name'), max_length = 100) | 90 | name = models.CharField(_('Name'), max_length = 100) |
courses/static/js/course.js
@@ -10,7 +10,7 @@ function subscribe(elem, url, confirm_message) { | @@ -10,7 +10,7 @@ function subscribe(elem, url, confirm_message) { | ||
10 | url: url, | 10 | url: url, |
11 | success: function (data) { | 11 | success: function (data) { |
12 | if (data.status == "ok") { | 12 | if (data.status == "ok") { |
13 | - elem.disabled(true); | 13 | + elem.remove(); |
14 | alertify.success(data.message); | 14 | alertify.success(data.message); |
15 | } else { | 15 | } else { |
16 | alertify.error(data.message); | 16 | alertify.error(data.message); |
courses/templates/course/view.html
@@ -7,6 +7,10 @@ | @@ -7,6 +7,10 @@ | ||
7 | <link rel="stylesheet" href="{% static 'css/course/course.css' %}"> | 7 | <link rel="stylesheet" href="{% static 'css/course/course.css' %}"> |
8 | {% endblock style %} | 8 | {% endblock style %} |
9 | 9 | ||
10 | +{% block javascript %} | ||
11 | + <script type="text/javascript" src="{% static 'js/course.js' %}"></script> | ||
12 | +{% endblock %} | ||
13 | + | ||
10 | {% block breadcrumbs %} | 14 | {% block breadcrumbs %} |
11 | 15 | ||
12 | {{ block.super }} | 16 | {{ block.super }} |
@@ -212,6 +216,12 @@ | @@ -212,6 +216,12 @@ | ||
212 | </div> | 216 | </div> |
213 | </div> | 217 | </div> |
214 | {% endif %} | 218 | {% endif %} |
219 | + | ||
220 | + {% if user|has_role:'student' and not user in subject.students.all and subject.show_subscribe %} | ||
221 | + <div class="col-xs-3 col-md-2"> | ||
222 | + <a onclick="subscribe($(this), '{% url 'course:subscribe_subject' subject.slug %}' , '{% trans 'Are you sure you want to subscribe to this subject?' %}')" class="btn btn-sm btn-primary btn-raised">{% trans 'Subscribe' %}</a> | ||
223 | + </div> | ||
224 | + {% endif %} | ||
215 | </div> | 225 | </div> |
216 | </div> | 226 | </div> |
217 | <div class="panel-body"> | 227 | <div class="panel-body"> |
@@ -259,6 +269,11 @@ | @@ -259,6 +269,11 @@ | ||
259 | </div> | 269 | </div> |
260 | </div> | 270 | </div> |
261 | {% endif %} | 271 | {% endif %} |
272 | + {% if user|has_role:'student' and not user in subject.students and subject.show_subscribe %} | ||
273 | + <div class="col-xs-3 col-md-2"> | ||
274 | + <a onclick="subscribe($(this), '{% url 'course:subscribe_subject' subject.slug %}' , '{% trans 'Are you sure you want to subscribe to this subject?' %}')" class="btn btn-sm btn-primary btn-raised">{% trans 'Subscribe' %}</a> | ||
275 | + </div> | ||
276 | + {% endif %} | ||
262 | </div> | 277 | </div> |
263 | </div> | 278 | </div> |
264 | <div class="panel-body"> | 279 | <div class="panel-body"> |
courses/views.py
@@ -231,7 +231,9 @@ class DeleteView(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.De | @@ -231,7 +231,9 @@ class DeleteView(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.De | ||
231 | def subscribe_course(request, slug): | 231 | def subscribe_course(request, slug): |
232 | course = get_object_or_404(Course, slug = slug) | 232 | course = get_object_or_404(Course, slug = slug) |
233 | 233 | ||
234 | - if course.students.add(request.user): | 234 | + course.students.add(request.user) |
235 | + | ||
236 | + if request.user in course.students.all(): | ||
235 | return JsonResponse({"status": "ok", "message": _("Successfully subscribed to the course!")}) | 237 | return JsonResponse({"status": "ok", "message": _("Successfully subscribed to the course!")}) |
236 | else: | 238 | else: |
237 | return JsonResponse({"status": "erro", "message": _("An error has occured. Could not subscribe to this course, try again later")}) | 239 | return JsonResponse({"status": "erro", "message": _("An error has occured. Could not subscribe to this course, try again later")}) |
@@ -552,8 +554,10 @@ class DeleteSubjectView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | @@ -552,8 +554,10 @@ class DeleteSubjectView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): | ||
552 | def subscribe_subject(request, slug): | 554 | def subscribe_subject(request, slug): |
553 | subject = get_object_or_404(Subject, slug = slug) | 555 | subject = get_object_or_404(Subject, slug = slug) |
554 | 556 | ||
555 | - if request.user.courses_student.filter(slug = slug).exists(): | ||
556 | - if subject.students.add(request.user): | 557 | + if request.user in subject.course.students.all(): |
558 | + subject.students.add(request.user) | ||
559 | + | ||
560 | + if request.user in subject.students.all(): | ||
557 | return JsonResponse({"status": "ok", "message": _("Successfully subscribed to the subject!")}) | 561 | return JsonResponse({"status": "ok", "message": _("Successfully subscribed to the subject!")}) |
558 | else: | 562 | else: |
559 | return JsonResponse({"status": "erro", "message": _("An error has occured. Could not subscribe to this subject, try again later")}) | 563 | return JsonResponse({"status": "erro", "message": _("An error has occured. Could not subscribe to this subject, try again later")}) |