From 454faec9e7c725767d6cdac12dbf8765489c2358 Mon Sep 17 00:00:00 2001
From: Robert Latta <robert.latta@geant.org>
Date: Wed, 29 Apr 2020 09:41:30 +0000
Subject: [PATCH] added OTRS export job and route

---
 inventory_provider/__init__.py         |  7 +++++
 inventory_provider/routes/otrs_jobs.py | 37 ++++++++++++++++++++++++++
 2 files changed, 44 insertions(+)
 create mode 100644 inventory_provider/routes/otrs_jobs.py

diff --git a/inventory_provider/__init__.py b/inventory_provider/__init__.py
index 6068a9d4..60d148c8 100644
--- a/inventory_provider/__init__.py
+++ b/inventory_provider/__init__.py
@@ -50,6 +50,13 @@ def create_app():
 
     # end of IMS based routes
 
+    # OTRS routes
+
+    from inventory_provider.routes import otrs_jobs
+    app.register_blueprint(otrs_jobs.routes, url_prefix='/otrs')
+
+    # end of OTRS routes
+
     from inventory_provider.routes import default
     app.register_blueprint(default.routes, url_prefix='/')
 
diff --git a/inventory_provider/routes/otrs_jobs.py b/inventory_provider/routes/otrs_jobs.py
new file mode 100644
index 00000000..6de4678d
--- /dev/null
+++ b/inventory_provider/routes/otrs_jobs.py
@@ -0,0 +1,37 @@
+import html
+
+import requests
+from flask import Blueprint, request, Response
+
+from inventory_provider.routes import common
+from inventory_provider.tasks.ims_worker import OTRSFiles, export_data_for_otrs
+
+routes = Blueprint("otrs", __name__)
+
+
+@routes.after_request
+def after_request(resp):
+    return common.after_request(resp)
+
+
+@routes.route('export')
+def send_exports():
+    files_value = request.args.get('files', None)
+    if files_value:
+        try:
+            files_value = int(files_value)
+        except ValueError:
+            return Response(
+                response=html.escape('<files> should be an Integer'),
+                status=requests.codes.bad_request,
+                mimetype="text/html")
+        if files_value < 0 or files_value > sum(OTRSFiles):
+            return Response(
+                response=html.escape(f'Bad value for <files> {files_value}'),
+                status=requests.codes.bad_request,
+                mimetype="text/html")
+    task = export_data_for_otrs.delay(files_value)
+    return Response(
+        response=task.id,
+        status=requests.codes.ok,
+        mimetype="text/html")
-- 
GitLab