forked from nigma/django-request-id
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdemo.py
123 lines (97 loc) · 3.28 KB
/
demo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/bin/env python
# -*- coding: utf-8 -*-
"""
Demo script. Run:
python.exe demo.py
"""
from __future__ import absolute_import, division, print_function, unicode_literals
import logging
import os
import django
from django.conf import settings
from django.conf.urls import url
from django.core.wsgi import get_wsgi_application
basename = os.path.splitext(os.path.basename(__file__))[0]
middleware_settings_name = 'MIDDLEWARE' if django.VERSION[:2] >= (1, 10) else 'MIDDLEWARE_CLASSES'
def rel(*path):
return os.path.abspath(
os.path.join(os.path.dirname(__file__), *path)
).replace('\\', '/')
if not settings.configured:
settings.configure(
DEBUG=True,
TIMEZONE='UTC',
INSTALLED_APPS=['request_id'],
ROOT_URLCONF=basename,
WSGI_APPLICATION='{}.application'.format(basename),
TEMPLATES=[
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [rel('tests', 'templates')],
'OPTIONS': {
'context_processors': [
'django.template.context_processors.request'
],
},
},
],
LOGGING={
'version': 1,
'disable_existing_loggers': False,
'filters': {
'request_id': {
'()': 'request_id.logging.RequestIdFilter'
}
},
'formatters': {
'console': {
'format': '%(asctime)s - %(levelname)-5s [%(name)s] request_id=%(request_id)s %(message)s',
'datefmt': '%H:%M:%S'
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['request_id'],
'class': 'logging.StreamHandler',
'formatter': 'console'
}
},
'loggers': {
'': {
'level': 'DEBUG',
'handlers': ['console']
}
}
},
**{
middleware_settings_name: ['request_id.middleware.RequestIdMiddleware']
}
)
# App
from django.views.generic.base import TemplateView
from request_id import get_current_request_id
logger = logging.getLogger('view')
class HelloView(TemplateView):
template_name = 'base.html'
def get(self, request, *args, **kwargs):
logger.info('handling request')
return super(HelloView, self).get(request, *args, **kwargs)
def get_context_data(self, **kwargs):
logger.info('preparing context data')
return super(HelloView, self).get_context_data(
current_request_val=get_current_request_id(),
**kwargs
)
def render_to_response(self, context, **response_kwargs):
logger.info('rendering template')
return super(HelloView, self).render_to_response(context, **response_kwargs)
urlpatterns = [
url(r'^$', HelloView.as_view())
]
# WSGI
from request_id.wsgi import AddRequestIdHeaderMiddleware
application = AddRequestIdHeaderMiddleware(get_wsgi_application())
if __name__ == '__main__':
from django.core.management import call_command
call_command('runserver', '8000')