From dfb1e503d81d159ebe0d7cb964dc6fde95292290 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 9 Feb 2017 17:48:30 +0100
Subject: [PATCH] duplicates in screening numbers is disabled

---
 smash/web/forms.py  |  8 ++++++++
 smash/web/models.py | 14 ++++++++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/smash/web/forms.py b/smash/web/forms.py
index 7834007e..d989cf65 100644
--- a/smash/web/forms.py
+++ b/smash/web/forms.py
@@ -20,6 +20,14 @@ class SubjectAddForm(ModelForm):
         model = Subject
         fields = '__all__'
 
+    def clean(self):
+        subject = self.cleaned_data
+
+        subjects_from_db = Subject.objects.filter(screening_number=subject['screening_number'])
+
+        if len(subjects_from_db):
+            self.add_error('screening_number', "Screening number already in use")
+
 
 class SubjectDetailForm(ModelForm):
     class Meta:
diff --git a/smash/web/models.py b/smash/web/models.py
index 9c1234bc..0115708b 100644
--- a/smash/web/models.py
+++ b/smash/web/models.py
@@ -71,10 +71,11 @@ class Subject(models.Model):
         verbose_name='Last name'
     )
     languages = models.ManyToManyField(Language,
+        blank=True,
         verbose_name='Known languages'
     )
     phone_number = models.CharField(max_length=20,
-        null=True, 
+        null=True,
 	blank=True,
         verbose_name='Phone number'
     )
@@ -95,28 +96,34 @@ class Subject(models.Model):
     )
     date_born = models.DateField(
         null=True,
-	blank=True,
+	    blank=True,
         verbose_name='Date of birth (YYYY-MM-DD)'
     )
     address = models.CharField(max_length=255,
+	    blank=True,
         verbose_name='Address'
     )
     postal_code = models.CharField(max_length=7,
+	    blank=True,
         verbose_name='Postal code'
     )
     city = models.CharField(max_length=50,
+	    blank=True,
         verbose_name='City'
     )
     country = models.CharField(max_length=50,
         verbose_name='Country'
     )
     screening_number = models.CharField(max_length=50,
+	    blank=True,
         verbose_name='Screening number'
     )
     nd_number = models.CharField(max_length=6,
+	    blank=True,
         verbose_name='ND number'
     )
     mpower_id = models.CharField(max_length=20,
+	    blank=True,
         verbose_name='MPower ID'
     )
     status = models.CharField(max_length=3, choices=STATUS_CHOICES,
@@ -124,6 +131,7 @@ class Subject(models.Model):
         default='NCO'
     )
     comments = models.CharField(max_length=2000,
+	    blank=True,
         verbose_name='Comments'
     )
     date_added = models.DateField(verbose_name='Added on',
@@ -131,10 +139,12 @@ class Subject(models.Model):
     )
     referral = models.CharField(max_length=128,
         null=True,
+	    blank=True,
         verbose_name='Referred by'
     )
     diagnosis = models.CharField(max_length=128,
         null=True,
+	    blank=True,
         verbose_name='Diagnosis'
     )
     year_of_diagnosis = models.IntegerField(
-- 
GitLab