From a18c3e66834311f5c886f477cbf3310cab3cb9b8 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 17 Jul 2018 15:59:15 +0200
Subject: [PATCH] visit is marked as exceeded when time of the visit is
 exceeded and there are no scheduled appointments, when there are scheduled
 appointments it's marked as in progress

---
 smash/web/api_views/subject.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/smash/web/api_views/subject.py b/smash/web/api_views/subject.py
index a30d4c19..f5eed511 100644
--- a/smash/web/api_views/subject.py
+++ b/smash/web/api_views/subject.py
@@ -199,11 +199,11 @@ def filter_by_visit(result, visit_number, visit_type):
     elif visit_type == "EXCEED":
         result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \
             filter(**{is_finished_filter: 0}). \
+            filter(**{scheduled_appointments_filter: 0}). \
             filter(**{datetime_end_filter + "__lt": get_today_midnight_date()})
     elif visit_type == "IN_PROGRESS":
         result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \
             filter(**{is_finished_filter: 0}). \
-            filter(**{datetime_end_filter + "__gt": get_today_midnight_date()}). \
             filter(**{scheduled_appointments_filter + "__gt": 0})
     elif visit_type == "SHOULD_BE_IN_PROGRESS":
         result = result.filter(**{datetime_begin_filter + "__lt": get_today_midnight_date()}). \
@@ -330,7 +330,12 @@ def serialize_subject(study_subject):
                 else:
                     status = "MISSED"
             elif visit.datetime_end < get_today_midnight_date():
-                status = "EXCEEDED"
+                scheduled_appointments_count = visit.appointment_set.filter(
+                    status=Appointment.APPOINTMENT_STATUS_SCHEDULED).count()
+                if scheduled_appointments_count > 0:
+                    status = "IN_PROGRESS"
+                else:
+                    status = "EXCEEDED"
             else:
                 scheduled_appointments_count = visit.appointment_set.filter(
                     status=Appointment.APPOINTMENT_STATUS_SCHEDULED).count()
-- 
GitLab