zmiany ux i nowe funckje
This commit is contained in:
79
app.py
79
app.py
@@ -35,20 +35,6 @@ UPLOAD_FOLDER = app.config.get('UPLOAD_FOLDER', 'uploads')
|
||||
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'webp'}
|
||||
AUTHORIZED_COOKIE_VALUE = app.config.get('AUTHORIZED_COOKIE_VALUE', '80d31cdfe63539c9')
|
||||
|
||||
PROTECTED_JS_FILES = {
|
||||
"live.js",
|
||||
"notes.js",
|
||||
"sockets.js",
|
||||
"product_suggestion.js",
|
||||
"expenses.js",
|
||||
"toggle_button.js",
|
||||
"user_management.js",
|
||||
"mass_add.js",
|
||||
"functions.js",
|
||||
"clickable_row.js",
|
||||
"receipt_section.js"
|
||||
}
|
||||
|
||||
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
|
||||
|
||||
failed_login_attempts = defaultdict(deque)
|
||||
@@ -273,7 +259,7 @@ def require_system_password():
|
||||
|
||||
if request.endpoint == 'static_bp.serve_js':
|
||||
requested_file = request.view_args.get("filename", "")
|
||||
if requested_file in PROTECTED_JS_FILES:
|
||||
if requested_file.endswith(".js"):
|
||||
return redirect(url_for('system_auth', next=request.url))
|
||||
else:
|
||||
return
|
||||
@@ -596,7 +582,7 @@ def all_products():
|
||||
|
||||
return {'allproducts': all_names}
|
||||
|
||||
@app.route('/upload_receipt/<int:list_id>', methods=['POST'])
|
||||
""" @app.route('/upload_receipt/<int:list_id>', methods=['POST'])
|
||||
def upload_receipt(list_id):
|
||||
if 'receipt' not in request.files:
|
||||
flash('Brak pliku', 'danger')
|
||||
@@ -618,6 +604,41 @@ def upload_receipt(list_id):
|
||||
return redirect(request.referrer)
|
||||
|
||||
flash('Niedozwolony format pliku', 'danger')
|
||||
return redirect(request.referrer) """
|
||||
|
||||
@app.route('/upload_receipt/<int:list_id>', methods=['POST'])
|
||||
def upload_receipt(list_id):
|
||||
if 'receipt' not in request.files:
|
||||
if request.is_json or request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||
return jsonify({'success': False, 'message': 'Brak pliku'}), 400
|
||||
flash('Brak pliku', 'danger')
|
||||
return redirect(request.referrer)
|
||||
|
||||
file = request.files['receipt']
|
||||
|
||||
if file.filename == '':
|
||||
if request.is_json or request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||
return jsonify({'success': False, 'message': 'Nie wybrano pliku'}), 400
|
||||
flash('Nie wybrano pliku', 'danger')
|
||||
return redirect(request.referrer)
|
||||
|
||||
if file and allowed_file(file.filename):
|
||||
filename = secure_filename(file.filename)
|
||||
full_filename = f"list_{list_id}_{filename}"
|
||||
file_path = os.path.join(app.config['UPLOAD_FOLDER'], full_filename)
|
||||
|
||||
save_resized_image(file, file_path)
|
||||
|
||||
if request.is_json or request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||
url = url_for('uploaded_file', filename=full_filename)
|
||||
return jsonify({'success': True, 'url': url})
|
||||
|
||||
flash('Wgrano paragon', 'success')
|
||||
return redirect(request.referrer)
|
||||
|
||||
if request.is_json or request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||
return jsonify({'success': False, 'message': 'Niedozwolony format pliku'}), 400
|
||||
flash('Niedozwolony format pliku', 'danger')
|
||||
return redirect(request.referrer)
|
||||
|
||||
@app.route('/uploads/<filename>')
|
||||
@@ -1096,10 +1117,19 @@ def demote_user(user_id):
|
||||
def handle_delete_item(data):
|
||||
item = Item.query.get(data['item_id'])
|
||||
if item:
|
||||
list_id = item.list_id
|
||||
db.session.delete(item)
|
||||
db.session.commit()
|
||||
emit('item_deleted', {'item_id': item.id}, to=str(item.list_id))
|
||||
|
||||
purchased_count, total_count, percent = get_progress(list_id)
|
||||
|
||||
emit('progress_updated', {
|
||||
'purchased_count': purchased_count,
|
||||
'total_count': total_count,
|
||||
'percent': percent
|
||||
}, to=str(list_id))
|
||||
|
||||
@socketio.on('edit_item')
|
||||
def handle_edit_item(data):
|
||||
item = Item.query.get(data['item_id'])
|
||||
@@ -1188,6 +1218,14 @@ def handle_add_item(data):
|
||||
'added_by': current_user.username if current_user.is_authenticated else 'Gość'
|
||||
}, to=str(list_id), include_self=True)
|
||||
|
||||
purchased_count, total_count, percent = get_progress(list_id)
|
||||
|
||||
emit('progress_updated', {
|
||||
'purchased_count': purchased_count,
|
||||
'total_count': total_count,
|
||||
'percent': percent
|
||||
}, to=str(list_id))
|
||||
|
||||
@socketio.on('check_item')
|
||||
def handle_check_item(data):
|
||||
item = Item.query.get(data['item_id'])
|
||||
@@ -1265,6 +1303,15 @@ def handle_add_expense(data):
|
||||
'total': total
|
||||
}, to=str(list_id))
|
||||
|
||||
@socketio.on('receipt_uploaded')
|
||||
def handle_receipt_uploaded(data):
|
||||
list_id = data['list_id']
|
||||
url = data['url']
|
||||
|
||||
emit('receipt_added', {
|
||||
'url': url
|
||||
}, to=str(list_id), include_self=False)
|
||||
|
||||
@app.cli.command('create_db')
|
||||
def create_db():
|
||||
db.create_all()
|
||||
|
Reference in New Issue
Block a user