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

adding and modifing mpower number checks for uniqe values

parent 9990f876
No related branches found
No related tags found
1 merge request!49adding and modifing mpower number checks for uniqe values
Pipeline #
......@@ -36,6 +36,14 @@ def validate_subject_nd_number(self, cleaned_data):
self.add_error('nd_number', "ND number already in use")
def validate_subject_mpower_number(self, cleaned_data):
if cleaned_data['mpower_id'] != "":
subjects_from_db = Subject.objects.filter(mpower_id=cleaned_data['mpower_id'])
if subjects_from_db:
if subjects_from_db[0].screening_number != cleaned_data.get('screening_number', ''):
self.add_error('mpower_id', "mPower number already in use")
class SubjectAddForm(ModelForm):
date_born = forms.DateField(label="Date of birth",
widget=forms.DateInput(DATEPICKER_DATE_ATTRS, "%Y-%m-%d"),
......@@ -81,6 +89,7 @@ class SubjectAddForm(ModelForm):
if len(subjects_from_db) > 0:
self.add_error('screening_number', "Screening number already in use")
validate_subject_nd_number(self, cleaned_data)
validate_subject_mpower_number(self, cleaned_data)
return cleaned_data
def get_prefix_screening_number(self):
......@@ -149,6 +158,7 @@ class SubjectEditForm(ModelForm):
def clean(self):
validate_subject_nd_number(self, self.cleaned_data)
validate_subject_mpower_number(self, self.cleaned_data)
class Meta:
model = Subject
......
......@@ -62,6 +62,21 @@ class SubjectAddFormTests(TestCase):
self.assertFalse(validation_status)
self.assertTrue("nd_number" in form2.errors)
def test_invalid_mpower_id(self):
form_data = self.sample_data
form_data['mpower_id'] = "123"
form = SubjectAddForm(data=form_data, user=self.user)
form.is_valid()
self.assertTrue(form.is_valid())
form.save()
form_data['screening_number'] = "2"
form2 = SubjectAddForm(data=form_data, user=self.user)
validation_status = form2.is_valid()
self.assertFalse(validation_status)
self.assertTrue("mpower_id" in form2.errors)
def test_get_new_screening_number(self):
prefix = "X-"
subject = create_subject()
......
......@@ -57,3 +57,23 @@ class SubjectEditFormTests(TestCase):
save_status = edit_form.is_valid()
self.assertFalse(save_status)
def test_invalid_mpower_id_edit(self):
self.sample_data['screening_number'] = "001"
add_form = SubjectAddForm(data=self.sample_data, user=self.user)
subject = add_form.save()
self.sample_data['mpower_id'] = "mpower_002"
self.sample_data['nd_number'] = "nd_002"
self.sample_data['screening_number'] = "002"
add_form = SubjectAddForm(data=self.sample_data, user=self.user)
add_form.save()
self.sample_data['id'] = subject.id
self.sample_data['mpower_id'] = "mpower_002"
self.sample_data['nd_number'] = "nd_001"
self.sample_data['screening_number'] = "001"
edit_form = SubjectEditForm(self.sample_data)
save_status = edit_form.is_valid()
self.assertFalse(save_status)
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