From cd05c6fcf8a19bd980ffca6d850fa7fc558c00ed Mon Sep 17 00:00:00 2001 From: Carlos Vega <carlos.vega@uni.lu> Date: Tue, 13 Nov 2018 13:57:24 +0100 Subject: [PATCH] default visit duration can now be set on the study settings --- ..._study_default_visit_duration_in_months.py | 21 +++++++++++++++++++ smash/web/models/study.py | 6 ++++++ smash/web/static/js/visit.js | 8 ++++--- smash/web/templates/visits/add.html | 3 ++- smash/web/templates/visits/details.html | 3 ++- smash/web/views/visit.py | 1 + 6 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 smash/web/migrations/0132_study_default_visit_duration_in_months.py diff --git a/smash/web/migrations/0132_study_default_visit_duration_in_months.py b/smash/web/migrations/0132_study_default_visit_duration_in_months.py new file mode 100644 index 00000000..522e672e --- /dev/null +++ b/smash/web/migrations/0132_study_default_visit_duration_in_months.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-11-13 10:05 +from __future__ import unicode_literals + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('web', '0131_study_default_voucher_expiration_in_months'), + ] + + operations = [ + migrations.AddField( + model_name='study', + name='default_visit_duration_in_months', + field=models.IntegerField(default=3, validators=[django.core.validators.MinValueValidator(1)], verbose_name=b'Default duration of the visits in months'), + ), + ] diff --git a/smash/web/models/study.py b/smash/web/models/study.py index e89ac16f..5b9d0a74 100644 --- a/smash/web/models/study.py +++ b/smash/web/models/study.py @@ -44,6 +44,12 @@ class Study(models.Model): validators=[MinValueValidator(1)] ) + default_visit_duration_in_months = models.IntegerField( + verbose_name='Default duration of the visits in months', + default=3, + validators=[MinValueValidator(1)] + ) + def check_nd_number(self, nd_number): regex = re.compile(self.nd_number_study_subject_regex) return regex.match(nd_number) is not None diff --git a/smash/web/static/js/visit.js b/smash/web/static/js/visit.js index a2636ed2..1e5aa220 100644 --- a/smash/web/static/js/visit.js +++ b/smash/web/static/js/visit.js @@ -1,10 +1,12 @@ -function visit_dates_behaviour(startDateInput, endDateInput) { +function visit_dates_behaviour(startDateInput, endDateInput, default_visit_duration) { $(startDateInput).change(function () { var object = $(this); try { var date = new Date(object.val()); - date.setMonth(date.getMonth() + 3); - $(endDateInput).val(date.toISOString().substring(0, 10)); + date.setMonth(date.getMonth() + default_visit_duration); + if($(endDateInput).val() == ""){ + $(endDateInput).val(date.toISOString().substring(0, 10)); + } } catch (err) { //there was a problematic date to process } diff --git a/smash/web/templates/visits/add.html b/smash/web/templates/visits/add.html index 749641be..4c93ee49 100644 --- a/smash/web/templates/visits/add.html +++ b/smash/web/templates/visits/add.html @@ -70,7 +70,8 @@ <script src="{% static 'js/visit.js' %}"></script> <script> - visit_dates_behaviour($("[name='datetime_begin']"),$("[name='datetime_end']")); + var default_visit_duration_in_months = parseInt("{{default_visit_duration}}"); + visit_dates_behaviour($("[name='datetime_begin']"), $("[name='datetime_end']"), default_visit_duration_in_months); </script> {% include "includes/datepicker.js.html" %} diff --git a/smash/web/templates/visits/details.html b/smash/web/templates/visits/details.html index 62069efa..08a133af 100644 --- a/smash/web/templates/visits/details.html +++ b/smash/web/templates/visits/details.html @@ -221,7 +221,8 @@ <script src="{% static 'AdminLTE/plugins/datatables/dataTables.bootstrap.min.js' %}"></script> <script src="{% static 'js/visit.js' %}"></script> <script> - visit_dates_behaviour($("[name='datetime_begin']"), $("[name='datetime_end']")); + var default_visit_duration_in_months = parseInt("{{default_visit_duration}}"); + visit_dates_behaviour($("[name='datetime_begin']"), $("[name='datetime_end']"), default_visit_duration_in_months); </script> {% include "includes/datepicker.js.html" %} diff --git a/smash/web/views/visit.py b/smash/web/views/visit.py index 96dde765..585e40c3 100644 --- a/smash/web/views/visit.py +++ b/smash/web/views/visit.py @@ -74,6 +74,7 @@ def visit_details(request, id): languages.extend(study_subject.subject.languages.all()) return wrap_response(request, 'visits/details.html', { + 'default_visit_duration' : study_subject.study.default_visit_duration_in_months, 'visit_form': visit_form, 'study_subject_form': study_subject_form, 'subject_form': subject_form, -- GitLab