Commit 00c4323fbed9053c6bff2fa585951eec2227b8f5

Authored by Zambom
1 parent 415f147d

Adding subscribe button [Issue: #195]

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")})