diff --git a/smash/web/forms.py b/smash/web/forms.py index 9883651293dc811f1b30b71eb32c2c99f5fa7fa5..bfb50d12544b0ae13b095da756c682855cf1041d 100644 --- a/smash/web/forms.py +++ b/smash/web/forms.py @@ -14,8 +14,9 @@ def validate_subject_nd_number(self): subject = self.cleaned_data if subject['nd_number']!="": subjects_from_db = Subject.objects.filter(nd_number=subject['nd_number']) - if len(subjects_from_db)>0: - self.add_error('nd_number', "ND number already in use") + if (len(subjects_from_db)>0): + if (subjects_from_db[0].screening_number!= subject['screening_number']): + self.add_error('nd_number', "ND number already in use") class SubjectAddForm(ModelForm): @@ -64,6 +65,7 @@ class SubjectDetailForm(ModelForm): class SubjectEditForm(ModelForm): date_born = forms.DateField(label='Date of birth', + required = False, widget=forms.SelectDateWidget(years=YEAR_CHOICES) ) diff --git a/smash/web/tests/test_SubjectEditForm.py b/smash/web/tests/test_SubjectEditForm.py new file mode 100644 index 0000000000000000000000000000000000000000..604c3a0c6b10bceb71c135af9114cf0fe68a406f --- /dev/null +++ b/smash/web/tests/test_SubjectEditForm.py @@ -0,0 +1,44 @@ +from django.test import TestCase +from web.forms import SubjectAddForm +from web.forms import SubjectEditForm +from web.models import Subject + + +class SubjectEditFormTests(TestCase): + def setUp(self): + self.sample_data = {'first_name': 'name', + 'last_name': 'name', + 'status' : Subject.STATUS_CHOICES_NOT_CONTACTED, + 'sex' : Subject.SEX_CHOICES_MALE, + 'country' : 'Luxembourg', + 'screening_number' : '123', + 'nd_number' : 'nd_123' + } + + def tearDown(self): + Subject.objects.all().delete() + + def test_validation(self): + add_form = SubjectAddForm(data=self.sample_data) + subject = add_form.save() + self.sample_data['id'] = subject.id + + edit_form = SubjectEditForm(self.sample_data) + save_status = edit_form.is_valid() + self.assertTrue(save_status) + + def test_invalid_nd_number_edit(self): + add_form = SubjectAddForm(data=self.sample_data) + add_form.save() + + self.sample_data['nd_number'] = "nd_124" + self.sample_data['screening_number'] = "124" + add_form = SubjectAddForm(data=self.sample_data) + subject = add_form.save() + + self.sample_data['id'] = subject.id + self.sample_data['nd_number'] = "nd_123" + edit_form = SubjectEditForm(self.sample_data) + + save_status = edit_form.is_valid() + self.assertFalse(save_status)