From 88c7a3a7c1a9d36f425178130cdd9e8512244908 Mon Sep 17 00:00:00 2001
From: schroeder5 <s.schroeder@fz-juelich.de>
Date: Mon, 8 Apr 2024 16:15:14 +0000
Subject: [PATCH] work with a dictionary for a job to facilitate the reading of
 the code

---
 src/pages/dashboard.py           | 32 ++++++++++++++++++--------------
 src/pages/dashboard_constants.py |  1 +
 2 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/src/pages/dashboard.py b/src/pages/dashboard.py
index a8a5334..b965041 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 9805726..ef95609 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']
-- 
GitLab