Skip to content

Commit 8ebe8e5

Browse files
committed
Check for the existence of request.user attribute
If the request object passed in by Django is of type WSGIRequest, we don't have a "user" attribute. So check before accessing it. Fixes #3.
1 parent e8bc335 commit 8ebe8e5

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

logstash_async/formatter.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,13 @@ def _get_extra_fields(self, record):
228228
# For details see https://code.djangoproject.com/ticket/27234
229229
if hasattr(record, 'request') and hasattr(record.request, 'META'):
230230
request = record.request
231+
231232
extra_fields['django_version'] = self._django_version
232233
extra_fields['req_useragent'] = request.META.get('HTTP_USER_AGENT', '<none>')
233234
extra_fields['req_remote_address'] = request.META.get('REMOTE_ADDR', '<none>')
234235
extra_fields['req_host'] = request.get_host()
235236
extra_fields['req_uri'] = request.get_raw_uri()
236-
extra_fields['req_user'] = unicode(request.user) if request.user else ''
237+
extra_fields['req_user'] = self._get_attribute_with_default(request, 'user', '')
237238
extra_fields['req_method'] = request.META.get('REQUEST_METHOD', '')
238239
extra_fields['req_referer'] = request.META.get('HTTP_REFERER', '')
239240

@@ -258,3 +259,16 @@ def _get_extra_fields(self, record):
258259
extra_fields['tmpl_during'] = template_info['during']
259260

260261
return extra_fields
262+
263+
# ----------------------------------------------------------------------
264+
def _get_attribute_with_default(self, obj, attr_name, default=None):
265+
"""
266+
Query an attribute from an object but check before if it exists or return
267+
a default value if it is missing
268+
"""
269+
if hasattr(obj, attr_name):
270+
value = getattr(obj, attr_name)
271+
if value is not None:
272+
return value
273+
# fallback
274+
return default

0 commit comments

Comments
 (0)