|
|
|
@ -9,6 +9,9 @@ from flask import Flask
|
|
|
|
|
from flask import render_template, send_from_directory, request, Response
|
|
|
|
|
from werkzeug.utils import secure_filename
|
|
|
|
|
|
|
|
|
|
import pprint
|
|
|
|
|
pp = pprint.PrettyPrinter(indent=4)
|
|
|
|
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
|
|
|
|
db_engine = {}
|
|
|
|
@ -49,20 +52,45 @@ def get_part_info(partID):
|
|
|
|
|
r.close()
|
|
|
|
|
return json.dumps(l[0])
|
|
|
|
|
|
|
|
|
|
@app.route('/parts/query/<filter>/<query>')
|
|
|
|
|
def query(filter, query):
|
|
|
|
|
query = '%' + query + '%'
|
|
|
|
|
filter = int(filter)
|
|
|
|
|
@app.route('/parts/query/<filter_dummy>/<query>')
|
|
|
|
|
def query(filter_dummy, query):
|
|
|
|
|
filter = request.args.to_dict()
|
|
|
|
|
keywords = query.split() # Default splits with spaces
|
|
|
|
|
for i in range(len(keywords)):
|
|
|
|
|
keywords[i] = '%' + keywords[i] + '%'
|
|
|
|
|
kw_dict = {}
|
|
|
|
|
for i in range(len(keywords)):
|
|
|
|
|
kw_dict["kw" + str(i)] = keywords[i]
|
|
|
|
|
|
|
|
|
|
s = 'select p.id,partno,description,l.name as location_descriptor from parts as p inner join locations as l on p.location_id = l.id where '
|
|
|
|
|
if filter & (1 << 1) != 0:
|
|
|
|
|
s += 'LOWER(partno) like LOWER(:name) or '
|
|
|
|
|
if filter & (1 << 4) != 0:
|
|
|
|
|
s += 'LOWER(description) like LOWER(:name) or '
|
|
|
|
|
if filter & (1 << 5) != 0:
|
|
|
|
|
s += 'LOWER(notes) like LOWER(:name) or '
|
|
|
|
|
if filter['l']:
|
|
|
|
|
s += '('
|
|
|
|
|
for i in range(len(keywords)):
|
|
|
|
|
s += 'LOWER(l.name) like LOWER(:kw'+ str(i) +') AND '
|
|
|
|
|
s = s[:-5]
|
|
|
|
|
s += ') OR '
|
|
|
|
|
if filter['p']:
|
|
|
|
|
s += '('
|
|
|
|
|
for i in range(len(keywords)):
|
|
|
|
|
s += 'LOWER(partno) like LOWER(:kw'+ str(i) +') AND '
|
|
|
|
|
s = s[:-5]
|
|
|
|
|
s += ') OR '
|
|
|
|
|
if filter['d']:
|
|
|
|
|
s += '('
|
|
|
|
|
for i in range(len(keywords)):
|
|
|
|
|
s += 'LOWER(description) like LOWER(:kw'+ str(i) +') AND '
|
|
|
|
|
s = s[:-5]
|
|
|
|
|
s += ') OR '
|
|
|
|
|
if filter['n']:
|
|
|
|
|
s += '('
|
|
|
|
|
for i in range(len(keywords)):
|
|
|
|
|
s += 'LOWER(notes) like LOWER(:kw'+ str(i) +') AND '
|
|
|
|
|
s = s[:-5]
|
|
|
|
|
s += ') OR '
|
|
|
|
|
s = s[:-4] + ';'
|
|
|
|
|
print(s)
|
|
|
|
|
s = text(s)
|
|
|
|
|
r = db_engine.execute(s, name=query)
|
|
|
|
|
r = db_engine.execute(s, kw_dict)
|
|
|
|
|
l = []
|
|
|
|
|
for row in r:
|
|
|
|
|
l.append(dict(row))
|
|
|
|
|