From 672a6434877ed573ffb684641caef149731b68dd Mon Sep 17 00:00:00 2001
From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de>
Date: Fri, 11 May 2018 15:03:22 +0200
Subject: [PATCH] Update requirements to Flask 1.0

---
 .flaskenv        |  2 ++
 requirements.txt | 51 +++++++++++++++++++++++++++---------------------
 server.py        | 27 +++++++++----------------
 3 files changed, 40 insertions(+), 40 deletions(-)
 create mode 100644 .flaskenv

diff --git a/.flaskenv b/.flaskenv
new file mode 100644
index 0000000..557b844
--- /dev/null
+++ b/.flaskenv
@@ -0,0 +1,2 @@
+FLASK_APP=server.py:app
+FLASK_ENV=development
diff --git a/requirements.txt b/requirements.txt
index 4fcba0c..c2b2412 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,65 +1,72 @@
-alembic==0.9.8
+alembic==0.9.9
 amqp==2.2.2
 appdirs==1.4.3
 APScheduler==3.5.1
 argh==0.26.2
+bandit==1.4.0
 billiard==3.5.0.3
 blessings==1.6.1
 blinker==1.4
 bpython==0.17.1
 caldav==0.5.0
 celery==4.1.0
-certifi==2018.1.18
+certifi==2018.4.16
 chardet==3.0.4
 click==6.7
+colorama==0.3.9
 coverage==4.5.1
 curtsies==0.3.0
 enum-compat==0.0.2
-eventlet==0.22.1
+eventlet==0.23.0
 feedgen==0.6.1
-flake8==3.5.0
-Flask==0.12.2
+Flask==1.0.2
 Flask-Migrate==2.1.1
-Flask-Script==2.0.6
 Flask-SQLAlchemy==2.3.2
 Flask-WTF==0.14.2
 fuzzywuzzy==0.16.0
+gitdb2==2.0.3
+GitPython==2.1.9
 greenlet==0.4.13
 icalendar==4.0.1
 idna==2.6
 itsdangerous==0.24
 Jinja2==2.10
 kombu==4.1.0
-ldap3==2.4.1
-lxml==4.1.1
+ldap3==2.5
+lxml==4.2.1
 Mako==1.0.7
+mando==0.6.4
 MarkupSafe==1.0
 mccabe==0.6.1
 nose==1.3.7
-packaging==16.8
+packaging==17.1
 pathtools==0.1.2
-psycopg2==2.7.4
+pbr==4.0.2
+psycopg2-binary==2.7.4
 pyasn1==0.4.2
-pycodestyle==2.3.1
-pyflakes==1.6.0
+pyasn1-modules==0.2.1
+pycodestyle==2.4.0
 Pygments==2.2.0
-pyldap==2.4.45
+pyldap==3.0.0.post1
 pyparsing==2.2.0
-python-dateutil==2.7.0
+python-dateutil==2.7.3
+python-dotenv==0.8.2
 python-editor==1.0.3
-python-engineio==2.0.2
+python-engineio==2.1.0
+python-ldap==3.0.0
 python-Levenshtein==0.12.0
-python-pam==1.8.2
-python-socketio==1.8.4
-pytz==2018.3
+python-pam==1.8.3
+pytz==2018.4
 PyYAML==3.12
-raven==6.6.0
+raven==6.7.0
 redis==2.10.6
-regex==2018.2.8
+regex==2018.2.21
 requests==2.18.4
 six==1.11.0
-SQLAlchemy==1.2.3
-SQLAlchemy-Utils==0.33.2
+smmap2==2.0.3
+SQLAlchemy==1.2.7
+SQLAlchemy-Utils==0.33.3
+stevedore==1.28.0
 typing==3.6.4
 tzlocal==1.5.1
 urllib3==1.22
diff --git a/server.py b/server.py
index 3fc7b04..4c2b18c 100755
--- a/server.py
+++ b/server.py
@@ -5,9 +5,9 @@ locale.setlocale(locale.LC_TIME, "de_DE.utf8")
 from flask import (
     Flask, request, session, flash, redirect,
     url_for, abort, render_template, Response, Markup)
+import click
 from werkzeug.utils import secure_filename
-from flask_script import Manager, prompt
-from flask_migrate import Migrate, MigrateCommand
+from flask_migrate import Migrate
 from celery import Celery
 from sqlalchemy import or_
 from apscheduler.schedulers.background import BackgroundScheduler
@@ -62,8 +62,6 @@ app = Flask(__name__)
 app.config.from_object(config)
 db.init_app(app)
 migrate = Migrate(app, db)
-manager = Manager(app)
-manager.add_command("db", MigrateCommand)
 
 try:
     from raven.contrib.flask import Sentry
@@ -137,7 +135,7 @@ app.jinja_env.globals.update(now=datetime.now)
 app.jinja_env.globals["git_revision"] = get_git_revision()
 
 
-@manager.command
+@app.cli.command()
 def import_legacy():
     """Import the old todos and protocols from an sql dump"""
     filename = prompt("SQL-file")
@@ -148,7 +146,7 @@ def import_legacy():
         import_old_todomails(content)
 
 
-@manager.command
+@app.cli.command()
 def recompile_all():
     for protocol in sorted(Protocol.query.all(), key=lambda p: p.date):
         if protocol.is_done():
@@ -156,7 +154,7 @@ def recompile_all():
             tasks.parse_protocol(protocol)
 
 
-@manager.command
+@app.cli.command()
 def merge_duplicate_todos():
     todo_by_id = {}
     todos = Todo.query.all()
@@ -179,25 +177,20 @@ def merge_duplicate_todos():
             todo_by_id[todo_id] = todo
 
 
-@manager.command
+@app.cli.command()
 def check_config():
     #  TODO: check how to set return codes
     import configproxy
     return configproxy.check_config()
 
 
-@manager.command
+@app.cli.command()
+@click.argument("filename")
 def create_example_config(filename):
     import configproxy
     return configproxy.write_example_config(filename=filename)
 
 
-@manager.command
-def runserver():
-    app.run()
-    make_scheduler()
-
-
 def send_file(file_like, cache_timeout, as_attachment, attachment_filename):
     """
     Replaces flask.send_file since that uses an uwsgi function that is buggy.
@@ -1858,6 +1851,4 @@ def check_and_send_reminders():
                     protocol, -day_difference,
                     config.MAX_PAST_INDEX_DAYS_BEFORE_REMINDER)
 
-
-if __name__ == "__main__":
-    manager.run()
+make_scheduler()
-- 
GitLab