forked from Alsan/Post_finder
16 test
This commit is contained in:
parent
5943a8943b
commit
ff69d6725b
136
test_apps/test_app16.py
Normal file
136
test_apps/test_app16.py
Normal file
@ -0,0 +1,136 @@
|
||||
import pandas as pd
|
||||
from flask import Flask, request, render_template_string, session
|
||||
import os
|
||||
|
||||
app = Flask(__name__)
|
||||
app.secret_key = "supersecretkey" # Required for session management
|
||||
|
||||
# Directory to store temporarily uploaded files
|
||||
UPLOAD_FOLDER = 'uploaded_files'
|
||||
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
|
||||
|
||||
@app.route('/', methods=['GET', 'POST'])
|
||||
def index():
|
||||
result_html = ""
|
||||
file_path = session.get('uploaded_file') # Retrieve the path of the uploaded file from the session
|
||||
uploaded_file_name = session.get('uploaded_file_name', "") # Get the uploaded file name
|
||||
|
||||
if request.method == 'POST':
|
||||
# Handle file upload if provided
|
||||
if 'file' in request.files and request.files['file'].filename:
|
||||
file = request.files['file']
|
||||
filename = file.filename
|
||||
|
||||
if not filename.endswith(('.xls', '.xlsx')):
|
||||
result_html = "<p style='color: red;'>Unsupported file type. Please upload an Excel file.</p>"
|
||||
else:
|
||||
# Save the uploaded file
|
||||
file_path = os.path.join(UPLOAD_FOLDER, filename)
|
||||
file.save(file_path)
|
||||
session['uploaded_file'] = file_path # Save the file path to the session
|
||||
session['uploaded_file_name'] = filename # Save the file name to the session
|
||||
uploaded_file_name = filename # Update the displayed file name
|
||||
result_html = "<p style='color: green;'>File uploaded successfully.</p>"
|
||||
|
||||
# Process tracking number search if a file is already uploaded
|
||||
if file_path and 'tracking_no' in request.form:
|
||||
tracking_no = request.form['tracking_no']
|
||||
try:
|
||||
# Read all sheets from the Excel file
|
||||
sheet_data = pd.read_excel(file_path, sheet_name=None, header=None, dtype=str)
|
||||
|
||||
# Flags and variables
|
||||
tracking_found = False
|
||||
mail_bag_no = None
|
||||
hash_value = None # To store the # value
|
||||
|
||||
# Process each sheet
|
||||
for sheet_name, df in sheet_data.items():
|
||||
# Iterate through every row and column to search for the tracking number
|
||||
for row_idx, row in df.iterrows():
|
||||
for col_idx, cell in row.items():
|
||||
# Convert cell to string before searching
|
||||
cell_str = str(cell)
|
||||
|
||||
# Check if the tracking number exists in the current cell
|
||||
if tracking_no.lower() in cell_str.lower():
|
||||
tracking_found = True
|
||||
# Adjusting the row and column for user-friendly display (starting from 1)
|
||||
adjusted_row_idx = row_idx + 1
|
||||
adjusted_col_idx = col_idx + 1
|
||||
result_html += f"<h3>Tracking No: {tracking_no} found in sheet '{sheet_name}'</h3>"
|
||||
result_html += f"<p><strong>Row {adjusted_row_idx}, Column {adjusted_col_idx}:</strong> {cell_str}</p>"
|
||||
|
||||
# Fetch Mail Bag No from rows 4 and 5, columns C and D (non-zero-based indexing)
|
||||
try:
|
||||
mail_bag_no_parts = [
|
||||
str(df.iloc[3, 2]) if not pd.isna(df.iloc[3, 2]) else "",
|
||||
str(df.iloc[3, 3]) if not pd.isna(df.iloc[3, 3]) else ""
|
||||
]
|
||||
mail_bag_no = " ".join(part for part in mail_bag_no_parts if part.strip())
|
||||
except IndexError:
|
||||
mail_bag_no = None
|
||||
|
||||
# Fetch # value from column A in the same row as the tracking number
|
||||
try:
|
||||
hash_value = df.iloc[row_idx, 0] # Column A is index 0
|
||||
if pd.isna(hash_value):
|
||||
hash_value = None
|
||||
except IndexError:
|
||||
hash_value = None
|
||||
|
||||
# Break inner loops once tracking number is found
|
||||
break
|
||||
if tracking_found:
|
||||
break
|
||||
if tracking_found:
|
||||
break
|
||||
|
||||
# Display the Mail Bag No and # value if found
|
||||
if tracking_found and mail_bag_no:
|
||||
result_html += f"<p><strong>Mail Bag No:</strong> {mail_bag_no}</p>"
|
||||
elif tracking_found:
|
||||
result_html += f"<p><strong>Mail Bag No:</strong> Not found</p>"
|
||||
|
||||
if tracking_found and hash_value:
|
||||
result_html += f"<p><strong>#:</strong> {hash_value}</p>"
|
||||
elif tracking_found:
|
||||
result_html += f"<p><strong>#:</strong> Not found</p>"
|
||||
|
||||
# If no tracking number was found, display a message
|
||||
if not tracking_found:
|
||||
result_html += f"<p>No data found for Tracking No: {tracking_no}</p>"
|
||||
|
||||
except Exception as e:
|
||||
result_html = f"<p style='color: red;'>Error processing file: {e}</p>"
|
||||
|
||||
elif not file_path:
|
||||
result_html = "<p style='color: red;'>Please upload a file before searching.</p>"
|
||||
|
||||
# Render the combined page
|
||||
return render_template_string('''
|
||||
<h2>Upload Excel File</h2>
|
||||
<form id="uploadForm" action="/" method="post" enctype="multipart/form-data">
|
||||
<label for="fileInput" style="cursor: pointer; padding: 5px; background-color: #f0f0f0; border: 1px solid #ccc;">Browse...</label>
|
||||
<input type="file" name="file" id="fileInput" style="display:none;" onchange="updateFileName()">
|
||||
<span id="fileName">{{ uploaded_file_name }}</span>
|
||||
<br><br>
|
||||
<input type="text" name="tracking_no" placeholder="Enter Tracking No">
|
||||
<br><br>
|
||||
<input type="submit" value="Search">
|
||||
</form>
|
||||
<hr>
|
||||
{{ result_html|safe }
|
||||
|
||||
<script>
|
||||
function updateFileName() {
|
||||
const fileInput = document.getElementById('fileInput');
|
||||
const fileName = document.getElementById('fileName');
|
||||
fileName.textContent = fileInput.files.length > 0 ? fileInput.files[0].name : "";
|
||||
}
|
||||
</script>
|
||||
''', result_html=result_html, uploaded_file_name=uploaded_file_name)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True, port=5000, host='0.0.0.0')
|
Loading…
x
Reference in New Issue
Block a user