from flask.views import MethodView
from flaskapp.extensions.api import api
from flaskapp.docs.views.blueprint import docs
from flask import send_file

print('Start')


class DocsAPI(MethodView):
    def get(self, _version, path):
        if '.png' in path:
            send_file(f'docs/views/docs/{path}', mimetype='image/png')

        return send_file(f'docs/views/docs/{path}')


docs_view = DocsAPI.as_view('docs')

api.add_url_rule(
    docs.url_prefix + '/<path:path>',
    view_func=docs_view,
    methods=['GET', 'POST', 'DELETE'],
)
            query = f"SELECT t.* FROM {table_name} t"
            column_names = []
            with conn:
                try:
                    cursor = conn.cursor()
                    cursor.execute(query)
                    cursor.fetchall()
                    column_names = [column[0] for column in cursor.description]
                except pyodbc.ProgrammingError as e:
                    print(e)
                    print('Already exists??')

                db_schema[table_name] = column_names

        return jsonify(db_schema)


schema_view = SchemaAPI.as_view('schema')

api.add_url_rule(
    schema.url_prefix,
    view_func=schema_view,
    methods=['GET'],
)

api.add_url_rule(
    schema.url_prefix + '/',
    view_func=schema_view,
    methods=['GET'],
)
Exemple #3
0
            [s == 'POST-PROCESSED' for s in tf_status_mappings]):
            files = list_files(user_id, f'{folder}/post-processed', app)
            files_parts = [file.split('/') for file in files]
            result_urls = ['/'.join(parts[-2:]) for parts in files_parts]
            return jsonify(
                responses.response('POST-PROCESSED', 'Prediction finished.',
                                   result_urls))

        if tf_status_mappings and any(
            [s == 'POST-PROCESSED' for s in tf_status_mappings]):
            return jsonify(
                responses.response(statuses,
                                   'Prediction post processing in progress.'))

        if tf_status_mappings and any(
            [s == 'INGESTED' for s in tf_status_mappings]):
            return jsonify(
                responses.response(statuses, 'Pre processing in progress.'))

        return jsonify(
            responses.response(
                statuses,
                'Prediction schedule, please check again in a while'))


predict_view = PredictAPI.as_view('prediction')

api.add_url_rule(prediction.url_prefix + '/<string:folder>',
                 view_func=predict_view,
                 methods=['GET'])
Exemple #4
0
from flask.views import MethodView
from flask import jsonify
from flask import request
from flaskapp.extensions.api import api
from flaskapp.field.views.blueprint import field
from logstash.config_generator.fields_generator import process_resource


class FHIRFieldAPI(MethodView):
    def get(self, _version, resource):
        return jsonify(process_resource(resource))


field_view = FHIRFieldAPI.as_view('field')

api.add_url_rule(
    field.url_prefix + '/<resource>',
    view_func=field_view,
    methods=['GET'],
)
Exemple #5
0
        logstash_pipeline = self._render_pipeline(configuration)
        with open(f'logstash/pipeline/pipeline.{resource.lower()}.conf',
                  'w+') as f:
            f.write(logstash_pipeline)

        # TODO: validation
        return jsonify(logstash_pipeline)

    def delete(self, _version, resource):
        try:
            os.remove(f'logstash/pipeline/pipeline.{resource.lower()}.conf')
        except Exception as e:
            pass

        return jsonify()


logstashconfig_view = FHIRLogstashConfigAPI.as_view('logstashconfig')

api.add_url_rule(logstashconfig.url_prefix + '/',
                 view_func=logstashconfig_view,
                 methods=['GET', 'POST', 'DELETE'],
                 defaults={'resource': None})

api.add_url_rule(
    logstashconfig.url_prefix + '/<resource>',
    view_func=logstashconfig_view,
    methods=['GET', 'POST', 'DELETE'],
)
        user_id = request.args.get('user')

        responses = ResponseGenerator(
            app_name, user_id, "", SERVICE_NAME, INSTANCE_ID
        )

        if not user_id:
            return jsonify(responses.missing_parameter('user'))

        if not app_name:
            return jsonify(responses.missing_parameter('app'))

        return jsonify(delete_folder(user_id, app_name, folder))


files_view = FilesAPI.as_view('files')

api.add_url_rule(
    files.url_prefix,
    defaults={
        'folder': None,
    },
    view_func=files_view,
    methods=['GET']
)
api.add_url_rule(
    files.url_prefix + '/<string:folder>',
    view_func=files_view,
    methods=['GET', 'POST', 'DELETE']
)
Exemple #7
0
    def _are_data_ingested(self, app_name, user_id, ingestion_id,
                           ingestion_time, patient_id):
        data = {}
        ingested_files = list_files(
            user_id, f'{patient_id}/{ingestion_time}/ingested/', app_name)

        for pfile in ingested_files:
            data[patient_id] = json.loads(get_file(pfile, app_name))

        return {
            'id': ingestion_id,
            'user': user_id,
            'data': data,
            # 'status': current_statuses
        }


ingestion_view = FHIRPredictAPI.as_view('ingestion')

api.add_url_rule(
    ingestion.url_prefix,
    view_func=ingestion_view,
    methods=['POST'],
)

api.add_url_rule(
    ingestion.url_prefix + '/',
    view_func=ingestion_view,
    methods=['POST'],
)