|
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_FILE\")\n", |
20 | 21 | "USER_INFO_FILE = os.environ.get(\"TOGGL_USER_INFO_FILE\")\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