filters interactivity + fix in fetch, flask and SQL requests

This commit is contained in:
2024-02-17 02:03:03 +01:00
parent f1b698fb46
commit d06b5aabae
5 changed files with 195 additions and 11 deletions

View File

@ -119,6 +119,28 @@ def data_item_request():
print("fetching data item")
return jsonify(get_item())
@app.route('/app/dataitem-filtered',methods = ['POST'])
def data_item_request_filtered():
print("fetching data item")
data = request.get_json()
filters_string = data.get('filters')
if len(filters_string)>0 :
lists_uuid = filters_string.split('#')
else:
lists_uuid = []
return jsonify(get_item_filtered(lists_uuid))
@app.route('/app/datahistory-filtered',methods = ['POST'])
def data_history_request_filtered():
print("fetching data history")
data = request.get_json()
filters_string = data.get('filters')
if len(filters_string)>0 :
lists_uuid = filters_string.split('#')
else:
lists_uuid = []
return jsonify(get_history_filtered(lists_uuid))
@app.route('/app/datalist',methods = ['GET'])
def data_list_request():
if request.method == 'GET':

View File

@ -103,7 +103,7 @@ def get_item_filtered(lists_uuid):
FROM item i
"""
for i in range(n_filters):
sql_request += f', content c{str(i)}'
sql_request += f', listcontent c{str(i)}'
sql_request += ' WHERE '
for i,uuid in enumerate(lists_uuid):
sql_request += f' i.uuid = c{str(i)}.item_uuid and c{str(i)}.list_uuid = {str(uuid)} and'
@ -120,6 +120,35 @@ def get_item_filtered(lists_uuid):
results = get_item()
return results
def get_history_filtered(lists_uuid):
'''
return history of items in a every specified lists (list of itemlist uuid)
all history if filter is empty
'''
n_filters = len(lists_uuid)
if n_filters > 0:
sql_request = """
SELECT uuid, quantity, discount_percentage, price, currency, h_timestamp
FROM history h
"""
for i in range(n_filters):
sql_request += f', listcontent c{str(i)}'
sql_request += ' WHERE '
for i,uuid in enumerate(lists_uuid):
sql_request += f' h.uuid = c{str(i)}.item_uuid and c{str(i)}.list_uuid = {str(uuid)} and'
sql_request = sql_request[:-3] # remove last 'and'
connection = connect_db()
cursor = connection.cursor()
cursor.execute(sql_request)
results = cursor.fetchall()
cursor.close()
connection.close()
else:
results = get_history()
return results
def get_item_keys():
'''return items id and attributes from database'''
connection = connect_db()