Delete edit_time.py
This commit is contained in:
@@ -1,90 +0,0 @@
|
|||||||
import sqlite3
|
|
||||||
import os
|
|
||||||
|
|
||||||
def connect_db():
|
|
||||||
db_file = 'time_tracker.db'
|
|
||||||
if not os.path.exists(db_file):
|
|
||||||
print(f"Error: Database file '{db_file}' not found.")
|
|
||||||
return None
|
|
||||||
return sqlite3.connect(db_file)
|
|
||||||
|
|
||||||
def display_entry_details(entry):
|
|
||||||
print("\n--- Current Entry Details ---")
|
|
||||||
print(f"ID: {entry[0]} | Project: {entry[1]} | Date: {entry[4]}")
|
|
||||||
print(f"Description: {entry[2]}")
|
|
||||||
print(f"Hours: {entry[5]}")
|
|
||||||
print("-" * 30)
|
|
||||||
|
|
||||||
def edit_time_entry():
|
|
||||||
conn = connect_db()
|
|
||||||
if not conn: return
|
|
||||||
cursor = conn.cursor()
|
|
||||||
|
|
||||||
try:
|
|
||||||
# 1. Select Client
|
|
||||||
cursor.execute('SELECT client_id, client_name FROM clients ORDER BY client_name')
|
|
||||||
clients = cursor.fetchall()
|
|
||||||
|
|
||||||
print("\n--- Select Client to Edit Time ---")
|
|
||||||
for cid, name in clients:
|
|
||||||
print(f"{cid}: {name}")
|
|
||||||
|
|
||||||
client_id = input("\nEnter Client ID (or 0 to go back): ")
|
|
||||||
if client_id == '0' or not client_id: return
|
|
||||||
|
|
||||||
while True:
|
|
||||||
# 2. List Uninvoiced Entries for Client
|
|
||||||
cursor.execute('''SELECT entry_id, project, description, invoiced, date, hours
|
|
||||||
FROM time_tracking WHERE client_id = ? AND invoiced = 0
|
|
||||||
ORDER BY date DESC''', (client_id,))
|
|
||||||
entries = cursor.fetchall()
|
|
||||||
|
|
||||||
if not entries:
|
|
||||||
print("No uninvoiced entries found for this client.")
|
|
||||||
break
|
|
||||||
|
|
||||||
print(f"\n--- Time Entries for Client {client_id} ---")
|
|
||||||
for e in entries:
|
|
||||||
print(f"ID {e[0]}: [{e[4]}] {e[1]} - {e[5]} hrs")
|
|
||||||
print("0: Back to Main Menu")
|
|
||||||
|
|
||||||
entry_choice = input("\nSelect Entry ID to edit: ")
|
|
||||||
if entry_choice == '0': break
|
|
||||||
|
|
||||||
# Find the specific entry
|
|
||||||
selected_entry = next((e for e in entries if str(e[0]) == entry_choice), None)
|
|
||||||
if not selected_entry:
|
|
||||||
print("Invalid Entry ID.")
|
|
||||||
continue
|
|
||||||
|
|
||||||
# 3. Edit Fields one by one
|
|
||||||
display_entry_details(selected_entry)
|
|
||||||
|
|
||||||
# Project
|
|
||||||
new_project = input(f"Project [{selected_entry[1]}]: ") or selected_entry[1]
|
|
||||||
# Description
|
|
||||||
new_desc = input(f"Description [{selected_entry[2]}]: ") or selected_entry[2]
|
|
||||||
# Date
|
|
||||||
new_date = input(f"Date [{selected_entry[4]}]: ") or selected_entry[4]
|
|
||||||
# Hours
|
|
||||||
new_hours_raw = input(f"Hours [{selected_entry[5]}]: ")
|
|
||||||
new_hours = float(new_hours_raw) if new_hours_raw else selected_entry[5]
|
|
||||||
|
|
||||||
# 4. Update Database
|
|
||||||
cursor.execute('''UPDATE time_tracking
|
|
||||||
SET project = ?, description = ?, date = ?, hours = ?
|
|
||||||
WHERE entry_id = ?''',
|
|
||||||
(new_project, new_desc, new_date, new_hours, entry_choice))
|
|
||||||
conn.commit()
|
|
||||||
|
|
||||||
print("\nUpdate Successful! New Values:")
|
|
||||||
print(f"Project: {new_project}\nDescription: {new_desc}\nDate: {new_date}\nHours: {new_hours}")
|
|
||||||
print("="*30)
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
print(f"An error occurred: {e}")
|
|
||||||
finally:
|
|
||||||
conn.close()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
edit_time_entry()
|
|
||||||
Reference in New Issue
Block a user