Commit 547930acf00027fb71bbf32931ee928c29266124
1 parent
56d2b3c2
Exists in
master
and in
3 other branches
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) |