Skip to content

Instantly share code, notes, and snippets.

@jdewinne
Last active July 3, 2018 21:56
Show Gist options
  • Save jdewinne/f5f0dab928a565603a1f5bf0506ef954 to your computer and use it in GitHub Desktop.
Save jdewinne/f5f0dab928a565603a1f5bf0506ef954 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
# This script processes a JSON data file and updates all dates in the demo data.
# It does this by comparing the dates in the demo data with a reference date for the data set.
# All dates are updated to be exactly the same number of days from today as they were from the reference date (either in the future or in the past).
# This updates the demo data to always be "current".
import json
import sys
import re
import datetime
from datetime import date
if (len(sys.argv) < 3):
print "Usage: actualize-data.py [datafile] [output file]"
exit(1)
dataFile = sys.argv[1]
with open(dataFile) as f:
data = json.load(f)
dataSetReferenceDate = datetime.datetime.strptime(data[0]['dueDate'].split('T')[0], "%Y-%m-%d").date()
outputFile = sys.argv[2]
inFile = open(dataFile)
outFile = open(outputFile, 'w+')
p = re.compile("([0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2})T[0-9]{2,2}:[0-9]{2,2}:[0-9]{2,2}")
currentDate = date.today()
deltaDays = currentDate - dataSetReferenceDate
print "Updating XL release data set.\n"
print "Data set filename: " + str(dataFile)
print "Data set reference date: " + str(dataSetReferenceDate)
print "Current date: " + str(currentDate)
print "Delta to apply: " + str(deltaDays)
print "Output filename: " + str(outputFile)
for line in inFile:
line = line.rstrip()
m = p.search(line)
if (m):
dataSetDate = datetime.datetime.strptime(m.group(1), "%Y-%m-%d").date()
#print "Ref date: " + str(dataSetReferenceDate) + ", days since ref date: " + str(deltaDays)
newDataSetDate = dataSetDate + deltaDays
#print "Data set date: " + str(dataSetDate) + ", new date: " + str(newDataSetDate)
print >>outFile, re.sub(m.group(1), str(newDataSetDate), line)
else:
print >>outFile, line
inFile.close()
outFile.close()
print "Done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment