@@ -108,17 +108,15 @@ def assertion(statement, state=True):
108108 """
109109 This acts like an assertion. It uses the django logger in order to send
110110 the failed assertion and a backtrace as for an internal server error.
111-
112111 """
113- stack = inspect .stack ()[1 :]
114- frame = stack [0 ][0 ]
112+ frame = inspect .currentframe ().f_back
115113 value = eval (statement , frame .f_globals , frame .f_locals )
116114 if bool (value ) != bool (state ):
117115 if (settings .DEBUG is True ) or (settings .SERVER_MODE == 'test' ) :
118116 raise AssertionError ("Assertion failed: '%s': %s != %s." % (statement , repr (value ), state ))
119117 else :
120118 # build a simulated traceback object
121- tb = build_traceback (stack )
119+ tb = build_traceback (inspect . stack ()[ 1 :] )
122120 # provide extra info if available
123121 extra = {}
124122 for key in [ 'request' , 'status_code' , ]:
@@ -128,18 +126,16 @@ def assertion(statement, state=True):
128126
129127def unreachable (date = "(unknown)" ):
130128 "Raises an assertion or sends traceback to admins if executed."
131- stack = inspect .stack ()[1 :]
132- frame = stack [0 ][0 ]
129+ frame = inspect .currentframe ().f_back
133130 if settings .DEBUG is True or settings .SERVER_MODE == 'test' :
134131 raise AssertionError ("Arrived at code in %s() which was marked unreachable on %s." % (frame .f_code .co_name , date ))
135132 else :
136133 # build a simulated traceback object
137- tb = build_traceback (stack )
134+ tb = build_traceback (inspect . stack ()[ 1 :] )
138135 # provide extra info if available
139136 extra = {}
140137 for key in [ 'request' , 'status_code' , ]:
141138 if key in frame .f_locals :
142139 extra [key ] = frame .f_locals [key ]
143140 logger .error ("Arrived at code in %s() which was marked unreachable on %s." % (frame .f_code .co_name , date ),
144141 exc_info = (AssertionError , frame .f_code .co_name , tb ), extra = extra )
145-
0 commit comments