From 04d0fea370c7f1213fa9d06111a4632e783fe527 Mon Sep 17 00:00:00 2001 From: "David J. Malan" Date: Sun, 16 Dec 2018 00:33:15 -0500 Subject: [PATCH 1/4] adds ProxyFix for Cloud9 --- setup.py | 2 +- src/cs50/flask.py | 21 +++++++++++++++++++-- tests/redirect/application.py | 12 ++++++++++++ tests/redirect/templates/foo.html | 1 + 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 tests/redirect/application.py create mode 100644 tests/redirect/templates/foo.html diff --git a/setup.py b/setup.py index 7b729ef..45c44c1 100644 --- a/setup.py +++ b/setup.py @@ -16,5 +16,5 @@ package_dir={"": "src"}, packages=["cs50"], url="https://github.com/cs50/python-cs50", - version="2.4.5" + version="2.5.0" ) diff --git a/src/cs50/flask.py b/src/cs50/flask.py index ad79283..314c0fd 100644 --- a/src/cs50/flask.py +++ b/src/cs50/flask.py @@ -1,4 +1,5 @@ from distutils.version import StrictVersion +from os import getenv from pkg_resources import get_distribution from .cs50 import formatException @@ -9,12 +10,28 @@ # Only patch >= 1.0 version = StrictVersion(get_distribution("flask").version) assert version >= StrictVersion("1.0") - import flask.logging # Reformat logger's exceptions # http://flask.pocoo.org/docs/1.0/logging/ # https://docs.python.org/3/library/logging.html#logging.Formatter.formatException - flask.logging.default_handler.formatter.formatException = lambda exc_info: formatException(*exc_info) + try: + import flask.logging + flask.logging.default_handler.formatter.formatException = lambda exc_info: formatException(*exc_info) + except: + pass + + # Add support for Cloud9 proxy so that flask.redirect doesn't redirect from HTTPS to HTTP + if getenv("C9_HOSTNAME") and not getenv("IDE_OFFLINE"): + try: + import flask + from werkzeug.contrib.fixers import ProxyFix + before = flask.Flask.__init__ + def after(self, *args, **kwargs): + before(self, *args, **kwargs) + self.wsgi_app = ProxyFix(self.wsgi_app) + flask.Flask.__init__ = after + except: + pass except: pass diff --git a/tests/redirect/application.py b/tests/redirect/application.py new file mode 100644 index 0000000..6aff187 --- /dev/null +++ b/tests/redirect/application.py @@ -0,0 +1,12 @@ +import cs50 +from flask import Flask, redirect, render_template + +app = Flask(__name__) + +@app.route("/") +def index(): + return redirect("/foo") + +@app.route("/foo") +def foo(): + return render_template("foo.html") diff --git a/tests/redirect/templates/foo.html b/tests/redirect/templates/foo.html new file mode 100644 index 0000000..257cc56 --- /dev/null +++ b/tests/redirect/templates/foo.html @@ -0,0 +1 @@ +foo From 2fc4670d35a1728b7f7aa54bffef2d491614897a Mon Sep 17 00:00:00 2001 From: "David J. Malan" Date: Sun, 16 Dec 2018 00:38:40 -0500 Subject: [PATCH 2/4] added citation --- src/cs50/flask.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cs50/flask.py b/src/cs50/flask.py index 314c0fd..c7ed023 100644 --- a/src/cs50/flask.py +++ b/src/cs50/flask.py @@ -21,6 +21,7 @@ pass # Add support for Cloud9 proxy so that flask.redirect doesn't redirect from HTTPS to HTTP + # http://stackoverflow.com/a/23504684/5156190 if getenv("C9_HOSTNAME") and not getenv("IDE_OFFLINE"): try: import flask From 7383f11787c54a80c486de84fa30996bd0c69bf1 Mon Sep 17 00:00:00 2001 From: Kareem Zidane Date: Sat, 29 Dec 2018 17:32:57 -0500 Subject: [PATCH 3/4] using C9_PROJECT instead of C9_HOSTNAME --- src/cs50/flask.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cs50/flask.py b/src/cs50/flask.py index c7ed023..ae4bfa5 100644 --- a/src/cs50/flask.py +++ b/src/cs50/flask.py @@ -22,7 +22,7 @@ # Add support for Cloud9 proxy so that flask.redirect doesn't redirect from HTTPS to HTTP # http://stackoverflow.com/a/23504684/5156190 - if getenv("C9_HOSTNAME") and not getenv("IDE_OFFLINE"): + if getenv("C9_PROJECT") == "ide50" and not getenv("IDE_OFFLINE"): try: import flask from werkzeug.contrib.fixers import ProxyFix From 6bf1c83d81b3a051bd13342efab658f76997996d Mon Sep 17 00:00:00 2001 From: Kareem Zidane Date: Sat, 29 Dec 2018 18:14:36 -0500 Subject: [PATCH 4/4] Revert "using C9_PROJECT instead of C9_HOSTNAME" This reverts commit 7383f11787c54a80c486de84fa30996bd0c69bf1. --- src/cs50/flask.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cs50/flask.py b/src/cs50/flask.py index ae4bfa5..c7ed023 100644 --- a/src/cs50/flask.py +++ b/src/cs50/flask.py @@ -22,7 +22,7 @@ # Add support for Cloud9 proxy so that flask.redirect doesn't redirect from HTTPS to HTTP # http://stackoverflow.com/a/23504684/5156190 - if getenv("C9_PROJECT") == "ide50" and not getenv("IDE_OFFLINE"): + if getenv("C9_HOSTNAME") and not getenv("IDE_OFFLINE"): try: import flask from werkzeug.contrib.fixers import ProxyFix