|
17 | 17 | "DATA_DIR = Path(\"./data\")\n", |
18 | 18 | "DATA_SOURCE = Path(os.environ.get(\"TOGGL_DATA\", \"./data/toggl-sample.csv\"))\n", |
19 | 19 | "\n", |
| 20 | + "PROJECT_INFO_FILE = os.environ.get(\"TOGGL_PROJECT_INFO\")\n", |
20 | 21 | "USER_INFO_FILE = os.environ.get(\"TOGGL_USER_INFO\")\n", |
21 | 22 | "\n", |
22 | 23 | "CLIENT_NAME = os.environ.get(\"HARVEST_CLIENT_NAME\")\n", |
|
29 | 30 | " return pd.to_timedelta(pd.to_datetime(td, format=\"%H:%M:%S\").strftime(\"%H:%M:%S\"))\n", |
30 | 31 | "\n", |
31 | 32 | "\n", |
32 | | - "def read_user_info():\n", |
33 | | - " with open(USER_INFO_FILE, \"r\") as ui:\n", |
| 33 | + "def read_info_file(file):\n", |
| 34 | + " with open(file, \"r\") as ui:\n", |
34 | 35 | " return json.load(ui)\n", |
35 | 36 | "\n", |
36 | 37 | "\n", |
37 | | - "def write_user_info(info):\n", |
38 | | - " with open(USER_INFO_FILE, \"w\") as ui:\n", |
| 38 | + "def write_info_file(file, info):\n", |
| 39 | + " with open(file, \"w\") as ui:\n", |
39 | 40 | " json.dump(info, ui, indent=2)" |
40 | 41 | ] |
41 | 42 | }, |
|
88 | 89 | "source[\"Task\"] = source[\"Task\"].astype(\"category\")" |
89 | 90 | ] |
90 | 91 | }, |
| 92 | + { |
| 93 | + "cell_type": "code", |
| 94 | + "execution_count": null, |
| 95 | + "metadata": {}, |
| 96 | + "outputs": [], |
| 97 | + "source": [ |
| 98 | + "# cache of previously seen project information, keyed on Toggl project name\n", |
| 99 | + "PROJECT_INFO = {}\n", |
| 100 | + "\n", |
| 101 | + "if PROJECT_INFO_FILE:\n", |
| 102 | + " file_info = read_info_file(PROJECT_INFO_FILE)\n", |
| 103 | + " PROJECT_INFO.update(file_info)\n", |
| 104 | + " print(f\"Project info: {', '.join(PROJECT_INFO.keys())}\")" |
| 105 | + ] |
| 106 | + }, |
| 107 | + { |
| 108 | + "cell_type": "code", |
| 109 | + "execution_count": null, |
| 110 | + "metadata": {}, |
| 111 | + "outputs": [], |
| 112 | + "source": [ |
| 113 | + "# get cached project name if any\n", |
| 114 | + "source[\"Project\"] = source[\"Project\"].apply(lambda x: PROJECT_INFO.get(x, x))" |
| 115 | + ] |
| 116 | + }, |
91 | 117 | { |
92 | 118 | "cell_type": "code", |
93 | 119 | "execution_count": null, |
|
99 | 125 | "NOT_FOUND = \"NOT FOUND\"\n", |
100 | 126 | "\n", |
101 | 127 | "if USER_INFO_FILE:\n", |
102 | | - " file_info = read_user_info()\n", |
| 128 | + " file_info = read_info_file(USER_INFO_FILE)\n", |
103 | 129 | " USER_INFO.update(file_info)\n", |
104 | 130 | " print(f\"User info: {', '.join(USER_INFO.keys())}\")" |
105 | 131 | ] |
|
158 | 184 | "outputs": [], |
159 | 185 | "source": [ |
160 | 186 | "if len(USER_INFO) > 0 and USER_INFO_FILE:\n", |
161 | | - " write_user_info(USER_INFO)" |
| 187 | + " write_info_file(USER_INFO_FILE, USER_INFO)" |
162 | 188 | ] |
163 | 189 | }, |
164 | 190 | { |
|
0 commit comments