Skip to content
Snippets Groups Projects
Commit 6746260c authored by Piotr Gawron's avatar Piotr Gawron
Browse files

screening number is not generated automatically

parent 81713ca9
No related branches found
No related tags found
1 merge request!5Appointments dev
......@@ -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
......
......@@ -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'
)
......
......@@ -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)
......@@ -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",
......
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