Skip to content

Feature logging enhancement #333

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 55 additions & 32 deletions Automated_Mailing/mail.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,56 @@
import pandas as pd
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


from_addr='ENTER_SENDERS_MAILID'

data=pd.read_csv("abc.csv") # Enter path of CSV files containing emails
to_addr=data['email'].tolist() # Change'email' to column name containg emailids
name = data['name'].tolist()

l=len(name)
email="" #Enter Your email id here
password="" #Enter your Password

for i in range (l):
msg=MIMEMultipart()
msg['From']=from_addr
msg['To']=to_addr[i]
msg['Subject']='Just to Check'

body=name[i]+'Enter your content here'

msg.attach(MIMEText(body,'plain'))

mail=smtplib.SMTP('smtp.gmail.com',587)
mail.ehlo()
mail.starttls()
mail.login(email,password)
text=msg.as_string()
mail.sendmail(from_addr,to_addr[i],text)
mail.quit()
import os
import pandas as pd
from email.message import EmailMessage

def send_email(to_email, subject, body, attachment_path=None):
try:
# Email Credentials (Replace with actual credentials or environment variables)
EMAIL_ADDRESS = os.getenv('EMAIL_USER', '[email protected]')
EMAIL_PASSWORD = os.getenv('EMAIL_PASS', 'yourpassword')

# Setup Email
msg = EmailMessage()
msg['From'] = EMAIL_ADDRESS
msg['To'] = to_email
msg['Subject'] = subject
msg.set_content(body)

# Attach file if provided
if attachment_path:
try:
with open(attachment_path, 'rb') as f:
file_data = f.read()
file_name = os.path.basename(attachment_path)
msg.add_attachment(file_data, maintype='application', subtype='octet-stream', filename=file_name)
print(f"Attachment {file_name} added successfully.")
except FileNotFoundError:
print("Error: Attachment file not found.")
return

# Send Email
with smtplib.SMTP('smtp.example.com', 587) as server:
server.starttls()
server.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
server.send_message(msg)
print(f"Email sent to {to_email}")

# Log email details
log_email(to_email, subject, attachment_path)

except smtplib.SMTPException as e:
print(f"SMTP error occurred: {e}")

def log_email(to_email, subject, attachment):
log_file = 'email_log.csv'
log_data = {'Recipient': [to_email], 'Subject': [subject], 'Attachment': [attachment]}
df = pd.DataFrame(log_data)

if os.path.exists(log_file):
df.to_csv(log_file, mode='a', header=False, index=False)
else:
df.to_csv(log_file, mode='w', header=True, index=False)
print("Email logged successfully.")

# Example Usage
send_email("[email protected]", "Test Subject", "This is a test email.", "test.pdf")
8 changes: 8 additions & 0 deletions Color_Game/app.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
2025-02-01 18:06:14,487 - INFO - Program started
2025-02-01 18:06:14,488 - ERROR - File not found: sample.txt
2025-02-01 18:11:13,183 - INFO - Program started
2025-02-01 18:11:13,184 - ERROR - File not found: sample.txt
2025-02-01 18:16:15,139 - INFO - Program started
2025-02-01 18:16:15,139 - INFO - Successfully read file: sample.txt
2025-02-01 18:16:15,139 - INFO - Data successfully processed
2025-02-01 18:16:15,139 - INFO - Program completed successfully
148 changes: 54 additions & 94 deletions Color_Game/main.py
Original file line number Diff line number Diff line change
@@ -1,99 +1,59 @@
import random
import tkinter as tk
from tkinter import messagebox

colours = ['Red', 'Blue', 'Green', 'Yellow', 'Orange', 'Purple', 'Pink', 'Black', 'White']
score = 0
timeleft = 30

def next_colour():
global score, timeleft

if timeleft > 0:
user_input = e.get().lower()
correct_color = colours[1].lower()

if user_input == correct_color:
score += 1

e.delete(0, tk.END)
random.shuffle(colours)
label.config(fg=colours[1], text=colours[0])
score_label.config(text=f"Score: {score}")


def countdown():
global timeleft
if timeleft > 0:
timeleft -= 1
time_label.config(text=f"Time left: {timeleft}")
time_label.after(1000, countdown)
else:
# messagebox.showwarning ('Attention', 'Your time is out!!')
scoreshow()


def record_highest_score():
highest_score = load_highest_score()
if score > highest_score:
with open("highest_score.txt", "w") as file:
file.write(str(score))



def load_highest_score():
import logging
import os

# Configure logging
logging.basicConfig(
filename="app.log",
level=logging.DEBUG,
format="%(asctime)s - %(levelname)s - %(message)s",
)

def read_file(filename):
""" Reads content from a file """
try:
with open("highest_score.txt", "r") as file:
data = file.read()
if data:
return int(data)
else:
return 0
with open(filename, "r") as file:
content = file.read()
logging.info(f"Successfully read file: {filename}")
return content
except FileNotFoundError:
return 0


def scoreshow():
record_highest_score()
window2 = tk.Tk()
window2.title("HIGH SCORE")
window2.geometry("300x200")

label = tk.Label(window2, text=f"Highest Score: {load_highest_score()}",font=(font, 12))

label.pack()

window2.mainloop()

def start_game(event):
global timeleft
if timeleft == 30:
countdown()
next_colour()

window = tk.Tk()
font = 'Helvetica'
window.title("Color Game")
window.iconbitmap("color_game_icon.ico")
window.geometry("375x250")
window.resizable(False, False)

instructions = tk.Label(window, text="Enter the color of the text, not the word!", font=(font, 12))
instructions.pack(pady=10)

score_label = tk.Label(window, text="Press Enter to start", font=(font, 12))
score_label.pack()

time_label = tk.Label(window, text=f"Time left: {timeleft}", font=(font, 12))
time_label.pack()

label = tk.Label(window, font=(font, 60))
label.pack(pady=20)
logging.error(f"File not found: {filename}")
return "Error: File not found."
except Exception as e:
logging.error(f"Unexpected error while reading file: {e}")
return "Error: Unable to read file."

def process_data(data):
""" Processes the data (dummy function) """
try:
if not data:
raise ValueError("No data provided for processing")
processed = data.upper()
logging.info("Data successfully processed")
return processed
except ValueError as ve:
logging.error(f"Processing error: {ve}")
return "Error: No valid data to process."
except Exception as e:
logging.error(f"Unexpected error in processing: {e}")
return "Error: Data processing failed."

def main():
""" Main function that runs the program """
logging.info("Program started")

filename = "sample.txt"

# Read file content
file_content = read_file(filename)
if "Error" in file_content:
print(file_content)
return

e = tk.Entry(window)
window.bind('<Return>', start_game)
e.pack()
# Process file content
result = process_data(file_content)
print(result)

e.focus_set()
logging.info("Program completed successfully")

window.mainloop()
if __name__ == "__main__":
main()
1 change: 1 addition & 0 deletions Color_Game/sample.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is a test file for Color_Game.
4 changes: 4 additions & 0 deletions app.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
2025-02-01 18:12:16,523 - INFO - Program started
2025-02-01 18:12:16,523 - ERROR - File not found: sample.txt
2025-02-01 18:16:28,805 - INFO - Program started
2025-02-01 18:16:28,805 - ERROR - File not found: sample.txt