@@ -88,7 +88,7 @@ class Traceback():
8888 break
8989 return tb
9090
91- def assertion (statement ):
91+ def assertion (statement , state = True ):
9292 """
9393 This acts like an assertion. It uses the django logger in order to send
9494 the failed assertion and a backtrace as for an internal server error.
@@ -97,9 +97,10 @@ def assertion(statement):
9797 stack = inspect .stack ()[1 :]
9898 frame = stack [0 ][0 ]
9999 value = eval (statement , frame .f_globals , frame .f_locals )
100- if not value :
101- if settings .DEBUG is True or settings .SERVER_MODE == 'test' :
102- raise AssertionError ("Assertion '%s' failed." % (statement ,))
100+ if bool (value ) != bool (state ):
101+ settings .DEBUG = False
102+ if settings .DEBUG is True or settings .SERVER_MODE == 'test' :
103+ raise AssertionError ("Assertion failed: '%s': %s != %s." % (statement , repr (value ), state ))
103104 else :
104105 # build a simulated traceback object
105106 tb = build_traceback (stack )
@@ -108,7 +109,7 @@ def assertion(statement):
108109 for key in [ 'request' , 'status_code' , ]:
109110 if key in frame .f_locals :
110111 extra [key ] = frame .f_locals [key ]
111- logger .error ("Assertion '%s' failed. " , statement , exc_info = (AssertionError , statement , tb ), extra = extra )
112+ logger .error ("Assertion failed: '%s': %s != %s " , statement , repr ( value ), state , exc_info = (AssertionError , statement , tb ), extra = extra )
112113
113114def unreachable (date = "(unknown)" ):
114115 "Raises an assertion or sends traceback to admins if executed."
0 commit comments