Time Booking Script
import csv
import datetime
import re
def createCleanTimes(inputFile, outputFile):
rows = importTimes(inputFile)
rows.pop(0)
newRows = [['Date', 'Time', 'Notes']]
for row in rows:
newRows.append(buildBetterRow(row))
writeOutput(outputFile, newRows)
return
def checkOutput(filePath):
#rows = [
# ["2022-12-01", "2022-12-01 08:00:00", "2022-12-01 10:00:00", "Ticket", "177"],
# ["2022-12-01", "2022-12-01 10:00:00", "2022-12-01 13:00:00", "Scrum", "Review+Planning"],
# ["2022-12-01", "2022-12-01 14:00:00", "2022-12-01 16:00:00", "Meeting", "Zeit buchen"]
#]
rows = importTimes(filePath)
rows.pop(0)
# don't output until all rows are done, to avoid missing an error
toDisplay = []
for row in rows:
toDisplay.append(buildBetterRow(row))
for display in toDisplay:
print(display)
def importTimes(filePath):
with open(filePath) as file:
csvReader = csv.reader(file, delimiter=";", quotechar='"')
timeData = [row for row in csvReader]
return timeData
def buildBetterRow(row):
date = betterDate(row[0])
time = verifiedTime(row[1])
task = row[2]
notes = row[3]
return [date, time, calculateTicketIfPossible(task, notes)]
def betterDate(dotSeparated):
return "-".join(reversed(dotSeparated.split(".")))
def verifiedTime(time):
if time == "00:00":
raise ValueError("Invalid time " + time)
return time
def calculateTicketIfPossible(task, notes):
if isRelTicket(notes):
return "REL-{}".format(notes)
if isGeneralTicket(notes):
return notes
if task == "Scrum":
return "REL-148"
if task == "Meeting":
return "REL-145"
if task == "SpecOps":
return "REL-376"
if task == "Test Session":
return "REL-374"
if task == "Onboarding":
return "REL-155"
if task == "MTOP Lead":
return "REL-156"
if task == "Ticket":
return notes
return "{} - {}".format(task, notes)
def isRelTicket(possiblyTicket):
pattern = re.compile("[0-9]{1,6}")
return not pattern.fullmatch(possiblyTicket) == None
def isGeneralTicket(possiblyTicket):
pattern = re.compile("[A-Z]{1,3}-[0-9]{1,6}")
return not pattern.fullmatch(possiblyTicket) == None
def writeOutput(filePath, csvArray):
with open(filePath, "w") as file:
csvFile = csv.writer(file)
for row in csvArray:
csvFile.writerow(row)
fileDirectory = "/Users/jeffrey.maier/dev/resources/timebooking/2024_10_21-2024_11_18/"
inputFile = fileDirectory + "20241021_20241118.csv"
outputFile = fileDirectory + "updated_time_rec.csv"
checkOutput(inputFile)
createCleanTimes(inputFile, outputFile)