From 7ca39e8e2f71be611c7671a6fe3e10a0ef927f40 Mon Sep 17 00:00:00 2001 From: Zambom Date: Thu, 3 Nov 2016 22:45:57 -0300 Subject: [PATCH] Adding crud forum log functions [Issue: #243] --- forum/views.py | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 94 insertions(+), 7 deletions(-) diff --git a/forum/views.py b/forum/views.py index b989123..2688d07 100644 --- a/forum/views.py +++ b/forum/views.py @@ -18,7 +18,7 @@ from core.models import Action, Resource from .forms import ForumForm, PostForm, PostAnswerForm -from core.mixins import NotificationMixin +from core.mixins import LogMixin, NotificationMixin """ Forum Section @@ -44,7 +44,12 @@ class ForumIndex(LoginRequiredMixin, generic.ListView): return context -class CreateForumView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView, NotificationMixin): +class CreateForumView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView, LogMixin, NotificationMixin): + log_component = "forum" + log_action = "create" + log_resource = "forum" + log_context = {} + allowed_roles = ['professor', 'system_admin'] login_url = reverse_lazy("core:home") @@ -67,14 +72,36 @@ class CreateForumView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView, super(CreateForumView, self).createNotification("Forum "+ self.object.name + " was created", resource_name=self.object.name, resource_link= reverse('course:forum:view', args=[self.object.slug]), actor=self.request.user, users = self.object.topic.subject.students.all() ) + + self.log_context['forum_id'] = self.object.id + self.log_context['forum_name'] = self.object.name + self.log_context['topic_id'] = self.object.topic.id + self.log_context['topic_name'] = self.object.topic.name + self.log_context['topic_slug'] = self.object.topic.slug + self.log_context['subject_id'] = self.object.topic.subject.id + self.log_context['subject_name'] = self.object.topic.subject.name + self.log_context['subject_slug'] = self.object.topic.subject.slug + self.log_context['course_id'] = self.object.topic.subject.course.id + self.log_context['course_name'] = self.object.topic.subject.course.name + self.log_context['course_slug'] = self.object.topic.subject.course.slug + self.log_context['course_category_id'] = self.object.topic.subject.course.category.id + self.log_context['course_category_name'] = self.object.topic.subject.course.category.name + + super(CreateForumView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) + return self.success_url def render_forum(request, forum): last_forum = get_object_or_404(Forum, id = forum) - return JsonResponse({'url': str(reverse_lazy('course:forum:view', args = (), kwargs = {'slug': last_forum.slug})), 'forum_id': str(forum), 'name': str(last_forum.name)}) + 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!')}) + +class UpdateForumView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView, LogMixin): + log_component = "forum" + log_action = "update" + log_resource = "forum" + log_context = {} -class UpdateForumView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): allowed_roles = ['professor', 'system_admin'] login_url = reverse_lazy("core:home") @@ -97,6 +124,22 @@ class UpdateForumView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView): def get_success_url(self): self.success_url = reverse('course:forum:render_edit_forum', args = (self.object.id, )) + + self.log_context['forum_id'] = self.object.id + self.log_context['forum_name'] = self.object.name + self.log_context['topic_id'] = self.object.topic.id + self.log_context['topic_name'] = self.object.topic.name + self.log_context['topic_slug'] = self.object.topic.slug + self.log_context['subject_id'] = self.object.topic.subject.id + self.log_context['subject_name'] = self.object.topic.subject.name + self.log_context['subject_slug'] = self.object.topic.subject.slug + self.log_context['course_id'] = self.object.topic.subject.course.id + self.log_context['course_name'] = self.object.topic.subject.course.name + self.log_context['course_slug'] = self.object.topic.subject.course.slug + self.log_context['course_category_id'] = self.object.topic.subject.course.category.id + self.log_context['course_category_name'] = self.object.topic.subject.course.category.name + + super(UpdateForumView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) return self.success_url @@ -108,7 +151,12 @@ def render_edit_forum(request, forum): return render(request, 'forum/render_forum.html', context) -class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): +class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView, LogMixin): + log_component = "forum" + log_action = "delete" + log_resource = "forum" + log_context = {} + allowed_roles = ['professor', 'system_admin'] login_url = reverse_lazy("core:home") @@ -116,7 +164,6 @@ class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): model = Forum pk_url_kwarg = 'pk' - success_url = reverse_lazy('course:forum:deleted_forum') def dispatch(self, *args, **kwargs): forum = get_object_or_404(Forum, id = self.kwargs.get('pk')) @@ -126,10 +173,34 @@ class ForumDeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): return super(ForumDeleteView, self).dispatch(*args, **kwargs) + def get_success_url(self): + self.log_context['forum_id'] = self.object.id + self.log_context['forum_name'] = self.object.name + self.log_context['topic_id'] = self.object.topic.id + self.log_context['topic_name'] = self.object.topic.name + self.log_context['topic_slug'] = self.object.topic.slug + self.log_context['subject_id'] = self.object.topic.subject.id + self.log_context['subject_name'] = self.object.topic.subject.name + self.log_context['subject_slug'] = self.object.topic.subject.slug + self.log_context['course_id'] = self.object.topic.subject.course.id + self.log_context['course_name'] = self.object.topic.subject.course.name + self.log_context['course_slug'] = self.object.topic.subject.course.slug + self.log_context['course_category_id'] = self.object.topic.subject.course.category.id + self.log_context['course_category_name'] = self.object.topic.subject.course.category.name + + super(ForumDeleteView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) + + return reverse_lazy('course:forum:deleted_forum') + def forum_deleted(request): return HttpResponse(_("Forum deleted successfully.")) -class ForumDetailView(LoginRequiredMixin, generic.DetailView): +class ForumDetailView(LoginRequiredMixin, LogMixin, generic.DetailView): + log_component = "forum" + log_action = "viewed" + log_resource = "forum" + log_context = {} + login_url = reverse_lazy("core:home") redirect_field_name = 'next' @@ -143,6 +214,22 @@ class ForumDetailView(LoginRequiredMixin, generic.DetailView): if(not has_object_permission('view_forum', self.request.user, forum)): return self.handle_no_permission() + self.log_context['forum_id'] = forum.id + self.log_context['forum_name'] = forum.name + self.log_context['topic_id'] = forum.topic.id + self.log_context['topic_name'] = forum.topic.name + self.log_context['topic_slug'] = forum.topic.slug + self.log_context['subject_id'] = forum.topic.subject.id + self.log_context['subject_name'] = forum.topic.subject.name + self.log_context['subject_slug'] = forum.topic.subject.slug + self.log_context['course_id'] = forum.topic.subject.course.id + self.log_context['course_name'] = forum.topic.subject.course.name + self.log_context['course_slug'] = forum.topic.subject.course.slug + self.log_context['course_category_id'] = forum.topic.subject.course.category.id + self.log_context['course_category_name'] = forum.topic.subject.course.category.name + + super(ForumDetailView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) + return super(ForumDetailView, self).dispatch(*args, **kwargs) def get_context_data(self, **kwargs): -- libgit2 0.21.2