Skip to content
Snippets Groups Projects
Commit 95c8fe6d authored by Carlos Vega's avatar Carlos Vega
Browse files

added check of default_visit_duration_in_months

parent d4c4e50c
No related branches found
No related tags found
1 merge request!188Feature/improve management of visits from subject list
...@@ -3,6 +3,9 @@ import logging ...@@ -3,6 +3,9 @@ import logging
from django.forms import ModelForm, ValidationError from django.forms import ModelForm, ValidationError
from web.models import Study, StudyNotificationParameters, StudyColumns, StudySubject from web.models import Study, StudyNotificationParameters, StudyColumns, StudySubject
import datetime
from dateutil.relativedelta import relativedelta
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -11,15 +14,34 @@ class StudyEditForm(ModelForm): ...@@ -11,15 +14,34 @@ class StudyEditForm(ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(StudyEditForm, self).__init__(*args, **kwargs) super(StudyEditForm, self).__init__(*args, **kwargs)
def clean_nd_number_study_subject_regex(self): def clean(self):
nd_number_study_subject_regex = self.cleaned_data.get( cleaned_data = super(StudyEditForm, self).clean()
'nd_number_study_subject_regex')
#check regex
nd_number_study_subject_regex = cleaned_data.get('nd_number_study_subject_regex')
if StudySubject.check_nd_number_regex(nd_number_study_subject_regex) == False: if StudySubject.check_nd_number_regex(nd_number_study_subject_regex) == False:
raise ValidationError( self.add_error('nd_number_study_subject_regex', 'Please enter a valid nd_number_study_subject_regex regex.')
'Please enter a valid nd_number_study_subject_regex regex.')
#check default_visit_duration_in_months
t = datetime.datetime.today()
visit_duration_in_months = cleaned_data.get('default_visit_duration_in_months')
visit_duration = relativedelta(months=int(visit_duration_in_months))
control_follow_up = cleaned_data.get('default_delta_time_for_control_follow_up')
patient_follow_up = cleaned_data.get('default_delta_time_for_patient_follow_up')
units = cleaned_data.get('default_delta_time_for_follow_up_units')
control_delta = relativedelta(**{units: control_follow_up})
patient_delta = relativedelta(**{units: patient_follow_up})
#relative time delta has no __cmp__ method, so we add them to a datetime
min_delta_time = min((t + control_delta), (t + patient_delta))
if (t+visit_duration) > min_delta_time:
self.add_error('default_visit_duration_in_months', 'Please enter a valid "duration of the visits". It must be shorter than the time difference between patient and control visits.')
return nd_number_study_subject_regex return cleaned_data
class Meta: class Meta:
model = Study model = Study
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment