aboutsummaryrefslogtreecommitdiffstats
path: root/moon_manager/moon_manager/api/json_import.py
diff options
context:
space:
mode:
Diffstat (limited to 'moon_manager/moon_manager/api/json_import.py')
-rw-r--r--moon_manager/moon_manager/api/json_import.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/moon_manager/moon_manager/api/json_import.py b/moon_manager/moon_manager/api/json_import.py
new file mode 100644
index 00000000..922c5c2c
--- /dev/null
+++ b/moon_manager/moon_manager/api/json_import.py
@@ -0,0 +1,44 @@
+# Software Name: MOON
+
+# Version: 5.4
+
+# SPDX-FileCopyrightText: Copyright (c) 2018-2020 Orange and its contributors
+# SPDX-License-Identifier: Apache-2.0
+
+# This software is distributed under the 'Apache License 2.0',
+# the text of which is available at 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+# or see the "LICENSE" file for more details.
+
+
+import hug
+import logging
+from moon_manager import db_driver as driver
+from moon_utilities.json_utils import JsonImport
+from moon_utilities.auth_functions import api_key_authentication
+
+
+LOGGER = logging.getLogger("moon.manager.api." + __name__)
+
+INST_CALLBACK = 0
+DATA_CALLBACK = 1
+ASSIGNMENT_CALLBACK = 2
+CATEGORIES_CALLBACK = 3
+
+
+class JsonImportAPI(object):
+
+ @staticmethod
+ @hug.post("/import", requires=api_key_authentication)
+ def post(request, body, authed_user: hug.directives.user = None):
+ """
+ Import data inside the database
+ :param request: the request send by the user
+ :param body: the content of the request
+ :param authed_user: the name of the authenticated user
+ :return: "Import ok !" (if import is OK)
+ :raises multiple exceptions depending on the context
+ """
+ json_import_ob = JsonImport(driver_name="db", driver=driver)
+ imported_data = json_import_ob.import_json(moon_user_id=authed_user, request=request, body=body)
+ LOGGER.info('Imported data: {}'.format(imported_data))
+ return imported_data