|
| 1 | +import logging |
| 2 | + |
1 | 3 | from distutils.version import StrictVersion |
2 | 4 | from os import getenv |
3 | 5 | from pkg_resources import get_distribution |
|
8 | 10 | try: |
9 | 11 |
|
10 | 12 | # Only patch >= 1.0 |
11 | | - version = StrictVersion(get_distribution("flask").version) |
12 | | - assert version >= StrictVersion("1.0") |
| 13 | + _version = StrictVersion(get_distribution("flask").version) |
| 14 | + assert _version >= StrictVersion("1.0") |
13 | 15 |
|
14 | 16 | # Reformat logger's exceptions |
15 | 17 | # http://flask.pocoo.org/docs/1.0/logging/ |
16 | 18 | # https://docs.python.org/3/library/logging.html#logging.Formatter.formatException |
17 | 19 | try: |
18 | 20 | import flask.logging |
19 | 21 | flask.logging.default_handler.formatter.formatException = lambda exc_info: formatException(*exc_info) |
20 | | - except: |
| 22 | + except Exception: |
| 23 | + pass |
| 24 | + |
| 25 | + # Enable logging when Flask is in use, |
| 26 | + # monkey-patching own SQL module, which shouldn't need to know about Flask |
| 27 | + logging.getLogger("cs50").disabled = True |
| 28 | + try: |
| 29 | + import flask |
| 30 | + from .sql import SQL |
| 31 | + except ImportError: |
21 | 32 | pass |
| 33 | + else: |
| 34 | + _before = SQL.execute |
| 35 | + def _after(*args, **kwargs): |
| 36 | + disabled = logging.getLogger("cs50").disabled |
| 37 | + if flask.current_app: |
| 38 | + logging.getLogger("cs50").disabled = False |
| 39 | + try: |
| 40 | + return _before(*args, **kwargs) |
| 41 | + finally: |
| 42 | + logging.getLogger("cs50").disabled = disabled |
| 43 | + SQL.execute = _after |
22 | 44 |
|
23 | 45 | # Add support for Cloud9 proxy so that flask.redirect doesn't redirect from HTTPS to HTTP |
24 | 46 | # http://stackoverflow.com/a/23504684/5156190 |
25 | 47 | if getenv("C9_HOSTNAME") and not getenv("IDE_OFFLINE"): |
26 | 48 | try: |
27 | 49 | import flask |
28 | 50 | from werkzeug.contrib.fixers import ProxyFix |
29 | | - before = flask.Flask.__init__ |
30 | | - def after(self, *args, **kwargs): |
31 | | - before(self, *args, **kwargs) |
| 51 | + _before = flask.Flask.__init__ |
| 52 | + def _after(*args, **kwargs): |
| 53 | + _before(*args, **kwargs) |
32 | 54 | self.wsgi_app = ProxyFix(self.wsgi_app) |
33 | | - flask.Flask.__init__ = after |
| 55 | + flask.Flask.__init__ = _after |
34 | 56 | except: |
35 | 57 | pass |
36 | 58 |
|
37 | | -except: |
| 59 | +except Exception: |
38 | 60 | pass |
0 commit comments