Commit 3d6652988068b8f765a794ba24b8d44ec3f5e611

Authored by Zambom
1 parent 027410af

Adding user logout log

log/decorators.py
... ... @@ -10,17 +10,25 @@ def log_decorator(log_component = '', log_action = '', log_resource = ''):
10 10 def _log_decorator(view_function):
11 11  
12 12 def _decorator(request, *args, **kwargs):
  13 + user = None
  14 +
  15 + if request.user.is_authenticated:
  16 + user = request.user
13 17  
14 18 response = view_function(request, *args, **kwargs)
15 19  
16   - if request.user.is_authenticated:
17   -
  20 + log_context = {}
  21 +
  22 + if hasattr(request, 'log_context'):
  23 + log_context = request.log_context
  24 +
  25 + if user:
18 26 log = Log()
19   - log.user = str(request.user)
20   - log.user_id = request.user.id
21   - log.user_email = request.user.email
  27 + log.user = str(user)
  28 + log.user_id = user.id
  29 + log.user_email = user.email
22 30 log.component = log_component
23   - log.context = request.log_context
  31 + log.context = log_context
24 32 log.action = log_action
25 33 log.resource = log_resource
26 34  
... ... @@ -55,9 +63,15 @@ def log_decorator_ajax(log_component = '', log_action = '', log_resource = ''):
55 63  
56 64 response = view_function(request, *args, **kwargs)
57 65  
  66 + log_context = {}
  67 +
  68 + if hasattr(request, 'log_context'):
  69 + log_context = request.log_context
  70 +
58 71 log = Log.objects.latest('id')
59   - log.context = request.log_context
  72 + log.context = log_context
60 73 log.save()
  74 +
61 75 elif view_action == 'close':
62 76 if request.user.is_authenticated:
63 77 log = get_object_or_404(Log, id = request.GET.get('log_id'))
... ...
users/urls.py
... ... @@ -5,7 +5,7 @@ from . import views
5 5  
6 6 urlpatterns = [
7 7 url(r'^login/$', views.login, name='login'),
8   - url(r'^logout/$', auth_views.logout, {'next_page': 'users:login'}, name='logout'),
  8 + url(r'^logout/$', views.logout, {'next_page': 'users:login'}, name='logout'),
9 9 url(r'^signup/$', views.RegisterUser.as_view(), name = 'signup'),
10 10 url(r'^forgot_password/$', views.ForgotPassword.as_view(), name = 'forgot_pass'),
11 11 url(r'^reset_password_confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', views.PasswordResetConfirmView.as_view(), name = 'reset_password_confirm'),
... ...
users/views.py
1 1 from django.shortcuts import get_object_or_404, redirect, render
2 2 from django.views import generic
3 3 from django.contrib import messages
4   -from django.contrib.auth import authenticate, login as login_user
  4 +from django.contrib.auth import authenticate, login as login_user, logout as logout_user
5 5 from django.contrib.auth.mixins import LoginRequiredMixin
6 6 from django.core.urlresolvers import reverse, reverse_lazy
7 7 from django.utils.translation import ugettext_lazy as _
... ... @@ -498,8 +498,6 @@ def login(request):
498 498  
499 499 next_url = request.GET.get('next', None)
500 500  
501   - request.log_context = {}
502   -
503 501 if next_url:
504 502 return redirect(next_url)
505 503  
... ... @@ -514,6 +512,14 @@ def login(request):
514 512  
515 513 return render(request, "users/login.html", context)
516 514  
  515 +@log_decorator('user', 'logout', 'system')
  516 +def logout(request, next_page = None):
  517 + logout_user(request)
  518 +
  519 + if next_page:
  520 + return redirect(next_page)
  521 +
  522 + return redirect(reverse('users:login'))
517 523  
518 524 # API VIEWS
519 525 class UserViewSet(viewsets.ModelViewSet):
... ...