Commit 2d4f41617310a5e26325eaebb608903817611c7c

Authored by fbormann
1 parent f31dfec9

added functional notifications for poll, links and forum #207

core/mixins.py
@@ -51,13 +51,13 @@ class NotificationMixin(object): @@ -51,13 +51,13 @@ class NotificationMixin(object):
51 if action.exists(): 51 if action.exists():
52 action = action[0] 52 action = action[0]
53 else: 53 else:
54 - action = Action(name = self.action_slug) 54 + action = Action(name = action_slug)
55 action.save() 55 action.save()
56 56
57 if resource.exists(): 57 if resource.exists():
58 resource = resource[0] 58 resource = resource[0]
59 else: 59 else:
60 - resource = Resource(name = self.resource_name, url= resource_link) 60 + resource = Resource(name = resource_name, url= resource_link)
61 resource.save() 61 resource.save()
62 62
63 action_resource = Action_Resource.objects.filter(action = action, resource = resource) 63 action_resource = Action_Resource.objects.filter(action = action, resource = resource)
courses/views.py
@@ -19,6 +19,8 @@ from users.models import User @@ -19,6 +19,8 @@ from users.models import User
19 from files.forms import FileForm 19 from files.forms import FileForm
20 from files.models import TopicFile 20 from files.models import TopicFile
21 21
  22 +from django.urls import reverse
  23 +
22 from datetime import date 24 from datetime import date
23 25
24 class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): 26 class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
@@ -430,7 +432,7 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, NotificationMixin, gener @@ -430,7 +432,7 @@ class CreateTopicView(LoginRequiredMixin, HasRoleMixin, NotificationMixin, gener
430 self.object.save() 432 self.object.save()
431 action = super(CreateTopicView, self).createorRetrieveAction("create Topic") 433 action = super(CreateTopicView, self).createorRetrieveAction("create Topic")
432 super(CreateTopicView, self).createNotification("Topic "+ self.object.name + " was created", 434 super(CreateTopicView, self).createNotification("Topic "+ self.object.name + " was created",
433 - resource_name=self.object.name, resource_link= 'topics/'+self.object.slug, 435 + resource_name=self.object.name, resource_link= reverse('course:view_topic',args=[self.object.slug]),
434 actor=self.request.user, users = self.object.subject.course.students.all() ) 436 actor=self.request.user, users = self.object.subject.course.students.all() )
435 437
436 return super(CreateTopicView, self).form_valid(form) 438 return super(CreateTopicView, self).form_valid(form)
forum/views.py
@@ -13,6 +13,7 @@ from core.mixins import NotificationMixin @@ -13,6 +13,7 @@ from core.mixins import NotificationMixin
13 from core.models import Action, Resource 13 from core.models import Action, Resource
14 14
15 from .forms import ForumForm, PostForm, PostAnswerForm 15 from .forms import ForumForm, PostForm, PostAnswerForm
  16 +from django.urls import reverse
16 17
17 """ 18 """
18 Forum Section 19 Forum Section
@@ -57,7 +58,7 @@ class CreateForumView(LoginRequiredMixin, generic.edit.CreateView, NotificationM @@ -57,7 +58,7 @@ class CreateForumView(LoginRequiredMixin, generic.edit.CreateView, NotificationM
57 58
58 action = super(CreateForumView, self).createorRetrieveAction("create Topic") 59 action = super(CreateForumView, self).createorRetrieveAction("create Topic")
59 super(CreateForumView, self).createNotification("Forum "+ self.object.name + " was created", 60 super(CreateForumView, self).createNotification("Forum "+ self.object.name + " was created",
60 - resource_name=self.object.name, resource_link= 'topics/'+self.object.slug, 61 + resource_name=self.object.name, resource_link= reverse('course:forum:view', args=[self.object.slug]),
61 actor=self.request.user, users = self.object.topic.subject.students.all() ) 62 actor=self.request.user, users = self.object.topic.subject.students.all() )
62 return self.success_url 63 return self.success_url
63 64
links/views.py
@@ -10,9 +10,11 @@ from rolepermissions.mixins import HasRoleMixin @@ -10,9 +10,11 @@ from rolepermissions.mixins import HasRoleMixin
10 from courses.models import Topic 10 from courses.models import Topic
11 from .models import Link 11 from .models import Link
12 from .forms import * 12 from .forms import *
  13 +from core.mixins import NotificationMixin
  14 +from django.urls import reverse
13 15
14 # Create your views here. 16 # Create your views here.
15 -class CreateLink(LoginRequiredMixin, HasRoleMixin, generic.CreateView): 17 +class CreateLink(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.CreateView):
16 allowed_roles = ['professor', 'system_admin'] 18 allowed_roles = ['professor', 'system_admin']
17 template_name = 'links/create_link.html' 19 template_name = 'links/create_link.html'
18 form_class = CreateLinkForm 20 form_class = CreateLinkForm
@@ -24,9 +26,12 @@ class CreateLink(LoginRequiredMixin, HasRoleMixin, generic.CreateView): @@ -24,9 +26,12 @@ class CreateLink(LoginRequiredMixin, HasRoleMixin, generic.CreateView):
24 topic = get_object_or_404(Topic, slug = self.kwargs.get('slug')) 26 topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
25 self.object.topic = topic 27 self.object.topic = topic
26 messages.success(self.request, _('Link created successfully!')) 28 messages.success(self.request, _('Link created successfully!'))
27 - #messages.error(self.request, _("An error occurred when trying to create the link")) 29 +
28 self.object.save() 30 self.object.save()
29 - #return self.success_url 31 + super(CreateLink, self).createNotification(message="created a Link at "+ self.object.topic.name, actor=self.request.user,
  32 + resource_name=self.object.name, resource_link= reverse('course:view_topic', args=[self.object.topic.slug]),
  33 + users=self.object.topic.subject.students.all())
  34 +
30 return self.get_success_url() 35 return self.get_success_url()
31 def get_context_data(self,**kwargs): 36 def get_context_data(self,**kwargs):
32 context = {} 37 context = {}
@@ -43,7 +48,7 @@ def deleteLink(request,linkname): @@ -43,7 +48,7 @@ def deleteLink(request,linkname):
43 link.delete() 48 link.delete()
44 template_name = 'links/delete_link.html' 49 template_name = 'links/delete_link.html'
45 messages.success(request,_("Link deleted Successfully!")) 50 messages.success(request,_("Link deleted Successfully!"))
46 - #messages.error(request, _("An error occurred when trying to delete the link")) 51 +
47 return redirect('course:manage') 52 return redirect('course:manage')
48 53
49 def render_link(request, id): 54 def render_link(request, id):
@@ -73,8 +73,8 @@ class CreatePoll(LoginRequiredMixin,HasRoleMixin, NotificationMixin,generic.Crea @@ -73,8 +73,8 @@ class CreatePoll(LoginRequiredMixin,HasRoleMixin, NotificationMixin,generic.Crea
73 self.object.name = str(self.object) 73 self.object.name = str(self.object)
74 self.object.save() 74 self.object.save()
75 75
76 - super(CreatePoll, self).createNotification(message="created a Poll "+ self.object.name, actor=self.request.user,  
77 - resource_name=self.object.name, resource_link= reverse('course:poll:view_poll', args=[self.object.slug]), 76 + super(CreatePoll, self).createNotification(message="created a Poll at "+ self.object.topic.name, actor=self.request.user,
  77 + resource_name=self.object.name, resource_link= reverse('course:view_topic', args=[self.object.topic.slug]),
78 users=self.object.topic.subject.students.all()) 78 users=self.object.topic.subject.students.all())
79 for key in self.request.POST: 79 for key in self.request.POST:
80 if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'limit_date' and key != 'all_students' and key != 'students'): 80 if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'limit_date' and key != 'all_students' and key != 'students'):