From 6746260c4ddd34cb99f1299f46303c7d9498ad55 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 9 Mar 2017 11:21:26 +0100 Subject: [PATCH] screening number is not generated automatically --- smash/web/forms.py | 22 ++-------------------- smash/web/models.py | 1 - smash/web/tests/test_SubjectAddForm.py | 11 +++++++++++ smash/web/tests/test_VisitAddForm.py | 9 +-------- 4 files changed, 14 insertions(+), 29 deletions(-) diff --git a/smash/web/forms.py b/smash/web/forms.py index b8866f17..7b6a7c14 100644 --- a/smash/web/forms.py +++ b/smash/web/forms.py @@ -25,7 +25,7 @@ def validate_subject_nd_number(self): if subject['nd_number']!="": subjects_from_db = Subject.objects.filter(nd_number=subject['nd_number']) if (len(subjects_from_db)>0): - if (subjects_from_db[0].screening_number!= subject['screening_number']): + if subjects_from_db[0].screening_number!= subject.get('screening_number',''): self.add_error('nd_number', "ND number already in use") @@ -42,31 +42,13 @@ class SubjectAddForm(ModelForm): def clean(self): subject = self.cleaned_data - subjects_from_db = Subject.objects.filter(screening_number=subject['screening_number']) + subjects_from_db = Subject.objects.filter(screening_number=subject.get('screening_number','')) if len(subjects_from_db)>0: self.add_error('screening_number', "Screening number already in use") validate_subject_nd_number(self) - def get_new_screening_number(self): - result = 1; - numbers = Subject.objects.values_list('screening_number') - for number_row in numbers: - try: - id = int(number_row[0]) - result = max(result, id+1) - except: - pass - return result - - - def clean_screening_number(self): - if self.cleaned_data['screening_number']=="": - self.cleaned_data['screening_number'] = self.get_new_screening_number() - - return self.cleaned_data['screening_number']; - class SubjectDetailForm(ModelForm): class Meta: model = Subject diff --git a/smash/web/models.py b/smash/web/models.py index a1041ee7..ba8f9e58 100644 --- a/smash/web/models.py +++ b/smash/web/models.py @@ -137,7 +137,6 @@ class Subject(models.Model): verbose_name='Country' ) screening_number = models.CharField(max_length=50, - blank=True, unique=True, verbose_name='Screening number' ) diff --git a/smash/web/tests/test_SubjectAddForm.py b/smash/web/tests/test_SubjectAddForm.py index bbe6a553..4e78578c 100644 --- a/smash/web/tests/test_SubjectAddForm.py +++ b/smash/web/tests/test_SubjectAddForm.py @@ -12,6 +12,7 @@ class SubjectAddFormTests(TestCase): 'sex' : Subject.SEX_CHOICES_MALE, 'type' : Subject.SUBJECT_TYPE_CHOICES_CONTROL, 'default_location' : location.id, + 'screening_number' : "123", 'country' : 'Luxembourg' } def test_validation(self): @@ -42,7 +43,17 @@ class SubjectAddFormTests(TestCase): self.assertTrue(form.is_valid()) form.save() + form_data['screening_number'] = "2" form2 = SubjectAddForm(data=form_data) validation_status = form2.is_valid() self.assertFalse(validation_status) self.assertTrue("nd_number" in form2.errors) + + def test_invalid_3(self): + form_data = self.sample_data + form_data['screening_number'] = "" + + form = SubjectAddForm(data=form_data) + validation_status = form.is_valid() + self.assertFalse(validation_status) + self.assertTrue("screening_number" in form.errors) diff --git a/smash/web/tests/test_VisitAddForm.py b/smash/web/tests/test_VisitAddForm.py index d292124c..88945ca3 100644 --- a/smash/web/tests/test_VisitAddForm.py +++ b/smash/web/tests/test_VisitAddForm.py @@ -9,14 +9,7 @@ from web.tests.functions import * class SubjectAddFormTests(TestCase): def setUp(self): location = get_test_location() - subject_data = {'first_name': 'name', - 'last_name': 'name', - 'sex' : Subject.SEX_CHOICES_MALE, - 'type' : Subject.SUBJECT_TYPE_CHOICES_CONTROL, - 'default_location' : location.id, - 'country' : 'Luxembourg', - } - self.subject = SubjectAddForm(data=subject_data).save() + self.subject = create_subject() self.sample_data = {'datetime_begin': "2017-01-01", 'datetime_end': "2017-02-02", -- GitLab