Commit 7ca39e8e2f71be611c7671a6fe3e10a0ef927f40

Authored by Zambom
1 parent 0c6e462c

Adding crud forum log functions [Issue: #243]

Showing 1 changed file with 94 additions and 7 deletions   Show diff stats
forum/views.py
@@ -18,7 +18,7 @@ from core.models import Action, Resource @@ -18,7 +18,7 @@ from core.models import Action, Resource
18 18
19 from .forms import ForumForm, PostForm, PostAnswerForm 19 from .forms import ForumForm, PostForm, PostAnswerForm
20 20
21 -from core.mixins import NotificationMixin 21 +from core.mixins import LogMixin, NotificationMixin
22 22
23 """ 23 """
24 Forum Section 24 Forum Section
@@ -44,7 +44,12 @@ class ForumIndex(LoginRequiredMixin, generic.ListView): @@ -44,7 +44,12 @@ class ForumIndex(LoginRequiredMixin, generic.ListView):
44 44
45 return context 45 return context
46 46
47 -class CreateForumView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView, NotificationMixin): 47 +class CreateForumView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView, LogMixin, NotificationMixin):
  48 + log_component = "forum"
  49 + log_action = "create"
  50 + log_resource = "forum"
  51 + log_context = {}
  52 +
48 allowed_roles = ['professor', 'system_admin'] 53 allowed_roles = ['professor', 'system_admin']
49 54
50 login_url = reverse_lazy("core:home") 55 login_url = reverse_lazy("core:home")
@@ -67,14 +72,36 @@ class CreateForumView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView, @@ -67,14 +72,36 @@ class CreateForumView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView,
67 super(CreateForumView, self).createNotification("Forum "+ self.object.name + " was created", 72 super(CreateForumView, self).createNotification("Forum "+ self.object.name + " was created",
68 resource_name=self.object.name, resource_link= reverse('course:forum:view', args=[self.object.slug]), 73 resource_name=self.object.name, resource_link= reverse('course:forum:view', args=[self.object.slug]),
69 actor=self.request.user, users = self.object.topic.subject.students.all() ) 74 actor=self.request.user, users = self.object.topic.subject.students.all() )
  75 +
  76 + self.log_context['forum_id'] = self.object.id
  77 + self.log_context['forum_name'] = self.object.name
  78 + self.log_context['topic_id'] = self.object.topic.id
  79 + self.log_context['topic_name'] = self.object.topic.name
  80 + self.log_context['topic_slug'] = self.object.topic.slug
  81 + self.log_context['subject_id'] = self.object.topic.subject.id
  82 + self.log_context['subject_name'] = self.object.topic.subject.name
  83 + self.log_context['subject_slug'] = self.object.topic.subject.slug
  84 + self.log_context['course_id'] = self.object.topic.subject.course.id
  85 + self.log_context['course_name'] = self.object.topic.subject.course.name
  86 + self.log_context['course_slug'] = self.object.topic.subject.course.slug
  87 + self.log_context['course_category_id'] = self.object.topic.subject.course.category.id
  88 + self.log_context['course_category_name'] = self.object.topic.subject.course.category.name
  89 +
  90 + super(CreateForumView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  91 +
70 return self.success_url 92 return self.success_url
71 93
72 def render_forum(request, forum): 94 def render_forum(request, forum):
73 last_forum = get_object_or_404(Forum, id = forum) 95 last_forum = get_object_or_404(Forum, id = forum)
74 96
75 - return JsonResponse({'url': str(reverse_lazy('course:forum:view', args = (), kwargs = {'slug': last_forum.slug})), 'forum_id': str(forum), 'name': str(last_forum.name)}) 97 + return JsonResponse({'url': str(reverse_lazy('course:forum:view', args = (), kwargs = {'slug': last_forum.slug})), 'forum_id': str(forum), 'name': str(last_forum.name), 'message': _('Forum created successfully!')})
  98 +
  99 +class UpdateForumView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView, LogMixin):
  100 + log_component = "forum"
  101 + log_action = "update"
  102 + log_resource = "forum"
  103 + log_context = {}
76 104
77 -class UpdateForumView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):  
78 allowed_roles = ['professor', 'system_admin'] 105 allowed_roles = ['professor', 'system_admin']
79 106
80 login_url = reverse_lazy("core:home") 107 login_url = reverse_lazy("core:home")
@@ -97,6 +124,22 @@ class UpdateForumView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): @@ -97,6 +124,22 @@ class UpdateForumView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
97 124
98 def get_success_url(self): 125 def get_success_url(self):
99 self.success_url = reverse('course:forum:render_edit_forum', args = (self.object.id, )) 126 self.success_url = reverse('course:forum:render_edit_forum', args = (self.object.id, ))
  127 +
  128 + self.log_context['forum_id'] = self.object.id
  129 + self.log_context['forum_name'] = self.object.name
  130 + self.log_context['topic_id'] = self.object.topic.id
  131 + self.log_context['topic_name'] = self.object.topic.name
  132 + self.log_context['topic_slug'] = self.object.topic.slug
  133 + self.log_context['subject_id'] = self.object.topic.subject.id
  134 + self.log_context['subject_name'] = self.object.topic.subject.name
  135 + self.log_context['subject_slug'] = self.object.topic.subject.slug
  136 + self.log_context['course_id'] = self.object.topic.subject.course.id
  137 + self.log_context['course_name'] = self.object.topic.subject.course.name
  138 + self.log_context['course_slug'] = self.object.topic.subject.course.slug
  139 + self.log_context['course_category_id'] = self.object.topic.subject.course.category.id
  140 + self.log_context['course_category_name'] = self.object.topic.subject.course.category.name
  141 +
  142 + super(UpdateForumView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
100 143
101 return self.success_url 144 return self.success_url
102 145
@@ -108,7 +151,12 @@ def render_edit_forum(request, forum): @@ -108,7 +151,12 @@ def render_edit_forum(request, forum):
108 151
109 return render(request, 'forum/render_forum.html', context) 152 return render(request, 'forum/render_forum.html', context)
110 153
111 -class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): 154 +class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView, LogMixin):
  155 + log_component = "forum"
  156 + log_action = "delete"
  157 + log_resource = "forum"
  158 + log_context = {}
  159 +
112 allowed_roles = ['professor', 'system_admin'] 160 allowed_roles = ['professor', 'system_admin']
113 161
114 login_url = reverse_lazy("core:home") 162 login_url = reverse_lazy("core:home")
@@ -116,7 +164,6 @@ class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): @@ -116,7 +164,6 @@ class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
116 164
117 model = Forum 165 model = Forum
118 pk_url_kwarg = 'pk' 166 pk_url_kwarg = 'pk'
119 - success_url = reverse_lazy('course:forum:deleted_forum')  
120 167
121 def dispatch(self, *args, **kwargs): 168 def dispatch(self, *args, **kwargs):
122 forum = get_object_or_404(Forum, id = self.kwargs.get('pk')) 169 forum = get_object_or_404(Forum, id = self.kwargs.get('pk'))
@@ -126,10 +173,34 @@ class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): @@ -126,10 +173,34 @@ class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
126 173
127 return super(ForumDeleteView, self).dispatch(*args, **kwargs) 174 return super(ForumDeleteView, self).dispatch(*args, **kwargs)
128 175
  176 + def get_success_url(self):
  177 + self.log_context['forum_id'] = self.object.id
  178 + self.log_context['forum_name'] = self.object.name
  179 + self.log_context['topic_id'] = self.object.topic.id
  180 + self.log_context['topic_name'] = self.object.topic.name
  181 + self.log_context['topic_slug'] = self.object.topic.slug
  182 + self.log_context['subject_id'] = self.object.topic.subject.id
  183 + self.log_context['subject_name'] = self.object.topic.subject.name
  184 + self.log_context['subject_slug'] = self.object.topic.subject.slug
  185 + self.log_context['course_id'] = self.object.topic.subject.course.id
  186 + self.log_context['course_name'] = self.object.topic.subject.course.name
  187 + self.log_context['course_slug'] = self.object.topic.subject.course.slug
  188 + self.log_context['course_category_id'] = self.object.topic.subject.course.category.id
  189 + self.log_context['course_category_name'] = self.object.topic.subject.course.category.name
  190 +
  191 + super(ForumDeleteView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  192 +
  193 + return reverse_lazy('course:forum:deleted_forum')
  194 +
129 def forum_deleted(request): 195 def forum_deleted(request):
130 return HttpResponse(_("Forum deleted successfully.")) 196 return HttpResponse(_("Forum deleted successfully."))
131 197
132 -class ForumDetailView(LoginRequiredMixin, generic.DetailView): 198 +class ForumDetailView(LoginRequiredMixin, LogMixin, generic.DetailView):
  199 + log_component = "forum"
  200 + log_action = "viewed"
  201 + log_resource = "forum"
  202 + log_context = {}
  203 +
133 login_url = reverse_lazy("core:home") 204 login_url = reverse_lazy("core:home")
134 redirect_field_name = 'next' 205 redirect_field_name = 'next'
135 206
@@ -143,6 +214,22 @@ class ForumDetailView(LoginRequiredMixin, generic.DetailView): @@ -143,6 +214,22 @@ class ForumDetailView(LoginRequiredMixin, generic.DetailView):
143 if(not has_object_permission('view_forum', self.request.user, forum)): 214 if(not has_object_permission('view_forum', self.request.user, forum)):
144 return self.handle_no_permission() 215 return self.handle_no_permission()
145 216
  217 + self.log_context['forum_id'] = forum.id
  218 + self.log_context['forum_name'] = forum.name
  219 + self.log_context['topic_id'] = forum.topic.id
  220 + self.log_context['topic_name'] = forum.topic.name
  221 + self.log_context['topic_slug'] = forum.topic.slug
  222 + self.log_context['subject_id'] = forum.topic.subject.id
  223 + self.log_context['subject_name'] = forum.topic.subject.name
  224 + self.log_context['subject_slug'] = forum.topic.subject.slug
  225 + self.log_context['course_id'] = forum.topic.subject.course.id
  226 + self.log_context['course_name'] = forum.topic.subject.course.name
  227 + self.log_context['course_slug'] = forum.topic.subject.course.slug
  228 + self.log_context['course_category_id'] = forum.topic.subject.course.category.id
  229 + self.log_context['course_category_name'] = forum.topic.subject.course.category.name
  230 +
  231 + super(ForumDetailView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  232 +
146 return super(ForumDetailView, self).dispatch(*args, **kwargs) 233 return super(ForumDetailView, self).dispatch(*args, **kwargs)
147 234
148 def get_context_data(self, **kwargs): 235 def get_context_data(self, **kwargs):