1111from django .http import RawPostDataException
1212
1313from error_tracker .libs .mixins import ContextBuilderMixin , NotificationMixin , ViewPermissionMixin
14+ from error_tracker .libs .utils import get_context_dict
1415from django .core .mail import send_mail
1516
1617
17- # noinspection PyMethodMayBeStatic
1818class DefaultDjangoContextBuilder (ContextBuilderMixin ):
1919 """
2020 Default request builder, this records, form data, header and URL parameters and mask them if necessary
2121 """
2222
23- def _get_form_data (self , request ):
23+ @staticmethod
24+ def _get_form_data (request ):
2425 form = {}
26+ if request is None :
27+ return form
2528 post = request .POST
2629 if post is None or len (post ) == 0 :
2730 body = None
@@ -46,37 +49,28 @@ def _get_form_data(self, request):
4649 form = post .dict ()
4750 return form
4851
49- def _get_headers (self , request ):
50- try :
51- headers = request .headers .dict ()
52- except AttributeError :
53- regex = re .compile ('^HTTP_' )
54- headers = dict ((regex .sub ('' , header ), value ) for (header , value )
55- in request .META .items () if header .startswith ('HTTP_' ))
56- return headers
52+ @staticmethod
53+ def _get_headers (request ):
54+ if request is not None :
55+ try :
56+ headers = request .headers .dict ()
57+ except AttributeError :
58+ regex = re .compile ('^HTTP_' )
59+ headers = dict ((regex .sub ('' , header ), value ) for (header , value )
60+ in request .META .items () if header .startswith ('HTTP_' ))
61+ return headers
5762
58- def get_context (self , request , masking = None , additional_context = None ):
59- request_data = dict ()
60- if additional_context is not None and len (additional_context ) != 0 :
61- request_data ['context' ] = additional_context
63+ @staticmethod
64+ def _get_args (request ):
6265 if request is not None :
63- form = self ._get_form_data (request )
64- headers = self ._get_headers (request )
65- if masking :
66- for key in form :
67- masked , value = masking (key )
68- if masked :
69- form [key ] = value
70- for key in headers :
71- masked , value = masking (key )
72- if masked :
73- headers [key ] = value
74- request_data .update ({
75- 'headers' : headers ,
76- 'args' : request .GET .dict (),
77- 'form' : form ,
78- })
79- return str (request_data )
66+ return request .GET .dict ()
67+
68+ def get_context (self , request , masking = None , additional_context = None ):
69+ return str (get_context_dict (headers = self ._get_headers (request ),
70+ form = self ._get_form_data (request ),
71+ args = self ._get_args (request ),
72+ context = additional_context ,
73+ masking = masking ))
8074
8175
8276class DjangoNotification (NotificationMixin ):
0 commit comments