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,8 +68,9 @@ class CreateCategory(views.SuperuserRequiredMixin, LoginRequiredMixin, HasRoleMi
68 log_resource = 'category' 68 log_resource = 'category'
69 log_context = {} 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 form_class = CategoryForm 74 form_class = CategoryForm
74 template_name = 'categories/create.html' 75 template_name = 'categories/create.html'
75 success_url = reverse_lazy('categories:index') 76 success_url = reverse_lazy('categories:index')
users/views.py
@@ -12,6 +12,7 @@ from braces import views as braces_mixins @@ -12,6 +12,7 @@ from braces import views as braces_mixins
12 from security.models import Security 12 from security.models import Security
13 13
14 from log.decorators import log_decorator 14 from log.decorators import log_decorator
  15 +from log.mixins import LogMixin
15 16
16 from .models import User 17 from .models import User
17 from .utils import has_dependencies 18 from .utils import has_dependencies
@@ -86,7 +87,12 @@ class SearchView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir @@ -86,7 +87,12 @@ class SearchView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
86 87
87 return context 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 login_url = reverse_lazy("users:login") 96 login_url = reverse_lazy("users:login")
91 redirect_field_name = 'next' 97 redirect_field_name = 'next'
92 98
@@ -100,6 +106,12 @@ class CreateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir @@ -100,6 +106,12 @@ class CreateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
100 106
101 msg = _("User %s created successfully" % self.object.get_short_name()) 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 messages.success(self.request, msg) 115 messages.success(self.request, msg)
104 116
105 return super(CreateView, self).form_valid(form) 117 return super(CreateView, self).form_valid(form)
@@ -111,7 +123,12 @@ class CreateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir @@ -111,7 +123,12 @@ class CreateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
111 123
112 return context 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 login_url = reverse_lazy("users:login") 132 login_url = reverse_lazy("users:login")
116 redirect_field_name = 'next' 133 redirect_field_name = 'next'
117 134
@@ -137,6 +154,12 @@ class UpdateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir @@ -137,6 +154,12 @@ class UpdateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
137 154
138 msg = _("User %s updated successfully" % self.object.get_short_name()) 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 messages.success(self.request, msg) 163 messages.success(self.request, msg)
141 164
142 return super(UpdateView, self).form_valid(form) 165 return super(UpdateView, self).form_valid(form)
@@ -148,7 +171,12 @@ class UpdateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir @@ -148,7 +171,12 @@ class UpdateView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequir
148 171
149 return context 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 login_url = reverse_lazy("users:login") 180 login_url = reverse_lazy("users:login")
153 redirect_field_name = 'next' 181 redirect_field_name = 'next'
154 182
@@ -166,7 +194,6 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView): @@ -166,7 +194,6 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView):
166 194
167 return super(DeleteView, self).dispatch(request, *args, **kwargs) 195 return super(DeleteView, self).dispatch(request, *args, **kwargs)
168 196
169 -  
170 def get_object(self): 197 def get_object(self):
171 email = self.kwargs.get('email', None) 198 email = self.kwargs.get('email', None)
172 199
@@ -182,9 +209,15 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView): @@ -182,9 +209,15 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView):
182 user = self.get_object() 209 user = self.get_object()
183 210
184 if email is None: 211 if email is None:
  212 + self.log_action = 'remove_account'
  213 +
185 success_url = reverse_lazy('users:login') 214 success_url = reverse_lazy('users:login')
186 error_url = reverse_lazy('users:profile') 215 error_url = reverse_lazy('users:profile')
187 else: 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 success_url = reverse_lazy('users:manage') 221 success_url = reverse_lazy('users:manage')
189 error_url = reverse_lazy('users:manage') 222 error_url = reverse_lazy('users:manage')
190 223
@@ -192,15 +225,23 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView): @@ -192,15 +225,23 @@ class DeleteView(braces_mixins.LoginRequiredMixin, generic.DeleteView):
192 error_msg = _('Could not remove the account. The user is attach to one or more functions (administrator, coordinator, professor ou student) in the system.') 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 if has_dependencies(user): 227 if has_dependencies(user):
  228 + self.log_context['dependencies'] = True
  229 +
195 messages.error(self.request, error_msg) 230 messages.error(self.request, error_msg)
196 231
197 - return redirect(error_url) 232 + redirect_url = redirect(error_url)
198 else: 233 else:
  234 + self.log_context['dependencies'] = False
  235 +
199 user.delete() 236 user.delete()
200 237
201 messages.success(self.request, success_msg) 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 def get_context_data(self, **kwargs): 246 def get_context_data(self, **kwargs):
206 context = super(DeleteView, self).get_context_data(**kwargs) 247 context = super(DeleteView, self).get_context_data(**kwargs)