diff --git a/smash/web/api_views/subject.py b/smash/web/api_views/subject.py index c4a0fa3c8bf0a75fada9c2dd91f8141e6bcaa9ab..f4f1a6e5f01f8ea5fbf2450be989cb641be5ebf6 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})