From 9679ef80c85378ee74abfde85ad64f1f83a824d1 Mon Sep 17 00:00:00 2001
From: Patrick Jentsch <p.jentsch@uni-bielefeld.de>
Date: Wed, 10 Jul 2019 13:41:48 +0200
Subject: [PATCH] Add scheduler.

---
 app/__init__.py           | 11 ++++++++++-
 app/scheduler/__init__.py |  5 +++++
 app/scheduler/forms.py    |  0
 app/scheduler/views.py    | 21 +++++++++++++++++++++
 4 files changed, 36 insertions(+), 1 deletion(-)
 create mode 100644 app/scheduler/__init__.py
 create mode 100644 app/scheduler/forms.py
 create mode 100644 app/scheduler/views.py

diff --git a/app/__init__.py b/app/__init__.py
index 7080fdbc..f530b4d5 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -1,3 +1,4 @@
+from apscheduler.schedulers.background import BackgroundScheduler
 from config import config
 from flask import Flask
 from flask_login import LoginManager
@@ -6,11 +7,14 @@ from flask_sqlalchemy import SQLAlchemy
 
 
 db = SQLAlchemy()
-mail = Mail()
 
 login_manager = LoginManager()
 login_manager.login_view = 'auth.login'
 
+mail = Mail()
+
+background_scheduler = BackgroundScheduler()
+
 
 def create_app(config_name):
     app = Flask(__name__)
@@ -27,4 +31,9 @@ def create_app(config_name):
     from .main import main as main_blueprint
     app.register_blueprint(main_blueprint)
 
+    from .scheduler import scheduler as scheduler_blueprint
+    app.register_blueprint(scheduler_blueprint, url_prefix='/scheduler')
+
+    background_scheduler.start()
+
     return app
diff --git a/app/scheduler/__init__.py b/app/scheduler/__init__.py
new file mode 100644
index 00000000..447f8f5e
--- /dev/null
+++ b/app/scheduler/__init__.py
@@ -0,0 +1,5 @@
+from flask import Blueprint
+
+scheduler = Blueprint('scheduler', __name__)
+
+from . import views
diff --git a/app/scheduler/forms.py b/app/scheduler/forms.py
new file mode 100644
index 00000000..e69de29b
diff --git a/app/scheduler/views.py b/app/scheduler/views.py
new file mode 100644
index 00000000..78658953
--- /dev/null
+++ b/app/scheduler/views.py
@@ -0,0 +1,21 @@
+from flask import render_template
+from . import scheduler
+from flask_login import current_user, login_required
+from .. import background_scheduler
+import json
+
+
+@scheduler.route('/')
+@login_required
+def schedule():
+    job = {
+        'creator': current_user.id,
+        'files': ['file_1', 'file_2', 'file_3'],
+        'service': 'ocr',
+        'args': {
+            'lang': 'deu'
+        }
+    }
+    job = background_scheduler.add_job(print, trigger='date', args=[job])
+    print(job)
+    return 'job'
-- 
GitLab