From bc7f59aab1131de57b4bb0f621dc7b6dec4bf507 Mon Sep 17 00:00:00 2001
From: Carlos Vega <carlos.vega@uni.lu>
Date: Wed, 22 Apr 2020 19:20:28 +0200
Subject: [PATCH] name labels from 0 if SHOW_VISITS_FROM_ZERO

---
 smash/web/api_views/subject.py | 38 +++++++++++++++++++++-------------
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/smash/web/api_views/subject.py b/smash/web/api_views/subject.py
index c4a0fa3c..f4f1a6e5 100644
--- a/smash/web/api_views/subject.py
+++ b/smash/web/api_views/subject.py
@@ -4,6 +4,7 @@ from django.db.models import Count, Case, When, Min, Max
 from django.db.models import Q
 from django.http import JsonResponse
 from django.urls import reverse
+from django.conf import settings
 
 from web.api_views.serialization_utils import bool_to_yes_no, flying_team_to_str, location_to_str, add_column, \
     serialize_date, serialize_datetime, get_filters_for_data_table_request, virus_test_to_str
@@ -78,23 +79,32 @@ def get_subject_columns(request, subject_list_type):
     add_column(result, "Excluded", "excluded", study_subject_columns, "yes_no_filter", study.columns)
     add_column(result, "Info sent", "information_sent", study_subject_columns, "yes_no_filter", study.columns)
 
-    add_column(result, "Visit 0 RT-PCR", "virus_test_1", None, "yes_no_null_inconclusive_filter", study.columns)
-    add_column(result, "Visit 0 RT-PCR date", "virus_test_1_updated", None, "virus_test_date", study.columns)
-    add_column(result, "Visit 1 RT-PCR", "virus_test_2", None, "yes_no_null_inconclusive_filter", study.columns)
-    add_column(result, "Visit 1 RT-PCR date", "virus_test_2_updated", None, "virus_test_date", study.columns)
-    add_column(result, "Visit 2 RT-PCR", "virus_test_3", None, "yes_no_null_inconclusive_filter", study.columns)
-    add_column(result, "Visit 2 RT-PCR date", "virus_test_3_updated", None, "virus_test_date", study.columns)
-    add_column(result, "Visit 3 RT-PCR", "virus_test_4", None, "yes_no_null_inconclusive_filter", study.columns)
-    add_column(result, "Visit 3 RT-PCR date", "virus_test_4_updated", None, "virus_test_date", study.columns)
-    add_column(result, "Visit 4 RT-PCR", "virus_test_5", None, "yes_no_null_inconclusive_filter", study.columns)
-    add_column(result, "Visit 4 RT-PCR date", "virus_test_5_updated", None, "virus_test_date", study.columns)
+    if getattr(settings, "SHOW_VISITS_FROM_ZERO", False):
+        virus_visit_numbers = range(0, 5)
+        visit_numbers = range(0, study.visits_to_show_in_subject_list + 0)
+    else:
+        virus_visit_numbers = range(1, 5+1)
+        visit_numbers = range(1, study.visits_to_show_in_subject_list + 1)
+
+    for one_based_idx, virus_visit_number in enumerate(virus_visit_numbers, 1):
+        add_column(result, 
+                  'Virus {} RT-PCR'.format(virus_visit_number), 
+                  'virus_test_{}'.format(one_based_idx), #always starts in 1
+                  None, #always visible
+                  'yes_no_null_inconclusive_filter', study.columns)
+        add_column(result, 
+                   "Visit {} RT-PCR date".format(virus_visit_number), 
+                   "virus_test_{}_updated".format(one_based_idx), 
+                   None, #always visible
+                   "virus_test_date", study.columns)
 
     add_column(result, "Type", "type", study_subject_columns, "type_filter", study.columns)
     add_column(result, "Edit", "edit", None, None, sortable=False)
-    for visit_number in range(1, study.visits_to_show_in_subject_list + 1):
-        visit_key = "visit_" + str(visit_number)
-        add_column(result, "Visit " + str(visit_number), visit_key, None, "visit_filter",
-                   visible_param=study_subject_list.visits)
+    
+    for one_based_idx, visit_number in enumerate(visit_numbers, 1):
+        visit_key = "visit_{}".format(one_based_idx) #always starts in 1
+        add_column(result, "Visit {}".format(visit_number), visit_key, None, 
+                    "visit_filter", visible_param=study_subject_list.visits)
 
     return JsonResponse({"columns": result})
 
-- 
GitLab