def get_or_create_request(): ''' Returns a request instance that is global for this request If this function is called outside of a web request then the user_name is marked as system ''' thread_ident = thread.get_ident() request, rq = STATE.get(thread_ident, (None, None)) if not rq: rq = Request() if request: rq.request_path = request.path if request.user.is_anonymous(): rq.user_name = u'(Anonymous)' else: rq.user_pk = request.user.pk rq.user_name = unicode(request.user)[:255] else: rq.user_name = u'(System)' rq.save() STATE[thread_ident] = (request, rq) return rq