Added progress bar to create set
This commit is contained in:
parent
5a45034d9b
commit
e835b8f3a2
480
app.py
480
app.py
@ -1,5 +1,7 @@
|
|||||||
from flask import Flask, request, redirect, jsonify, render_template, Response,url_for
|
from flask import Flask, request, redirect, jsonify, render_template, Response,url_for
|
||||||
import json
|
import json
|
||||||
|
from flask_socketio import SocketIO
|
||||||
|
from threading import Thread
|
||||||
from pprint import pprint as pp
|
from pprint import pprint as pp
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import time,random,string,sqlite3
|
import time,random,string,sqlite3
|
||||||
@ -10,9 +12,30 @@ import requests # request img from web
|
|||||||
import shutil # save img locally
|
import shutil # save img locally
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
socketio = SocketIO(app)
|
||||||
|
count = 0
|
||||||
|
|
||||||
@app.route('/favicon.ico')
|
@app.route('/favicon.ico')
|
||||||
|
|
||||||
|
# SocketIO event handler for client connection
|
||||||
|
@socketio.on('connect', namespace='/progress')
|
||||||
|
def test_connect():
|
||||||
|
print('Client connected')
|
||||||
|
|
||||||
|
# SocketIO event handler for client disconnection
|
||||||
|
@socketio.on('disconnect', namespace='/progress')
|
||||||
|
def test_disconnect():
|
||||||
|
print('Client disconnected')
|
||||||
|
|
||||||
|
# SocketIO event handler for starting the task
|
||||||
|
@socketio.on('start_task', namespace='/progress')
|
||||||
|
def start_task(data):
|
||||||
|
input_value = data.get('inputField')
|
||||||
|
print(input_value)
|
||||||
|
# Start the task in a separate thread to avoid blocking the server
|
||||||
|
thread = Thread(target=new_set, args=(input_value,))
|
||||||
|
thread.start()
|
||||||
|
|
||||||
@app.route('/delete/<tmp>',methods=['POST', 'GET'])
|
@app.route('/delete/<tmp>',methods=['POST', 'GET'])
|
||||||
def delete(tmp):
|
def delete(tmp):
|
||||||
|
|
||||||
@ -32,108 +55,224 @@ def delete(tmp):
|
|||||||
conn.close()
|
conn.close()
|
||||||
return redirect('/')
|
return redirect('/')
|
||||||
|
|
||||||
@app.route('/create',methods=['GET', 'POST'])
|
def new_set(set_num):
|
||||||
def create():
|
global count
|
||||||
|
###### total count ####
|
||||||
|
# 1 for set
|
||||||
|
# 1 for set image
|
||||||
|
|
||||||
|
total_parts = 2
|
||||||
|
|
||||||
|
set_num = set_num
|
||||||
|
# add_duplicate = request.form.get('addDuplicate', False) == 'true'
|
||||||
|
# Do something with the input value and the checkbox value
|
||||||
|
# print("Input value:", set_num)
|
||||||
|
# print("Add duplicate:", add_duplicate)
|
||||||
|
# You can perform any further processing or redirect to another page
|
||||||
conn = sqlite3.connect('app.db')
|
conn = sqlite3.connect('app.db')
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
count = 0
|
if '-' not in set_num:
|
||||||
if request.method == 'GET':
|
set_num = set_num + '-1'
|
||||||
print('get')
|
|
||||||
|
|
||||||
if request.method == 'POST':
|
print ("Adding set: " + set_num)
|
||||||
set_num = request.form['inputField']
|
with open('api','r') as f:
|
||||||
# add_duplicate = request.form.get('addDuplicate', False) == 'true'
|
api_key = f.read().replace('\n','')
|
||||||
# Do something with the input value and the checkbox value
|
rb = rebrick.init(api_key)
|
||||||
# print("Input value:", set_num)
|
|
||||||
# print("Add duplicate:", add_duplicate)
|
|
||||||
# You can perform any further processing or redirect to another page
|
|
||||||
|
|
||||||
if '-' not in set_num:
|
unique_set_id = generate_unique_set_unique()
|
||||||
set_num = set_num + '-1'
|
|
||||||
|
|
||||||
print ("Adding set: " + set_num)
|
# Get Set info and add to SQL
|
||||||
with open('api','r') as f:
|
response = ''
|
||||||
api_key = f.read().replace('\n','')
|
try:
|
||||||
rb = rebrick.init(api_key)
|
response = json.loads(rebrick.lego.get_set(set_num).read())
|
||||||
|
|
||||||
unique_set_id = generate_unique_set_unique()
|
|
||||||
|
|
||||||
# Get Set info and add to SQL
|
|
||||||
response = ''
|
|
||||||
try:
|
|
||||||
response = json.loads(rebrick.lego.get_set(set_num).read())
|
|
||||||
except Exception as e:
|
|
||||||
print(e.code)
|
|
||||||
if e.code == 404:
|
|
||||||
return render_template('create.html',error=set_num)
|
|
||||||
|
|
||||||
count+=1
|
|
||||||
|
|
||||||
cursor.execute('''INSERT INTO sets (
|
except Exception as e:
|
||||||
|
#print(e.code)
|
||||||
|
if e.code == 404:
|
||||||
|
return render_template('create.html',error=set_num)
|
||||||
|
|
||||||
|
count+=1
|
||||||
|
cursor.execute('''INSERT INTO sets (
|
||||||
|
set_num,
|
||||||
|
name,
|
||||||
|
year,
|
||||||
|
theme_id,
|
||||||
|
num_parts,
|
||||||
|
set_img_url,
|
||||||
|
set_url,
|
||||||
|
last_modified_dt,
|
||||||
|
mini_col,
|
||||||
|
set_check,
|
||||||
|
set_col,
|
||||||
|
u_id
|
||||||
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ''', (response['set_num'], response['name'], response['year'], response['theme_id'], response['num_parts'],response['set_img_url'],response['set_url'],response['last_modified_dt'],False,False,False,unique_set_id))
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Get set image. Saved under ./static/sets/xxx-x.jpg
|
||||||
|
set_img_url = response["set_img_url"]
|
||||||
|
|
||||||
|
#print('Saving set image:',end='')
|
||||||
|
|
||||||
|
res = requests.get(set_img_url, stream = True)
|
||||||
|
count+=1
|
||||||
|
if res.status_code == 200:
|
||||||
|
with open("./static/sets/"+set_num+".jpg",'wb') as f:
|
||||||
|
shutil.copyfileobj(res.raw, f)
|
||||||
|
#print(' OK')
|
||||||
|
else:
|
||||||
|
#print('Image Couldn\'t be retrieved for set ' + set_num)
|
||||||
|
logging.error('set_img_url: ' + set_num)
|
||||||
|
#print(' ERROR')
|
||||||
|
|
||||||
|
|
||||||
|
# Get inventory and add to SQL
|
||||||
|
response = json.loads(rebrick.lego.get_set_elements(set_num,page_size=20000).read())
|
||||||
|
count+=1
|
||||||
|
total_parts += len(response['results'])
|
||||||
|
socketio.emit('update_progress', {'progress': int(count/total_parts*100)}, namespace='/progress')
|
||||||
|
for i in response['results']:
|
||||||
|
# Get part image. Saved under ./static/parts/xxxx.jpg
|
||||||
|
part_img_url = i['part']['part_img_url']
|
||||||
|
part_img_url_id = 'nil'
|
||||||
|
|
||||||
|
try:
|
||||||
|
pattern = r'/([^/]+)\.(?:png|jpg)$'
|
||||||
|
match = re.search(pattern, part_img_url)
|
||||||
|
|
||||||
|
if match:
|
||||||
|
part_img_url_id = match.group(1)
|
||||||
|
#print("Part number:", part_img_url_id)
|
||||||
|
else:
|
||||||
|
#print("Part number not found in the URL.")
|
||||||
|
print(">>> " + part_img_url)
|
||||||
|
except Exception as e:
|
||||||
|
#print("Part number not found in the URL.")
|
||||||
|
#print(">>> " + str(part_img_url))
|
||||||
|
print(str(e))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cursor.execute('''INSERT INTO inventory (
|
||||||
|
set_num,
|
||||||
|
id,
|
||||||
|
part_num,
|
||||||
|
name,
|
||||||
|
part_img_url,
|
||||||
|
part_img_url_id,
|
||||||
|
color_id,
|
||||||
|
color_name,
|
||||||
|
quantity,
|
||||||
|
is_spare,
|
||||||
|
element_id,
|
||||||
|
u_id
|
||||||
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', (set_num, i['id'], i['part']['part_num'],i['part']['name'],i['part']['part_img_url'],part_img_url_id,i['color']['id'],i['color']['name'],i['quantity'],i['is_spare'],i['element_id'],unique_set_id))
|
||||||
|
|
||||||
|
|
||||||
|
if not Path("./static/parts/"+part_img_url_id+".jpg").is_file():
|
||||||
|
#print('Saving part image:',end='')
|
||||||
|
if part_img_url is not None:
|
||||||
|
res = requests.get(part_img_url, stream = True)
|
||||||
|
count+=1
|
||||||
|
socketio.emit('update_progress', {'progress': count}, namespace='/progress')
|
||||||
|
if res.status_code == 200:
|
||||||
|
with open("./static/parts/"+part_img_url_id+".jpg",'wb') as f:
|
||||||
|
shutil.copyfileobj(res.raw, f)
|
||||||
|
#print(' OK')
|
||||||
|
else:
|
||||||
|
#print('Image Couldn\'t be retrieved for set ' + part_img_url_id)
|
||||||
|
logging.error('part_img_url: ' + part_img_url_id)
|
||||||
|
#print(' ERROR')
|
||||||
|
else:
|
||||||
|
#print('Part url is None')
|
||||||
|
print(i)
|
||||||
|
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
# Get minifigs
|
||||||
|
#print('Savings minifigs')
|
||||||
|
tmp_set_num = set_num
|
||||||
|
response = json.loads(rebrick.lego.get_set_minifigs(set_num).read())
|
||||||
|
count+=1
|
||||||
|
socketio.emit('update_progress', {'progress': int(count/total_parts*100)}, namespace='/progress')
|
||||||
|
#print(response)
|
||||||
|
|
||||||
|
for i in response['results']:
|
||||||
|
|
||||||
|
# Get set image. Saved under ./static/minifigs/xxx-x.jpg
|
||||||
|
set_img_url = i["set_img_url"]
|
||||||
|
set_num = i['set_num']
|
||||||
|
|
||||||
|
#print('Saving set image:',end='')
|
||||||
|
if not Path("./static/minifigs/"+set_num+".jpg").is_file():
|
||||||
|
res = requests.get(set_img_url, stream = True)
|
||||||
|
count+=1
|
||||||
|
socketio.emit('update_progress', {'progress': int(count/total_parts*100)}, namespace='/progress')
|
||||||
|
if res.status_code == 200:
|
||||||
|
with open("./static/minifigs/"+set_num+".jpg",'wb') as f:
|
||||||
|
shutil.copyfileobj(res.raw, f)
|
||||||
|
#print(' OK')
|
||||||
|
else:
|
||||||
|
#print('Image Couldn\'t be retrieved for set ' + set_num)
|
||||||
|
logging.error('set_img_url: ' + set_num)
|
||||||
|
#print(' ERROR')
|
||||||
|
|
||||||
|
|
||||||
|
cursor.execute('''INSERT INTO minifigures (
|
||||||
|
fig_num,
|
||||||
set_num,
|
set_num,
|
||||||
name,
|
name,
|
||||||
year,
|
quantity,
|
||||||
theme_id,
|
|
||||||
num_parts,
|
|
||||||
set_img_url,
|
set_img_url,
|
||||||
set_url,
|
|
||||||
last_modified_dt,
|
|
||||||
mini_col,
|
|
||||||
set_check,
|
|
||||||
set_col,
|
|
||||||
u_id
|
u_id
|
||||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ''', (response['set_num'], response['name'], response['year'], response['theme_id'], response['num_parts'],response['set_img_url'],response['set_url'],response['last_modified_dt'],False,False,False,unique_set_id))
|
) VALUES (?, ?, ?, ?, ?, ?) ''', (i['set_num'],tmp_set_num, i['set_name'], i['quantity'],i['set_img_url'],unique_set_id))
|
||||||
|
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
||||||
|
# Get minifigs inventory
|
||||||
|
response_minifigs = json.loads(rebrick.lego.get_minifig_elements(i['set_num']).read())
|
||||||
# Get set image. Saved under ./static/sets/xxx-x.jpg
|
|
||||||
set_img_url = response["set_img_url"]
|
|
||||||
|
|
||||||
print('Saving set image:',end='')
|
|
||||||
|
|
||||||
res = requests.get(set_img_url, stream = True)
|
|
||||||
count+=1
|
count+=1
|
||||||
if res.status_code == 200:
|
socketio.emit('update_progress', {'progress': int(count/total_parts*100)}, namespace='/progress')
|
||||||
with open("./static/sets/"+set_num+".jpg",'wb') as f:
|
for i in response_minifigs['results']:
|
||||||
shutil.copyfileobj(res.raw, f)
|
|
||||||
print(' OK')
|
|
||||||
else:
|
|
||||||
print('Image Couldn\'t be retrieved for set ' + set_num)
|
|
||||||
logging.error('set_img_url: ' + set_num)
|
|
||||||
print(' ERROR')
|
|
||||||
|
|
||||||
|
|
||||||
# Get inventory and add to SQL
|
|
||||||
response = json.loads(rebrick.lego.get_set_elements(set_num,page_size=20000).read())
|
|
||||||
count+=1
|
|
||||||
for i in response['results']:
|
|
||||||
# Get part image. Saved under ./static/parts/xxxx.jpg
|
# Get part image. Saved under ./static/parts/xxxx.jpg
|
||||||
part_img_url = i['part']['part_img_url']
|
part_img_url = i['part']['part_img_url']
|
||||||
part_img_url_id = 'nil'
|
part_img_url_id = 'nil'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
pattern = r'/([^/]+)\.(?:png|jpg)$'
|
pattern = r'/([^/]+)\.(?:png|jpg)$'
|
||||||
match = re.search(pattern, part_img_url)
|
match = re.search(pattern, part_img_url)
|
||||||
|
|
||||||
if match:
|
if match:
|
||||||
part_img_url_id = match.group(1)
|
part_img_url_id = match.group(1)
|
||||||
print("Part number:", part_img_url_id)
|
#print("Part number:", part_img_url_id)
|
||||||
else:
|
if not Path("./static/parts/"+part_img_url_id+".jpg").is_file():
|
||||||
print("Part number not found in the URL.")
|
#print('Saving part image:',end='')
|
||||||
print(">>> " + part_img_url)
|
|
||||||
|
res = requests.get(part_img_url, stream = True)
|
||||||
|
count+=1
|
||||||
|
socketio.emit('update_progress', {'progress': int(count/total_parts*100)}, namespace='/progress')
|
||||||
|
if res.status_code == 200:
|
||||||
|
with open("./static/parts/"+part_img_url_id+".jpg",'wb') as f:
|
||||||
|
shutil.copyfileobj(res.raw, f)
|
||||||
|
#print(' OK')
|
||||||
|
else:
|
||||||
|
#print('Image Couldn\'t be retrieved for set ' + part_img_url_id)
|
||||||
|
logging.error('part_img_url: ' + part_img_url_id)
|
||||||
|
#print(' ERROR')
|
||||||
|
else:
|
||||||
|
print(part_img_url_id + '.jpg exists!')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Part number not found in the URL.")
|
#print("Part number not found in the URL.")
|
||||||
print(">>> " + str(part_img_url))
|
#print(">>> " + str(part_img_url))
|
||||||
print(str(e))
|
print(str(e))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cursor.execute('''INSERT INTO inventory (
|
cursor.execute('''INSERT INTO inventory (
|
||||||
set_num,
|
set_num,
|
||||||
id,
|
id,
|
||||||
@ -147,128 +286,26 @@ def create():
|
|||||||
is_spare,
|
is_spare,
|
||||||
element_id,
|
element_id,
|
||||||
u_id
|
u_id
|
||||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', (set_num, i['id'], i['part']['part_num'],i['part']['name'],i['part']['part_img_url'],part_img_url_id,i['color']['id'],i['color']['name'],i['quantity'],i['is_spare'],i['element_id'],unique_set_id))
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', (i['set_num'], i['id'], i['part']['part_num'],i['part']['name'],i['part']['part_img_url'],part_img_url_id,i['color']['id'],i['color']['name'],i['quantity'],i['is_spare'],i['element_id'],unique_set_id))
|
||||||
|
|
||||||
|
|
||||||
if not Path("./static/parts/"+part_img_url_id+".jpg").is_file():
|
|
||||||
print('Saving part image:',end='')
|
|
||||||
if part_img_url is not None:
|
|
||||||
res = requests.get(part_img_url, stream = True)
|
|
||||||
count+=1
|
|
||||||
if res.status_code == 200:
|
|
||||||
with open("./static/parts/"+part_img_url_id+".jpg",'wb') as f:
|
|
||||||
shutil.copyfileobj(res.raw, f)
|
|
||||||
print(' OK')
|
|
||||||
else:
|
|
||||||
print('Image Couldn\'t be retrieved for set ' + part_img_url_id)
|
|
||||||
logging.error('part_img_url: ' + part_img_url_id)
|
|
||||||
print(' ERROR')
|
|
||||||
else:
|
|
||||||
print('Part url is None')
|
|
||||||
print(i)
|
|
||||||
else:
|
|
||||||
print(part_img_url_id + '.jpg exists!')
|
|
||||||
|
|
||||||
conn.commit()
|
|
||||||
|
|
||||||
# Get minifigs
|
|
||||||
print('Savings minifigs')
|
|
||||||
tmp_set_num = set_num
|
|
||||||
response = json.loads(rebrick.lego.get_set_minifigs(set_num).read())
|
|
||||||
count+=1
|
|
||||||
print(response)
|
|
||||||
|
|
||||||
for i in response['results']:
|
|
||||||
|
|
||||||
# Get set image. Saved under ./static/minifigs/xxx-x.jpg
|
|
||||||
set_img_url = i["set_img_url"]
|
|
||||||
set_num = i['set_num']
|
|
||||||
|
|
||||||
print('Saving set image:',end='')
|
|
||||||
if not Path("./static/minifigs/"+set_num+".jpg").is_file():
|
|
||||||
res = requests.get(set_img_url, stream = True)
|
|
||||||
count+=1
|
|
||||||
if res.status_code == 200:
|
|
||||||
with open("./static/minifigs/"+set_num+".jpg",'wb') as f:
|
|
||||||
shutil.copyfileobj(res.raw, f)
|
|
||||||
print(' OK')
|
|
||||||
else:
|
|
||||||
print('Image Couldn\'t be retrieved for set ' + set_num)
|
|
||||||
logging.error('set_img_url: ' + set_num)
|
|
||||||
print(' ERROR')
|
|
||||||
else:
|
|
||||||
print(set_img_url + '.jpg exists!')
|
|
||||||
|
|
||||||
cursor.execute('''INSERT INTO minifigures (
|
|
||||||
fig_num,
|
|
||||||
set_num,
|
|
||||||
name,
|
|
||||||
quantity,
|
|
||||||
set_img_url,
|
|
||||||
u_id
|
|
||||||
) VALUES (?, ?, ?, ?, ?, ?) ''', (i['set_num'],tmp_set_num, i['set_name'], i['quantity'],i['set_img_url'],unique_set_id))
|
|
||||||
|
|
||||||
conn.commit()
|
|
||||||
|
|
||||||
# Get minifigs inventory
|
conn.commit()
|
||||||
response_minifigs = json.loads(rebrick.lego.get_minifig_elements(i['set_num']).read())
|
|
||||||
count+=1
|
|
||||||
|
|
||||||
for i in response_minifigs['results']:
|
|
||||||
|
|
||||||
# Get part image. Saved under ./static/parts/xxxx.jpg
|
|
||||||
part_img_url = i['part']['part_img_url']
|
|
||||||
part_img_url_id = 'nil'
|
|
||||||
try:
|
|
||||||
pattern = r'/([^/]+)\.(?:png|jpg)$'
|
|
||||||
match = re.search(pattern, part_img_url)
|
|
||||||
|
|
||||||
if match:
|
|
||||||
part_img_url_id = match.group(1)
|
|
||||||
print("Part number:", part_img_url_id)
|
|
||||||
if not Path("./static/parts/"+part_img_url_id+".jpg").is_file():
|
|
||||||
print('Saving part image:',end='')
|
|
||||||
|
|
||||||
res = requests.get(part_img_url, stream = True)
|
|
||||||
count+=1
|
|
||||||
if res.status_code == 200:
|
|
||||||
with open("./static/parts/"+part_img_url_id+".jpg",'wb') as f:
|
|
||||||
shutil.copyfileobj(res.raw, f)
|
|
||||||
print(' OK')
|
|
||||||
else:
|
|
||||||
print('Image Couldn\'t be retrieved for set ' + part_img_url_id)
|
|
||||||
logging.error('part_img_url: ' + part_img_url_id)
|
|
||||||
print(' ERROR')
|
|
||||||
else:
|
|
||||||
print(part_img_url_id + '.jpg exists!')
|
|
||||||
except Exception as e:
|
|
||||||
print("Part number not found in the URL.")
|
|
||||||
print(">>> " + str(part_img_url))
|
|
||||||
print(str(e))
|
|
||||||
|
|
||||||
cursor.execute('''INSERT INTO inventory (
|
|
||||||
set_num,
|
|
||||||
id,
|
|
||||||
part_num,
|
|
||||||
name,
|
|
||||||
part_img_url,
|
|
||||||
part_img_url_id,
|
|
||||||
color_id,
|
|
||||||
color_name,
|
|
||||||
quantity,
|
|
||||||
is_spare,
|
|
||||||
element_id,
|
|
||||||
u_id
|
|
||||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', (i['set_num'], i['id'], i['part']['part_num'],i['part']['name'],i['part']['part_img_url'],part_img_url_id,i['color']['id'],i['color']['name'],i['quantity'],i['is_spare'],i['element_id'],unique_set_id))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
conn.commit()
|
|
||||||
conn.close()
|
|
||||||
print(count)
|
|
||||||
return redirect('/')
|
|
||||||
|
|
||||||
conn.close()
|
conn.close()
|
||||||
|
count = total_parts
|
||||||
|
socketio.emit('update_progress', {'progress': int(count/total_parts*100)}, namespace='/progress')
|
||||||
|
|
||||||
|
count = 0
|
||||||
|
socketio.emit('task_completed', namespace='/progress')
|
||||||
|
|
||||||
|
@app.route('/create',methods=['POST','GET'])
|
||||||
|
def create():
|
||||||
|
|
||||||
|
global count
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print('Count: ' + str(count))
|
print('Count: ' + str(count))
|
||||||
|
|
||||||
@ -293,7 +330,7 @@ def index():
|
|||||||
results = cursor.fetchall()
|
results = cursor.fetchall()
|
||||||
set_list = [list(i) for i in results]
|
set_list = [list(i) for i in results]
|
||||||
|
|
||||||
print(set_list)
|
#print(set_list)
|
||||||
for i in set_list:
|
for i in set_list:
|
||||||
try:
|
try:
|
||||||
i[3] = theme_file[theme_file[:, 0] == str(i[3])][0][1]
|
i[3] = theme_file[theme_file[:, 0] == str(i[3])][0][1]
|
||||||
@ -304,7 +341,58 @@ def index():
|
|||||||
cursor.close()
|
cursor.close()
|
||||||
conn.close()
|
conn.close()
|
||||||
return render_template('index.html',set_list=set_list,themes_list=theme_file)
|
return render_template('index.html',set_list=set_list,themes_list=theme_file)
|
||||||
|
|
||||||
|
if request.method == 'POST':
|
||||||
|
set_num = request.form.get('set_num')
|
||||||
|
u_id = request.form.get('u_id')
|
||||||
|
minif = request.form.get('minif')
|
||||||
|
scheck = request.form.get('scheck')
|
||||||
|
scol = request.form.get('scol')
|
||||||
|
|
||||||
|
conn = sqlite3.connect('app.db')
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
if minif != None:
|
||||||
|
if minif == 'true':
|
||||||
|
val = 1
|
||||||
|
else:
|
||||||
|
val = 0
|
||||||
|
cursor.execute('''UPDATE sets
|
||||||
|
SET mini_col = ?
|
||||||
|
WHERE set_num = ? AND
|
||||||
|
u_id = ?''',
|
||||||
|
(val, set_num, u_id))
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
if scheck != None:
|
||||||
|
if scheck == 'true':
|
||||||
|
val = 1
|
||||||
|
else:
|
||||||
|
val = 0
|
||||||
|
cursor.execute('''UPDATE sets
|
||||||
|
SET set_check = ?
|
||||||
|
WHERE set_num = ? AND
|
||||||
|
u_id = ?''',
|
||||||
|
(val, set_num, u_id))
|
||||||
|
conn.commit()
|
||||||
|
if scol != None:
|
||||||
|
if scol == 'true':
|
||||||
|
val = 1
|
||||||
|
else:
|
||||||
|
val = 0
|
||||||
|
cursor.execute('''UPDATE sets
|
||||||
|
SET set_col = ?
|
||||||
|
WHERE set_num = ? AND
|
||||||
|
u_id = ?''',
|
||||||
|
(val, set_num, u_id))
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
cursor.close()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return ('', 204)
|
||||||
|
|
||||||
@app.route('/<tmp>/<u_id>', methods=['GET', 'POST'])
|
@app.route('/<tmp>/<u_id>', methods=['GET', 'POST'])
|
||||||
def inventory(tmp,u_id):
|
def inventory(tmp,u_id):
|
||||||
@ -557,4 +645,4 @@ def save_number(tmp):
|
|||||||
return Response(status=204)
|
return Response(status=204)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run(host='0.0.0.0', debug=True, port=3333)
|
socketio.run(app.run(host='0.0.0.0', debug=True, port=3333))
|
||||||
|
@ -44,7 +44,7 @@ cursor.execute('''CREATE TABLE IF NOT EXISTS sets (
|
|||||||
last_modified_dt TEXT,
|
last_modified_dt TEXT,
|
||||||
mini_col BOOLEAN,
|
mini_col BOOLEAN,
|
||||||
set_check BOOLEAN,
|
set_check BOOLEAN,
|
||||||
set_col, BOOLEAN,
|
set_col BOOLEAN,
|
||||||
u_id TEXT
|
u_id TEXT
|
||||||
)''')
|
)''')
|
||||||
|
|
||||||
|
@ -7,7 +7,9 @@
|
|||||||
<link
|
<link
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
href="https://cdn.jsdelivr.net/npm/bulma@1.0.0/css/bulma.min.css">
|
href="https://cdn.jsdelivr.net/npm/bulma@1.0.0/css/bulma.min.css">
|
||||||
</head>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.3.1/socket.io.js" crossorigin="anonymous"></script>
|
||||||
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar is-dark is-fixed-top" role="navigation" aria-label="main navigation">
|
<nav class="navbar is-dark is-fixed-top" role="navigation" aria-label="main navigation">
|
||||||
<div class="navbar-brand">
|
<div class="navbar-brand">
|
||||||
@ -36,15 +38,17 @@
|
|||||||
<input class="input" type="text" id="inputField" name="inputField">
|
<input class="input" type="text" id="inputField" name="inputField">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<progress id="progress-bar" class="progress is-large is-primary" value="0" max="100">
|
||||||
|
</progress>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<button class="button is-primary" type="submit">Submit</button>
|
<button id="submitButton" class="button is-primary" type="submit">Submit</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{% if error is defined %}
|
{% if error is defined %}
|
||||||
<button class="js-modal-trigger" data-target="modal-js-example" id="modal-js">
|
<button class="js-modal-trigger" data-target="modal-js-example" id="modal-js">
|
||||||
</button>
|
</button>
|
||||||
@ -73,13 +77,33 @@
|
|||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
var socket = io.connect('http://' + document.domain + ':' + location.port + '/progress');
|
||||||
|
// Event listener for receiving progress updates
|
||||||
|
socket.on('update_progress', function(msg) {
|
||||||
|
var progress = msg.progress;
|
||||||
|
// document.getElementById("progress-bar").style.width = progress + "%";
|
||||||
|
document.getElementById("progress-bar").value = progress;
|
||||||
|
document.getElementById("progress-bar").innerText = progress + "%";
|
||||||
|
});
|
||||||
|
|
||||||
|
// Event listener for the form submission
|
||||||
|
document.getElementById("createForm").addEventListener("submit", function(event) {
|
||||||
|
event.preventDefault(); // Prevent default form submission
|
||||||
|
var inputField = document.getElementById("inputField").value;
|
||||||
|
socket.emit('start_task', { inputField: inputField }); // Emit socket event with inputField value
|
||||||
|
});
|
||||||
|
|
||||||
|
// Event listener for the 'task_completed' event
|
||||||
|
socket.on('task_completed', function() {
|
||||||
|
// Redirect to '/'
|
||||||
|
window.location.href = '/';
|
||||||
|
});
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
|
||||||
window.onload = function () {
|
window.onload = function () {
|
||||||
|
@ -204,7 +204,7 @@
|
|||||||
<div class="columns" style="">
|
<div class="columns" style="">
|
||||||
<div class="column is-half" style="">
|
<div class="column is-half" style="">
|
||||||
<figure class="image is-4by3">
|
<figure class="image is-4by3">
|
||||||
<a href="/{{ i[0] }}/{{ i[12] }}">
|
<a href="/{{ i[0] }}/{{ i[11] }}">
|
||||||
<img style='height: 100%; width: 100%; object-fit: contain' src="/static/sets/{{ i[0] }}.jpg" alt="Image">
|
<img style='height: 100%; width: 100%; object-fit: contain' src="/static/sets/{{ i[0] }}.jpg" alt="Image">
|
||||||
</a>
|
</a>
|
||||||
</figure>
|
</figure>
|
||||||
@ -213,33 +213,55 @@
|
|||||||
<div class="column is-half" style="margin:0;padding:0;">
|
<div class="column is-half" style="margin:0;padding:0;">
|
||||||
<div class="is-size-7">
|
<div class="is-size-7">
|
||||||
<label class="checkbox" >
|
<label class="checkbox" >
|
||||||
<input type="hidden" id="set_num" value="{{ i[0] }}">
|
<input type="hidden" id="set_num" value="{{ i[0] }}">
|
||||||
<input class="s_fig" id="s_fig" type="checkbox" checked />
|
<input type="hidden" id="u_id" value="{{ i[11] }}">
|
||||||
|
{% if i[8] == 0 %}
|
||||||
|
<input class="s_fig" id="s_fig" type="checkbox" />
|
||||||
|
{% else %}
|
||||||
|
<input class="s_fig" id="s_fig" type="checkbox" checked />
|
||||||
|
{% endif %}
|
||||||
|
<!-- {{ i[8] }}<br>
|
||||||
|
{{ i[9] }}<br>
|
||||||
|
{{ i[10] }}<br> -->
|
||||||
|
|
||||||
|
|
||||||
Minifigs Collected
|
Minifigs Collected
|
||||||
</label>
|
</label>
|
||||||
<br>
|
<br>
|
||||||
<label class="checkbox" >
|
<label class="checkbox" >
|
||||||
<input type="hidden" id="set_num" value="{{ i['set_num'] }}">
|
<input type="hidden" id="set_num" value="{{ i[0] }}">
|
||||||
<input class="s_check" id="s_check" type="checkbox" checked />
|
<input type="hidden" id="u_id" value="{{ i[11] }}">
|
||||||
|
{% if i[9] == 0 %}
|
||||||
|
<input class="s_check" id="s_check" type="checkbox" />
|
||||||
|
{% else %}
|
||||||
|
<input class="s_check" id="s_check" type="checkbox" checked />
|
||||||
|
{% endif %}
|
||||||
Set is checked
|
Set is checked
|
||||||
</label>
|
</label>
|
||||||
<br>
|
<br>
|
||||||
<label class="checkbox" >
|
<label class="checkbox" >
|
||||||
<input type="hidden" id="set_num" value="{{ i['set_num'] }}">
|
<input type="hidden" id="set_num" value="{{ i[0] }}">
|
||||||
<input class="s_col" id="s_col" type="checkbox" checked />
|
<input type="hidden" id="u_id" value="{{ i[11] }}">
|
||||||
|
{% if i[10] == 0 %}
|
||||||
|
<input class="s_col" id="s_col" type="checkbox" />
|
||||||
|
{% else %}
|
||||||
|
<input class="s_col" id="s_col" type="checkbox" checked />
|
||||||
|
{% endif %}
|
||||||
Set is collected and boxed
|
Set is collected and boxed
|
||||||
</label>
|
</label>
|
||||||
<br>
|
<br>
|
||||||
|
<fieldset disabled>
|
||||||
<label class="checkbox" >
|
<label class="checkbox" >
|
||||||
<input type="checkbox" class="s_com" onclick="return false;"/> Set is missing pieces
|
<input type="checkbox" class="s_com" onclick="return false;"/> Set is missing pieces
|
||||||
</label>
|
</label>
|
||||||
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer class="card-footer" style="">
|
<footer class="card-footer" style="">
|
||||||
<p class="card-footer-item">
|
<p class="card-footer-item">
|
||||||
<span>
|
<span>
|
||||||
<span class="is-size-7">{{ i[12] }}</span>
|
<span class="is-size-7">{{ i[11] }}</span>
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
@ -367,7 +389,7 @@
|
|||||||
$("body").on("change", "#s_fig", function (event) {
|
$("body").on("change", "#s_fig", function (event) {
|
||||||
minif = $(this).prop('checked');
|
minif = $(this).prop('checked');
|
||||||
set_num = $(this).siblings('#set_num').val();
|
set_num = $(this).siblings('#set_num').val();
|
||||||
index = $(this).siblings('#index').val();
|
u_id = $(this).siblings('#u_id').val();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/',
|
url: '/',
|
||||||
@ -375,7 +397,7 @@
|
|||||||
data: {
|
data: {
|
||||||
'set_num': set_num,
|
'set_num': set_num,
|
||||||
'minif': minif,
|
'minif': minif,
|
||||||
'index': index
|
'u_id': u_id
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -383,7 +405,7 @@
|
|||||||
$("body").on("change", "#s_check", function (event) {
|
$("body").on("change", "#s_check", function (event) {
|
||||||
scheck = $(this).prop('checked');
|
scheck = $(this).prop('checked');
|
||||||
set_num = $(this).siblings('#set_num').val();
|
set_num = $(this).siblings('#set_num').val();
|
||||||
index = $(this).siblings('#index').val();
|
u_id = $(this).siblings('#u_id').val();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/',
|
url: '/',
|
||||||
@ -391,7 +413,7 @@
|
|||||||
data: {
|
data: {
|
||||||
'set_num': set_num,
|
'set_num': set_num,
|
||||||
'scheck': scheck,
|
'scheck': scheck,
|
||||||
'index': index
|
'u_id': u_id
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -399,7 +421,7 @@
|
|||||||
$("body").on("change", "#s_col", function (event) {
|
$("body").on("change", "#s_col", function (event) {
|
||||||
scol = $(this).prop('checked');
|
scol = $(this).prop('checked');
|
||||||
set_num = $(this).siblings('#set_num').val();
|
set_num = $(this).siblings('#set_num').val();
|
||||||
index = $(this).siblings('#index').val();
|
u_id = $(this).siblings('#u_id').val();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/',
|
url: '/',
|
||||||
@ -407,7 +429,7 @@
|
|||||||
data: {
|
data: {
|
||||||
'set_num': set_num,
|
'set_num': set_num,
|
||||||
'scol': scol,
|
'scol': scol,
|
||||||
'index': index
|
'u_id': u_id
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user