From 7a31be9858da20b50fea73a875a70e44da851d48 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 9 Mar 2017 13:47:22 +0100
Subject: [PATCH] when finishing visit of dead person no follow up visit wil be
 added

---
 smash/web/models.py                 | 16 +++++------
 smash/web/tests/test_model_visit.py | 42 +++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 10 deletions(-)
 create mode 100644 smash/web/tests/test_model_visit.py

diff --git a/smash/web/models.py b/smash/web/models.py
index f6ee5abf..2fef2427 100644
--- a/smash/web/models.py
+++ b/smash/web/models.py
@@ -237,18 +237,14 @@ class Visit(models.Model):
         self.is_finished = True
         self.save()
 
-        visit_started = self.datetime_end
+        if  (not self.subject.dead) and (not self.subject.resigned):
+            visit_started = self.datetime_begin
 
-        appointments = Appointment.objects.filter(visit=self)
+            time_to_next_visit = datetime.timedelta(days=365)
+            if self.subject.type== Subject.SUBJECT_TYPE_CHOICES_CONTROL:
+                time_to_next_visit = datetime.timedelta(days=365*3+366)
 
-        for appointment in appointments:
-            visit_started = min(visit_started,appointment.datetime_when)
-
-        time_to_next_visit = datetime.timedelta(days=365)
-        if self.subject.type== Subject.SUBJECT_TYPE_CHOICES_CONTROL:
-            time_to_next_visit = datetime.timedelta(days=365*3+366)
-
-        Visit.objects.create(
+            Visit.objects.create(
                             subject = self.subject,
                             datetime_begin = visit_started+time_to_next_visit,
                             datetime_end = visit_started+time_to_next_visit+datetime.timedelta(days=93)
diff --git a/smash/web/tests/test_model_visit.py b/smash/web/tests/test_model_visit.py
new file mode 100644
index 00000000..670d2734
--- /dev/null
+++ b/smash/web/tests/test_model_visit.py
@@ -0,0 +1,42 @@
+from django.contrib.auth.models import User
+from django.test import TestCase, RequestFactory
+from django.urls import reverse
+
+from web.views import *
+
+from web.models import *
+
+from web.tests.functions import *
+
+class VisitModelTests(TestCase):
+
+    def test_mark_as_finished(self):
+        subject = create_subject()
+        visit = create_visit(subject)
+
+        visit.mark_as_finished()
+
+        visit_count = Visit.objects.filter(subject=subject).count()
+        self.assertEquals(2, visit_count)
+
+    def test_mark_as_finished_2(self):
+        subject = create_subject()
+        visit = create_visit(subject)
+        subject.dead=True
+        subject.save()
+
+        visit.mark_as_finished()
+
+        visit_count = Visit.objects.filter(subject=subject).count()
+        self.assertEquals(1, visit_count)
+
+    def test_mark_as_finished_3(self):
+        subject = create_subject()
+        visit = create_visit(subject)
+        subject.resigned=True
+        subject.save()
+
+        visit.mark_as_finished()
+
+        visit_count = Visit.objects.filter(subject=subject).count()
+        self.assertEquals(1, visit_count)
-- 
GitLab