[FIX] P3: stupid use of hasattr

In Python 2, hasattr swallows *any* exception raised during the
access. In Python 3, it only swallows AttributeError.

Accessing an attribute on an unbound threadlocal proxy raises
RuntimeError, while running test_ir_http_mimetype ``request`` is
unbound, in Python 2 ``hasattr`` would return ``False`` on an unbound
threadlocal, in Python 3 it lets ``RuntimeError`` pass through blowing
up the test.

Fix this by just checking if the threadlocal is bound by using it as a
boolean…
This commit is contained in:
Xavier Morel
2017-08-19 02:34:22 +02:00
committed by Olivier Dony
parent 25df2352f5
commit 4d6d5c8290
+1 -1
View File
@@ -323,7 +323,7 @@ class IrHttp(models.AbstractModel):
headers += [('Content-Type', mimetype), ('X-Content-Type-Options', 'nosniff')]
# cache
etag = hasattr(request, 'httprequest') and request.httprequest.headers.get('If-None-Match')
etag = bool(request) and request.httprequest.headers.get('If-None-Match')
retag = '"%s"' % hashlib.md5(last_update).hexdigest()
status = status or (304 if etag == retag else 200)
headers.append(('ETag', retag))