Advertisement
Guest User

Untitled

a guest
Apr 12th, 2022
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.42 KB | None | 0 0
  1. import random
  2. import csv
  3. import getpass
  4. import datetime
  5. import docx
  6.  
  7. totalEntries = 0
  8. timestamp = ""
  9. winnerName = ""
  10. winnerID = ""
  11. winnerEmail = ""
  12. filename = "example.csv"
  13.  
  14. currentUser = getpass.getuser()
  15. totalEntries = len([row for row in csv.reader(open(filename))]) - 1
  16.  
  17. now = datetime.datetime.now()
  18. timestamp = now.strftime("%B %d, %Y %I:%M:%S %p")
  19.  
  20. def enterFile():
  21.     global filename
  22.     try:
  23.         with open(filename, newline="") as openfile:
  24.             pass
  25.         return filename
  26.     except FileNotFoundError:
  27.         while True:
  28.             print("What is the name of the CSV file containing giveaway entrants?")
  29.             filename = input("")
  30.             if ".csv" not in filename:
  31.                 filename += ".csv"
  32.             try:
  33.                 with open(filename, newline="") as openfile:
  34.                     pass
  35.                 return filename
  36.             except FileNotFoundError:
  37.                 print(f"I don't recognize the filename '{filename}' in the local directory. Please try again.")
  38.  
  39. def generate():
  40.     global winningRows
  41.     filename = enterFile()
  42.  
  43.     noOfWinners = 5
  44.     winningNumbers = []
  45.     nonWinningRows = []        
  46.     winnerEmails = []
  47.     while len(winningNumbers) < noOfWinners:
  48.         luckyNumber = random.randint(1, totalEntries)
  49.         if luckyNumber not in winningNumbers:
  50.             winningNumbers.append(luckyNumber)
  51.  
  52.     with open(filename, newline='\n') as entriesCSV:
  53.         entriesDict = csv.DictReader(entriesCSV,dialect="excel")
  54.         allRows = [row for row in entriesDict]
  55.         winningRows = [row for row in allRows if int(row["#"]) in winningNumbers]
  56.         for row in winningRows:
  57.             if row["Email"] not in winnerEmails:
  58.                 winnerName = row["Name"]
  59.                 winnerID = row["ID"]
  60.                 winnerEmail = row["Email"]
  61.                 print(f"The winner is {winnerName}, ID {winnerID}, email {winnerEmail}")
  62.                 winnerEmails.append(winnerEmail)
  63.         nonWinningRows = [row for row in allRows if int(row["#"]) not in winningNumbers and row["Email"] not in winnerEmails]
  64.     with open(filename, "w", newline='\n') as entriesCSV:
  65.         writer = csv.DictWriter(entriesCSV, fieldnames=["#", "Name", "ID", "Email"])
  66.         writer.writeheader()
  67.         writer.writerows(nonWinningRows)
  68.  
  69. def createAuditSheet():
  70.     global winningRows
  71.     for index, winner in enumerate(winningRows):
  72.  
  73.         winnerName = winner["Name"]
  74.         winnerID = winner["ID"]
  75.         winnerEmail = winner["Email"]
  76.  
  77.         doc = docx.Document()
  78.         doc.add_paragraph("Giveaway: __________________________________________________________________________________________")
  79.         doc.add_paragraph("Prize: _______________________________________________________________________________________________")
  80.         doc.add_paragraph(f"The winner is {winnerName}, ID {winnerID}, email {winnerEmail}.")
  81.         doc.add_paragraph(f"Drawn {timestamp} by user {currentUser} from {totalEntries} total entries found in file {filename}")
  82.         for i in range(5):
  83.             doc.add_paragraph("")
  84.         doc.add_paragraph("Signature _________________________________________________________________ Date ___________________")
  85.         doc.add_paragraph("Pick Up Date ___________________")
  86.         doc.save("GiveawayDrawingResults_%d.docx" % (index + 1))
  87.  
  88. generate()
  89. createAuditSheet()
  90. print("Task completed.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement