def api_import(): project = project_get_or_create() # make django compatibility for uploader module class DjangoRequest: POST = request.form GET = request.args FILES = request.files data = request.json if request.json else request.form content_type = request.content_type start = time.time() # get tasks from request parsed_data = uploader.load_tasks(DjangoRequest(), project) # validate tasks validator = TaskValidator(project) try: new_tasks = validator.to_internal_value(parsed_data) except ValidationError as e: return make_response(jsonify(e.msg_to_list()), status.HTTP_400_BAD_REQUEST) max_id_in_old_tasks = -1 if not project.no_tasks(): max_id_in_old_tasks = project.source_storage.max_id() new_tasks = Tasks().from_list_of_dicts(new_tasks, max_id_in_old_tasks + 1) project.source_storage.set_many(new_tasks.keys(), new_tasks.values()) # update schemas based on newly uploaded tasks project.update_derived_input_schema() project.update_derived_output_schema() duration = time.time() - start return make_response( jsonify({ 'task_count': len(new_tasks), '_count': validator.completion_count, 'prediction_count': validator.prediction_count, 'duration': duration, 'new_task_ids': [t for t in new_tasks] }), status.HTTP_201_CREATED)