Commit 547930acf00027fb71bbf32931ee928c29266124

Authored by Zambom
1 parent 56d2b3c2

Adding user crud log

Showing 2 changed files with 50 additions and 8 deletions   Show diff stats
categories/views.py
... ... @@ -68,8 +68,9 @@ class CreateCategory(views.SuperuserRequiredMixin, LoginRequiredMixin, HasRoleMi
68 68 log_resource = 'category'
69 69 log_context = {}
70 70  
71   - allowed_rules = ['system_admin']
72   - login_url = reverse_lazy('users:login')
  71 + login_url = reverse_lazy("users:login")
  72 + redirect_field_name = 'next'
  73 +
73 74 form_class = CategoryForm
74 75 template_name = 'categories/create.html'
75 76 success_url = reverse_lazy('categories:index')
... ...
users/views.py
... ... @@ -12,6 +12,7 @@ from braces import views as braces_mixins
12 12 from security.models import Security
13 13  
14 14 from log.decorators import log_decorator
  15 +from log.mixins import LogMixin
15 16  
16 17 from .models import User
17 18 from .utils import has_dependencies
... ... @@ -86,7 +87,12 @@ class SearchView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
86 87  
87 88 return context
88 89  
89   -class CreateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequiredMixin, generic.edit.CreateView):
  90 +class CreateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequiredMixin, LogMixin, generic.edit.CreateView):
  91 + log_component = 'user'
  92 + log_action = 'create'
  93 + log_resource = 'user'
  94 + log_context = {}
  95 +
90 96 login_url = reverse_lazy("users:login")
91 97 redirect_field_name = 'next'
92 98  
... ... @@ -100,6 +106,12 @@ class CreateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
100 106  
101 107 msg = _("User %s created successfully" % self.object.get_short_name())
102 108  
  109 + self.log_context['user_id'] = self.object.id
  110 + self.log_context['user_name'] = self.object.get_short_name()
  111 + self.log_context['user_email'] = self.object.email
  112 +
  113 + super(CreateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  114 +
103 115 messages.success(self.request, msg)
104 116  
105 117 return super(CreateView, self).form_valid(form)
... ... @@ -111,7 +123,12 @@ class CreateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
111 123  
112 124 return context
113 125  
114   -class UpdateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequiredMixin, generic.UpdateView):
  126 +class UpdateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequiredMixin, LogMixin, generic.UpdateView):
  127 + log_component = 'user'
  128 + log_action = 'update'
  129 + log_resource = 'user'
  130 + log_context = {}
  131 +
115 132 login_url = reverse_lazy("users:login")
116 133 redirect_field_name = 'next'
117 134  
... ... @@ -137,6 +154,12 @@ class UpdateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
137 154  
138 155 msg = _("User %s updated successfully" % self.object.get_short_name())
139 156  
  157 + self.log_context['user_id'] = self.object.id
  158 + self.log_context['user_name'] = self.object.get_short_name()
  159 + self.log_context['user_email'] = self.object.email
  160 +
  161 + super(UpdateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  162 +
140 163 messages.success(self.request, msg)
141 164  
142 165 return super(UpdateView, self).form_valid(form)
... ... @@ -148,7 +171,12 @@ class UpdateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
148 171  
149 172 return context
150 173  
151   -class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView):
  174 +class DeleteView(braces_mixins.LoginRequiredMixin, LogMixin, generic.DeleteView):
  175 + log_component = 'user'
  176 + log_action = 'delete'
  177 + log_resource = 'user'
  178 + log_context = {}
  179 +
152 180 login_url = reverse_lazy("users:login")
153 181 redirect_field_name = 'next'
154 182  
... ... @@ -166,7 +194,6 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView):
166 194  
167 195 return super(DeleteView, self).dispatch(request, *args, **kwargs)
168 196  
169   -
170 197 def get_object(self):
171 198 email = self.kwargs.get('email', None)
172 199  
... ... @@ -182,9 +209,15 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView):
182 209 user = self.get_object()
183 210  
184 211 if email is None:
  212 + self.log_action = 'remove_account'
  213 +
185 214 success_url = reverse_lazy('users:login')
186 215 error_url = reverse_lazy('users:profile')
187 216 else:
  217 + self.log_context['user_id'] = user.id
  218 + self.log_context['user_name'] = user.get_short_name()
  219 + self.log_context['user_email'] = user.email
  220 +
188 221 success_url = reverse_lazy('users:manage')
189 222 error_url = reverse_lazy('users:manage')
190 223  
... ... @@ -192,15 +225,23 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView):
192 225 error_msg = _('Could not remove the account. The user is attach to one or more functions (administrator, coordinator, professor ou student) in the system.')
193 226  
194 227 if has_dependencies(user):
  228 + self.log_context['dependencies'] = True
  229 +
195 230 messages.error(self.request, error_msg)
196 231  
197   - return redirect(error_url)
  232 + redirect_url = redirect(error_url)
198 233 else:
  234 + self.log_context['dependencies'] = False
  235 +
199 236 user.delete()
200 237  
201 238 messages.success(self.request, success_msg)
202 239  
203   - return redirect(success_url)
  240 + redirect_url = redirect(success_url)
  241 +
  242 + super(DeleteView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  243 +
  244 + return redirect_url
204 245  
205 246 def get_context_data(self, **kwargs):
206 247 context = super(DeleteView, self).get_context_data(**kwargs)
... ...