diff --git a/smash/web/models.py b/smash/web/models.py index f6ee5abf41fd11e50f55e1e2d2af981bf33334ba..2fef24279966578dbaf6da88bf85723ea4bf7a74 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 0000000000000000000000000000000000000000..670d27346c764aa7deb37ce407c77baa7fe03806 --- /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)