diff --git a/inventory_provider/__init__.py b/inventory_provider/__init__.py index 6068a9d4ac62368fdd23234e8a4d4958d625003d..60d148c80c0a3b1948d058a743d6b12fa4755ef5 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 0000000000000000000000000000000000000000..6de4678de1b8d27c5cb373d9f5208bf3ea6a5e0b --- /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")