import mariadb from flask import current_app def get_db_connection(): """Get database connection using external server configuration""" settings_file = current_app.instance_path + '/external_server.conf' settings = {} with open(settings_file, 'r') as f: for line in f: key, value = line.strip().split('=', 1) settings[key] = value return mariadb.connect( user=settings['username'], password=settings['password'], host=settings['server_domain'], port=int(settings['port']), database=settings['database_name'] ) def get_unprinted_orders_data(limit=100): """ Retrieve unprinted orders from the database for display Returns list of order dictionaries where printed_labels != 1 """ try: conn = get_db_connection() cursor = conn.cursor() # Check if printed_labels column exists cursor.execute("SHOW COLUMNS FROM order_for_labels LIKE 'printed_labels'") column_exists = cursor.fetchone() if column_exists: # Use printed_labels column cursor.execute(""" SELECT id, comanda_productie, cod_articol, descr_com_prod, cantitate, com_achiz_client, nr_linie_com_client, customer_name, customer_article_number, open_for_order, line_number, created_at, updated_at, printed_labels, data_livrare, dimensiune FROM order_for_labels WHERE printed_labels != 1 ORDER BY created_at DESC LIMIT %s """, (limit,)) else: # Fallback: get all orders if no printed_labels column cursor.execute(""" SELECT id, comanda_productie, cod_articol, descr_com_prod, cantitate, com_achiz_client, nr_linie_com_client, customer_name, customer_article_number, open_for_order, line_number, created_at, updated_at FROM order_for_labels ORDER BY created_at DESC LIMIT %s """, (limit,)) orders = [] for row in cursor.fetchall(): if column_exists: orders.append({ 'id': row[0], 'comanda_productie': row[1], 'cod_articol': row[2], 'descr_com_prod': row[3], 'cantitate': row[4], 'com_achiz_client': row[5], 'nr_linie_com_client': row[6], 'customer_name': row[7], 'customer_article_number': row[8], 'open_for_order': row[9], 'line_number': row[10], 'created_at': row[11], 'updated_at': row[12], 'printed_labels': row[13], 'data_livrare': row[14] or '-', 'dimensiune': row[15] or '-' }) else: orders.append({ 'id': row[0], 'comanda_productie': row[1], 'cod_articol': row[2], 'descr_com_prod': row[3], 'cantitate': row[4], 'com_achiz_client': row[5], 'nr_linie_com_client': row[6], 'customer_name': row[7], 'customer_article_number': row[8], 'open_for_order': row[9], 'line_number': row[10], 'created_at': row[11], 'updated_at': row[12], # Add default values for missing columns 'data_livrare': '-', 'dimensiune': '-', 'printed_labels': 0 }) conn.close() return orders except Exception as e: print(f"Error retrieving unprinted orders: {e}") return []