@@ -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