From 00c4323fbed9053c6bff2fa585951eec2227b8f5 Mon Sep 17 00:00:00 2001 From: Zambom Date: Fri, 21 Oct 2016 00:58:42 -0300 Subject: [PATCH] Adding subscribe button [Issue: #195] --- courses/models.py | 6 ++++++ courses/static/js/course.js | 2 +- courses/templates/course/view.html | 15 +++++++++++++++ courses/views.py | 10 +++++++--- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/courses/models.py b/courses/models.py index 9db0eb0..16306f0 100644 --- a/courses/models.py +++ b/courses/models.py @@ -1,5 +1,6 @@ from django.utils.translation import ugettext_lazy as _ from django.db import models +import datetime from autoslug.fields import AutoSlugField from users.models import User from core.models import Resource, MimeType @@ -79,6 +80,11 @@ class Subject(models.Model): def __str__(self): return self.name + def show_subscribe(self): + today = datetime.date.today() + + return today < self.init_date + class Topic(models.Model): name = models.CharField(_('Name'), max_length = 100) diff --git a/courses/static/js/course.js b/courses/static/js/course.js index 47d2110..f0287ce 100644 --- a/courses/static/js/course.js +++ b/courses/static/js/course.js @@ -10,7 +10,7 @@ function subscribe(elem, url, confirm_message) { url: url, success: function (data) { if (data.status == "ok") { - elem.disabled(true); + elem.remove(); alertify.success(data.message); } else { alertify.error(data.message); diff --git a/courses/templates/course/view.html b/courses/templates/course/view.html index 6a35636..cb3e92d 100644 --- a/courses/templates/course/view.html +++ b/courses/templates/course/view.html @@ -7,6 +7,10 @@ {% endblock style %} +{% block javascript %} + +{% endblock %} + {% block breadcrumbs %} {{ block.super }} @@ -212,6 +216,12 @@ {% endif %} + + {% if user|has_role:'student' and not user in subject.students.all and subject.show_subscribe %} +
+ {% trans 'Subscribe' %} +
+ {% endif %}
@@ -259,6 +269,11 @@
{% endif %} + {% if user|has_role:'student' and not user in subject.students and subject.show_subscribe %} +
+ {% trans 'Subscribe' %} +
+ {% endif %}
diff --git a/courses/views.py b/courses/views.py index defb050..16d6253 100644 --- a/courses/views.py +++ b/courses/views.py @@ -231,7 +231,9 @@ class DeleteView(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.De def subscribe_course(request, slug): course = get_object_or_404(Course, slug = slug) - if course.students.add(request.user): + course.students.add(request.user) + + if request.user in course.students.all(): return JsonResponse({"status": "ok", "message": _("Successfully subscribed to the course!")}) else: 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): def subscribe_subject(request, slug): subject = get_object_or_404(Subject, slug = slug) - if request.user.courses_student.filter(slug = slug).exists(): - if subject.students.add(request.user): + if request.user in subject.course.students.all(): + subject.students.add(request.user) + + if request.user in subject.students.all(): return JsonResponse({"status": "ok", "message": _("Successfully subscribed to the subject!")}) else: return JsonResponse({"status": "erro", "message": _("An error has occured. Could not subscribe to this subject, try again later")}) -- libgit2 0.21.2