16 |
16 |
|
17 |
17 |
import logging
|
18 |
18 |
|
|
19 |
from django.conf import settings
|
|
20 |
from django.db import connection
|
|
21 |
|
|
22 |
from hobo.middleware.utils import StoreRequestMiddleware
|
|
23 |
|
19 |
24 |
|
20 |
25 |
class SettingsLogLevel(int):
|
21 |
26 |
def __new__(cls, default_log_level, debug_setting='DEBUG'):
|
... | ... | |
60 |
65 |
|
61 |
66 |
Inspired by django-log-request-id
|
62 |
67 |
'''
|
63 |
|
if (hasattr(record, 'user')
|
64 |
|
and hasattr(record.user, 'is_authenticated')
|
65 |
|
and record.user.is_authenticated()):
|
66 |
|
user = record.user
|
67 |
|
del record.user
|
68 |
|
else:
|
69 |
|
user = None
|
70 |
|
|
71 |
|
from hobo.middleware.utils import StoreRequestMiddleware
|
72 |
|
from django.conf import settings
|
73 |
|
from django.db import connection
|
74 |
|
record.tenant = self.DEFAULT_TENANT
|
|
68 |
|
|
69 |
# lookup request from record then StoreRequestMiddleware
|
|
70 |
if not hasattr(record, 'request'):
|
|
71 |
record.request = StoreRequestMiddleware.get_request()
|
|
72 |
request = record.request
|
|
73 |
|
|
74 |
# lookup user from record then from request
|
|
75 |
if not hasattr(record, 'user'):
|
|
76 |
if (hasattr(request, 'user')
|
|
77 |
and hasattr(request.user, 'is_authenticated')
|
|
78 |
and request.user.is_authenticated()):
|
|
79 |
record.user = request.user
|
|
80 |
else:
|
|
81 |
record.user = None
|
|
82 |
user = record.user
|
|
83 |
|
|
84 |
# lookup tenant
|
|
85 |
tenant = getattr(connection, 'tenant', None)
|
|
86 |
record.tenant = getattr(tenant, 'domain_url', self.DEFAULT_TENANT)
|
|
87 |
|
|
88 |
record.application = getattr(settings, 'PROJECT_NAME', self.DEFAULT_APPLICATION)
|
|
89 |
|
|
90 |
# populate request attributes
|
75 |
91 |
record.ip = self.DEFAULT_IP
|
76 |
92 |
record.path = self.DEFAULT_PATH
|
77 |
|
record.application = getattr(settings, 'PROJECT_NAME', self.DEFAULT_APPLICATION)
|
78 |
93 |
record.request_id = self.DEFAULT_REQUEST_ID
|
79 |
|
record.user_name = self.DEFAULT_USER_NAME
|
80 |
|
record.user_email = self.DEFAULT_USER_EMAIL
|
81 |
|
record.user_display_name = self.DEFAULT_USER_DISPLAY_NAME
|
82 |
|
record.user_uuid = self.DEFAULT_USER_UUID
|
83 |
|
record.user = self.DEFAULT_USER
|
84 |
|
|
85 |
|
if getattr(getattr(connection, 'tenant', None), 'domain_url', None):
|
86 |
|
record.tenant = connection.tenant.domain_url
|
87 |
|
request = StoreRequestMiddleware.get_request()
|
88 |
|
|
89 |
94 |
if request is not None:
|
90 |
|
if not hasattr(record, 'request'):
|
91 |
|
record.request = request
|
92 |
95 |
record.ip = request.META.get('REMOTE_ADDR', self.DEFAULT_IP)
|
93 |
96 |
record.path = request.get_full_path()
|
94 |
97 |
record.request_id = 'r:' + hex(id(request))[2:].upper()
|
95 |
|
# if caller already passed an user, it means it knows better
|
96 |
|
if user is None and hasattr(request, 'user') and request.user.is_authenticated():
|
97 |
|
user = request.user
|
98 |
98 |
|
99 |
|
if user:
|
|
99 |
# populate user attributes
|
|
100 |
record.user_name = self.DEFAULT_USER_NAME
|
|
101 |
record.user_email = self.DEFAULT_USER_EMAIL
|
|
102 |
record.user_display_name = self.DEFAULT_USER_DISPLAY_NAME
|
|
103 |
record.user_uuid = self.DEFAULT_USER_UUID
|
|
104 |
record.user = self.DEFAULT_USER
|
|
105 |
if user is not None:
|
|
106 |
if hasattr(user, 'saml_identifiers'):
|
|
107 |
saml_identifier = user.saml_identifiers.first()
|
|
108 |
if saml_identifier:
|
|
109 |
record.user_uuid = saml_identifier.name_id
|
|
110 |
record.user = record.user_uuid[:6]
|
|
111 |
if hasattr(user, 'get_full_name') and user.get_full_name():
|
|
112 |
record.user = record.user_display_name = user.get_full_name()
|
100 |
113 |
if getattr(user, 'email', None):
|
101 |
|
record.user_email = user.email
|
102 |
|
record.user = user.email
|
|
114 |
record.user = record.user_email = user.email
|
103 |
115 |
if getattr(user, 'username', None):
|
104 |
|
record.user_name = user.username
|
105 |
|
record.user = user.username
|
106 |
|
if hasattr(user, 'get_full_name') and user.get_full_name():
|
107 |
|
record.user_display_name = user.get_full_name()
|
108 |
|
if hasattr(user, 'saml_identifiers'):
|
109 |
|
saml_identifiers = user.saml_identifiers.all()
|
110 |
|
if saml_identifiers:
|
111 |
|
record.user_uuid = saml_identifiers[0].name_id
|
112 |
|
if record.user == self.DEFAULT_USER:
|
113 |
|
record.user = record.user_uuid[:7]
|
|
116 |
record.user = record.user_name = user.username
|
114 |
117 |
return True
|
115 |
118 |
|
116 |
119 |
|
117 |
|
-
|