proof of concept shifting date

This commit is contained in:
benjamin melançon 2021-12-12 12:19:07 -05:00
parent 1f8e7a01db
commit 99b4d47e3c

View file

@ -89,6 +89,23 @@ timelog['description'] = (np.where(timelog['description'].str.contains(': '), ti
timelog['description'] = timelog['description'].str.strip() timelog['description'] = timelog['description'].str.strip()
timelog['project'] = timelog['project'].str.strip() timelog['project'] = timelog['project'].str.strip()
timelog['tmp_timeshift'] = timelog['description'].str.extract(r'^(\(.+)\)', expand=False)
timelog['tmp_timeshift'] = timelog['tmp_timeshift'].str.strip().str.replace("(","")
# In an ideal world we would use https://github.com/bear/parsedatetime or similar and
# even better figure out the right date for strings like "Monday" but eh this'll do.
timeshift_days = {
-1: ['one day ago', '1 day ago', 'yesterday'],
-2: ['two days ago', '2 days ago', 'day before yesterday', 'the day before yesterday'],
-3: ['three days ago', '3 days ago'],
-4: ['four days ago', '4 days ago'],
-5: ['five days ago', '5 days ago'],
}
for days, phrases in timeshift_days.items():
phrases.append(str(days))
timelog.loc[timelog.tmp_timeshift.str.lower().isin(phrases), "tmp_daysdelta"] = int(days)
timelog['tmp_daysdelta'] = timelog['tmp_daysdelta'].fillna(0)
timelog['date'] = timelog['date'] + pd.to_timedelta(timelog['tmp_daysdelta'], unit='D')
# If a multiplier has been provided (an asterisk and an integer at the end of a # If a multiplier has been provided (an asterisk and an integer at the end of a
# task), then multiply the time by it and remove it from the description. # task), then multiply the time by it and remove it from the description.
# Ensure we're splitting on the same asterisk we found: Use the end of string # Ensure we're splitting on the same asterisk we found: Use the end of string