Spaces:
Sleeping
Sleeping
import csv | |
from datetime import datetime | |
import re | |
import gradio as gr | |
import requests | |
# URL of the CSV file | |
CSV_URL = "https://huggingface.co/spaces/mhammad/Khanfar/raw/main/docs/your_data.csv" | |
def read_csv_from_url(url, start_date, end_date): | |
mechanics_work = {} | |
cash_amount = 0 | |
response = requests.get(url) | |
lines = response.text.split("\n") | |
reader = csv.DictReader(lines) | |
for row in reader: | |
if row['ุชูุฑูุฑ ููุงุฆู'] and 'ุดููู' in row['ุชูุฑูุฑ ููุงุฆู']: | |
try: | |
entry_date = datetime.strptime(row['ุชุงุฑูุฎ ุงูุฏุฎูู'], '%d.%m.%Y') | |
except ValueError: | |
print(f"Error parsing date for row: {row}") | |
continue | |
if start_date <= entry_date <= end_date: | |
mechanic = row['ุงุณู ุงูู ููุงูููู'].strip() # Remove trailing spaces | |
if mechanic in mechanics_work: | |
mechanics_work[mechanic]['job_count'] += 1 | |
amount_str = row['ุชูุฑูุฑ ููุงุฆู'] | |
amount = re.findall(r'(\d+(\.\d+)?) ุดููู', amount_str) | |
if amount: | |
mechanics_work[mechanic]['total_money'] += float(amount[0][0]) | |
else: | |
mechanics_work[mechanic] = {'job_count': 1, 'total_money': 0} | |
amount_str = row['ุชูุฑูุฑ ููุงุฆู'] | |
amount = re.findall(r'(\d+(\.\d+)?) ุดููู', amount_str) | |
if amount: | |
mechanics_work[mechanic]['total_money'] = float(amount[0][0]) | |
# Check if ุฑูู ุงูู ุฑูุจุฉ and ููุน ุงูู ุฑูุจู are both "ูุงุด" | |
if row['ุฑูู ุงูู ุฑูุจุฉ'].strip() == 'ูุงุด' and row['ููุน ุงูู ุฑูุจู'].strip() == 'ูุงุด': | |
cash_amount += float(re.findall(r'(\d+(\.\d+)?) ุดููู', row['ุชูุฑูุฑ ููุงุฆู'])[0][0]) | |
total_amount = sum(info['total_money'] for info in mechanics_work.values()) | |
return mechanics_work, total_amount | |
def start_processing(start_date_str, end_date_str): | |
start_date = datetime.strptime(start_date_str, '%d.%m.%Y') | |
end_date = datetime.strptime(end_date_str, '%d.%m.%Y') | |
work_by_date_range, total_amount = read_csv_from_url(CSV_URL, start_date, end_date) | |
output_text = create_output_text(work_by_date_range, total_amount, start_date, end_date) | |
return output_text | |
def create_output_text(data, total_amount, start_date, end_date): | |
output = f' ARAFAR JOB Calc. from date ({start_date.strftime("%d.%m.%Y")}) to date ({end_date.strftime("%d.%m.%Y")})\n' | |
output += '#' * 70 + '\n' | |
output += '-' * 50 + '\n' | |
output += f'Total Amount: {total_amount} ุดููู (Total Jobs: {sum(info["job_count"] for info in data.values())})\n' | |
output += '-' * 50 + '\n' | |
for mechanic, info in data.items(): | |
output += f'{mechanic}: {info["total_money"]} ุดููู (Total Jobs: {info["job_count"]})\n' | |
output += '-' * 50 + '\n' | |
return output | |
output_text = gr.Textbox(label="Output") | |
iface = gr.Interface( | |
fn=start_processing, | |
inputs=[ | |
gr.Textbox(label="ู ู ุชุงุฑูุฎ (dd.mm.yyyy)"), | |
gr.Textbox(label="ุงูู ุชุงุฑูุฎ (dd.mm.yyyy)") | |
], | |
outputs=output_text, | |
title="ุญุงุณุจุฉ ุงูุนู ู ูุงูู ูุธููู", | |
description="ุงุญุณุจ ุงูุนู ู ูุงูู ูุธููู ูู ูุชุฑุฉ ู ุนููุฉ" | |
) | |
iface.launch() | |