From 15756ed90d0bee21428bbaf22767cbfba12b671e Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 31 Oct 2017 14:38:00 +0100
Subject: [PATCH] validation of nd number added

---
 smash/web/models/subject.py                   |  5 ++++-
 smash/web/tests/forms/test_SubjectAddForm.py  |  2 +-
 smash/web/tests/forms/test_SubjectEditForm.py | 10 +++++-----
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/smash/web/models/subject.py b/smash/web/models/subject.py
index c16e7330..ab779e00 100644
--- a/smash/web/models/subject.py
+++ b/smash/web/models/subject.py
@@ -1,4 +1,5 @@
 # coding=utf-8
+from django.core.validators import RegexValidator
 from django.db import models
 
 from constants import BOOL_CHOICES, SEX_CHOICES, SUBJECT_TYPE_CHOICES, COUNTRY_OTHER_ID
@@ -124,7 +125,9 @@ class Subject(models.Model):
                                         )
     nd_number = models.CharField(max_length=25,
                                  blank=True,
-                                 verbose_name='ND number'
+                                 verbose_name='ND number',
+                                 validators=[
+                                     RegexValidator('^(ND[0-9]{4}|)$', message="ND number should look as follows: NDxxxx")]
                                  )
     mpower_id = models.CharField(max_length=20,
                                  blank=True,
diff --git a/smash/web/tests/forms/test_SubjectAddForm.py b/smash/web/tests/forms/test_SubjectAddForm.py
index 2cadc938..907cfe39 100644
--- a/smash/web/tests/forms/test_SubjectAddForm.py
+++ b/smash/web/tests/forms/test_SubjectAddForm.py
@@ -40,7 +40,7 @@ class SubjectAddFormTests(LoggedInWithWorkerTestCase):
 
     def test_invalid_2(self):
         form_data = self.sample_data
-        form_data['nd_number'] = "123"
+        form_data['nd_number'] = "ND0123"
 
         form = SubjectAddForm(data=form_data, user=self.user)
         form.is_valid()
diff --git a/smash/web/tests/forms/test_SubjectEditForm.py b/smash/web/tests/forms/test_SubjectEditForm.py
index ea4e25fe..3de9b95d 100644
--- a/smash/web/tests/forms/test_SubjectEditForm.py
+++ b/smash/web/tests/forms/test_SubjectEditForm.py
@@ -17,7 +17,7 @@ class SubjectEditFormTests(LoggedInWithWorkerTestCase):
                             'default_location': location.id,
                             'country': COUNTRY_AFGHANISTAN_ID,
                             'screening_number': '123',
-                            'nd_number': 'nd_123'
+                            'nd_number': 'ND0123'
                             }
 
     def tearDown(self):
@@ -36,13 +36,13 @@ class SubjectEditFormTests(LoggedInWithWorkerTestCase):
         add_form = SubjectAddForm(data=self.sample_data, user=self.user)
         add_form.save()
 
-        self.sample_data['nd_number'] = "nd_124"
+        self.sample_data['nd_number'] = "ND0124"
         self.sample_data['screening_number'] = "124"
         add_form = SubjectAddForm(data=self.sample_data, user=self.user)
         subject = add_form.save()
 
         self.sample_data['id'] = subject.id
-        self.sample_data['nd_number'] = "nd_123"
+        self.sample_data['nd_number'] = "ND0123"
         edit_form = SubjectEditForm(self.sample_data)
 
         save_status = edit_form.is_valid()
@@ -54,14 +54,14 @@ class SubjectEditFormTests(LoggedInWithWorkerTestCase):
         subject = add_form.save()
 
         self.sample_data['mpower_id'] = "mpower_002"
-        self.sample_data['nd_number'] = "nd_002"
+        self.sample_data['nd_number'] = "ND0002"
         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['nd_number'] = "ND0001"
         self.sample_data['screening_number'] = "001"
         edit_form = SubjectEditForm(self.sample_data)
 
-- 
GitLab