diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-12-14 18:10:27 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-12-14 18:10:27 +0100 |
| commit | 38746f284b17400d4e2555509ea60df5912b824a (patch) | |
| tree | 6dea93f4ba348d12a58a761424ec5547697fcf1f /megapixels/app/server | |
| parent | 36b6082dfa768cbf35d40dc2c82706dfae0b687b (diff) | |
all the sql stuff communicating nicely
Diffstat (limited to 'megapixels/app/server')
| -rw-r--r-- | megapixels/app/server/api.py | 72 | ||||
| -rw-r--r-- | megapixels/app/server/api/image.py | 40 | ||||
| -rw-r--r-- | megapixels/app/server/create.py | 23 |
3 files changed, 88 insertions, 47 deletions
diff --git a/megapixels/app/server/api.py b/megapixels/app/server/api.py new file mode 100644 index 00000000..e7db11f1 --- /dev/null +++ b/megapixels/app/server/api.py @@ -0,0 +1,72 @@ +from flask import Blueprint, jsonify + +from app.models.sql_factory import list_datasets, get_dataset, get_table + +# from jinja2 import TemplateNotFound + +# import os +# import sys +# import json +# import time +# import argparse +# import cv2 as cv +# import numpy as np +# from datetime import datetime +# from flask import Flask, request, render_template, jsonify +# from PIL import Image # todo: try to remove PIL dependency +# import re + +# sanitize_re = re.compile('[\W]+') +# valid_exts = ['.gif', '.jpg', '.jpeg', '.png'] + +# from dotenv import load_dotenv +# load_dotenv() + +# from feature_extractor import FeatureExtractor + +# DEFAULT_LIMIT = 50 + +api = Blueprint('api', __name__) + +@api.route('/') +def index(): + return jsonify({ 'datasets': list_datasets() }) + +@api.route('/dataset/<dataset>/test', methods=['POST']) +def test(dataset='test'): + dataset = get_dataset(dataset) + print('hiiiiii') + return jsonify({ 'test': 'OK', 'dataset': dataset }) + +# @router.route('/<dataset>/face', methods=['POST']) +# def upload(name): +# file = request.files['query_img'] +# fn = file.filename +# if fn.endswith('blob'): +# fn = 'filename.jpg' + +# basename, ext = os.path.splitext(fn) +# print("got {}, type {}".format(basename, ext)) +# if ext.lower() not in valid_exts: +# return jsonify({ 'error': 'not an image' }) + +# uploaded_fn = datetime.now().isoformat() + "_" + basename +# uploaded_fn = sanitize_re.sub('', uploaded_fn) +# uploaded_img_path = "static/uploaded/" + uploaded_fn + ext +# uploaded_img_path = uploaded_img_path.lower() +# print('query: {}'.format(uploaded_img_path)) + +# img = Image.open(file.stream).convert('RGB') +# # img.save(uploaded_img_path) +# # vec = db.load_feature_vector_from_file(uploaded_img_path) +# vec = fe.extract(img) +# # print(vec.shape) + +# results = db.search(vec, limit=limit) +# query = { +# 'timing': time.time() - start, +# } +# print(results) +# return jsonify({ +# 'results': results, +# }) diff --git a/megapixels/app/server/api/image.py b/megapixels/app/server/api/image.py deleted file mode 100644 index f2f4a4f9..00000000 --- a/megapixels/app/server/api/image.py +++ /dev/null @@ -1,40 +0,0 @@ -from flask import Blueprint, render_template, abort -# from jinja2 import TemplateNotFound - -router = Blueprint('image', __name__) - -@router.route('/<dataset>/test', methods=['POST']) -def test(name): - # dataset = -@router.route('/<dataset>/face', methods=['POST']) -def upload(name): - file = request.files['query_img'] - fn = file.filename - if fn.endswith('blob'): - fn = 'filename.jpg' - - basename, ext = os.path.splitext(fn) - print("got {}, type {}".format(basename, ext)) - if ext.lower() not in valid_exts: - return jsonify({ 'error': 'not an image' }) - - uploaded_fn = datetime.now().isoformat() + "_" + basename - uploaded_fn = sanitize_re.sub('', uploaded_fn) - uploaded_img_path = "static/uploaded/" + uploaded_fn + ext - uploaded_img_path = uploaded_img_path.lower() - print('query: {}'.format(uploaded_img_path)) - - img = Image.open(file.stream).convert('RGB') - # img.save(uploaded_img_path) - # vec = db.load_feature_vector_from_file(uploaded_img_path) - vec = fe.extract(img) - # print(vec.shape) - - results = db.search(vec, limit=limit) - query = { - 'timing': time.time() - start, - } - print(results) - return jsonify({ - 'results': results, - }) diff --git a/megapixels/app/server/create.py b/megapixels/app/server/create.py index 1119ee8f..9efed669 100644 --- a/megapixels/app/server/create.py +++ b/megapixels/app/server/create.py @@ -1,10 +1,8 @@ -from flask import Flask, Blueprint +from flask import Flask, Blueprint, jsonify from flask_sqlalchemy import SQLAlchemy -from app.models.sql_factory import connection_url +from app.models.sql_factory import connection_url, load_sql_datasets -from app.server.api import router as api_router - -# from app.server.views.assets import assets +from app.server.api import api db = SQLAlchemy() @@ -14,8 +12,10 @@ def create_app(script_info=None): app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) - app.register_blueprint(api) - + datasets = load_sql_datasets(replace=False, base_model=db.Model) + + app.register_blueprint(api, url_prefix='/api') + @app.route('/', methods=['GET']) def index(): return app.send_static_file('index.html') @@ -24,4 +24,13 @@ def create_app(script_info=None): def shell_context(): return { 'app': app, 'db': db } + @app.route("/site-map") + def site_map(): + links = [] + for rule in app.url_map.iter_rules(): + # url = url_for(rule.endpoint, **(rule.defaults or {})) + # print(url) + links.append((rule.endpoint)) + return(jsonify(links)) + return app |
