Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import csv
- import getpass
- import datetime
- import docx
- totalEntries = 0
- timestamp = ""
- winnerName = ""
- winnerID = ""
- winnerEmail = ""
- filename = "example.csv"
- currentUser = getpass.getuser()
- totalEntries = len([row for row in csv.reader(open(filename))]) - 1
- now = datetime.datetime.now()
- timestamp = now.strftime("%B %d, %Y %I:%M:%S %p")
- def enterFile():
- global filename
- try:
- with open(filename, newline="") as openfile:
- pass
- return filename
- except FileNotFoundError:
- while True:
- print("What is the name of the CSV file containing giveaway entrants?")
- filename = input("")
- if ".csv" not in filename:
- filename += ".csv"
- try:
- with open(filename, newline="") as openfile:
- pass
- return filename
- except FileNotFoundError:
- print(f"I don't recognize the filename '{filename}' in the local directory. Please try again.")
- def generate():
- global winningRows
- filename = enterFile()
- noOfWinners = 5
- winningNumbers = []
- nonWinningRows = []
- winnerEmails = []
- while len(winningNumbers) < noOfWinners:
- luckyNumber = random.randint(1, totalEntries)
- if luckyNumber not in winningNumbers:
- winningNumbers.append(luckyNumber)
- with open(filename, newline='\n') as entriesCSV:
- entriesDict = csv.DictReader(entriesCSV,dialect="excel")
- allRows = [row for row in entriesDict]
- winningRows = [row for row in allRows if int(row["#"]) in winningNumbers]
- for row in winningRows:
- if row["Email"] not in winnerEmails:
- winnerName = row["Name"]
- winnerID = row["ID"]
- winnerEmail = row["Email"]
- print(f"The winner is {winnerName}, ID {winnerID}, email {winnerEmail}")
- winnerEmails.append(winnerEmail)
- nonWinningRows = [row for row in allRows if int(row["#"]) not in winningNumbers and row["Email"] not in winnerEmails]
- with open(filename, "w", newline='\n') as entriesCSV:
- writer = csv.DictWriter(entriesCSV, fieldnames=["#", "Name", "ID", "Email"])
- writer.writeheader()
- writer.writerows(nonWinningRows)
- def createAuditSheet():
- global winningRows
- for index, winner in enumerate(winningRows):
- winnerName = winner["Name"]
- winnerID = winner["ID"]
- winnerEmail = winner["Email"]
- doc = docx.Document()
- doc.add_paragraph("Giveaway: __________________________________________________________________________________________")
- doc.add_paragraph("Prize: _______________________________________________________________________________________________")
- doc.add_paragraph(f"The winner is {winnerName}, ID {winnerID}, email {winnerEmail}.")
- doc.add_paragraph(f"Drawn {timestamp} by user {currentUser} from {totalEntries} total entries found in file {filename}")
- for i in range(5):
- doc.add_paragraph("")
- doc.add_paragraph("Signature _________________________________________________________________ Date ___________________")
- doc.add_paragraph("Pick Up Date ___________________")
- doc.save("GiveawayDrawingResults_%d.docx" % (index + 1))
- generate()
- createAuditSheet()
- print("Task completed.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement