diff --git a/src/pages/dashboard.py b/src/pages/dashboard.py index a8a53347506ee7719cf17797c80f5121a0892cc3..b965041b5c9ad4aa894c20d401e7f113b3ebb121 100644 --- a/src/pages/dashboard.py +++ b/src/pages/dashboard.py @@ -850,7 +850,8 @@ def get_my_jobs_from_db(user_id=None, language_id=0): if user_id: conn = sqlite3.connect(DATA_PATH.joinpath('destine_de370c_users.db')) cur = conn.cursor() - cur.execute(f"SELECT application, status, start_date, forecast_length, region, species, metric, emis_scen, creation_date, id FROM jobs WHERE user_id={user_id}") + cmd = f"SELECT {', '.join(guiconst.job_fields)} FROM jobs WHERE user_id={user_id}" + cur.execute(cmd) data_rows_from_db = cur.fetchall() cur.execute("SELECT job_status, id FROM convoc_status") convoc_status_from_db = cur.fetchall() @@ -864,25 +865,28 @@ def get_my_jobs_from_db(user_id=None, language_id=0): # ==> there should be a refresh, whenever this tab is reloaded! for job in data_rows_from_db: - job_status = job[1] + job_dict = {} + for i, field in enumerate(guiconst.job_fields): + job_dict[field] = job[i] + job_status = job_dict['status'] if (job_status == convoc_status_dict['active']) or (job_status == convoc_status_dict['waiting']): - new_status = get_job_status(job[9].upper(), job[0], convoc_status_dict) + new_status = get_job_status(job_dict['id'].upper(), job_dict['application'], convoc_status_dict) if job_status != new_status: - change_status_of_job(job[9], new_status) + change_status_of_job(job_dict['id'], new_status) job_status = new_status - data_from_db.append({guitr.jobs_columns[language_id][0]: guitr.application_text[language_id][job[0]], + data_from_db.append({guitr.jobs_columns[language_id][0]: guitr.application_text[language_id][job_dict['application']], guitr.jobs_columns[language_id][1]: guitr.status_text[language_id][job_status], - guitr.jobs_columns[language_id][2]: dt.datetime.strptime(job[2],'%Y-%m-%d %H:%M').strftime(guitr.date_format2[language_id]), - guitr.jobs_columns[language_id][3]: "{} {}{}".format(job[3], guitr.day_label[language_id], guitr.day_plural_label[language_id] if job[3] > 1 else ""), - guitr.jobs_columns[language_id][4]: guitr.region_text[language_id][job[4]], - guitr.jobs_columns[language_id][5]: "{}".format(guitr.species_options[language_id][job[5]] if job[5] is not None \ + guitr.jobs_columns[language_id][2]: dt.datetime.strptime(job_dict['start_date'],'%Y-%m-%d %H:%M').strftime(guitr.date_format2[language_id]), + guitr.jobs_columns[language_id][3]: "{} {}{}".format(job_dict['forecast_length'], guitr.day_label[language_id], guitr.day_plural_label[language_id] if job_dict['forecast_length'] > 1 else ""), + guitr.jobs_columns[language_id][4]: guitr.region_text[language_id][job_dict['region']], + guitr.jobs_columns[language_id][5]: "{}".format(guitr.species_options[language_id][job_dict['species']] if job_dict['species'] is not None \ else ",".join(guitr.species_options[language_id])), - guitr.jobs_columns[language_id][6]: "{}".format(guitr.metrics_options[language_id][job[6]] if job[6] is not None else ""), - guitr.jobs_columns[language_id][7]: "{}".format(emis_info[language_id][" Name"][job[7]] if job[7] is not None \ - else (guitr.default_text[language_id] if job[0] == 0 else "")), - guitr.jobs_columns[language_id][8]: dt.datetime.strptime(job[8],'%Y-%m-%d %H:%M').strftime(guitr.date_format2[language_id]), - guitr.jobs_columns[language_id][9]: job[9]}) + guitr.jobs_columns[language_id][6]: "{}".format(guitr.metrics_options[language_id][job_dict['metric']] if job_dict['metric'] is not None else ""), + guitr.jobs_columns[language_id][7]: "{}".format(emis_info[language_id][" Name"][job_dict['emis_scen']] if job_dict['emis_scen'] is not None \ + else (guitr.default_text[language_id] if job_dict['application'] == 0 else "")), + guitr.jobs_columns[language_id][8]: dt.datetime.strptime(job_dict['creation_date'],'%Y-%m-%d %H:%M').strftime(guitr.date_format2[language_id]), + guitr.jobs_columns[language_id][9]: job_dict['id']}) return data_from_db diff --git a/src/pages/dashboard_constants.py b/src/pages/dashboard_constants.py index 980572637f12dff056c4c5bdc57f04e2745568b9..ef956095d58c19e4534bd25fe1ac6c37eb56c4a7 100644 --- a/src/pages/dashboard_constants.py +++ b/src/pages/dashboard_constants.py @@ -26,3 +26,4 @@ conversion_factor = { "NO2": 0.52297, ml_names = { "NO2": "NO2", "ozone": "O3", "PM2.5": "PM2P5" } +job_fields = ['application', 'status', 'start_date', 'forecast_length', 'region', 'species', 'metric', 'emis_scen', 'creation_date', 'id']