From 19cbf7881ab320754186ff565136354d08246fdc Mon Sep 17 00:00:00 2001
From: Carlos Vega <carlos.vega@uni.lu>
Date: Tue, 6 Nov 2018 15:15:03 +0100
Subject: [PATCH] Fixes #262 : sorting with empty screening number fails

---
 smash/web/models/study_subject.py | 37 +++++++++++++++++--------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/smash/web/models/study_subject.py b/smash/web/models/study_subject.py
index 97c8e670..d1807814 100644
--- a/smash/web/models/study_subject.py
+++ b/smash/web/models/study_subject.py
@@ -179,23 +179,26 @@ class StudySubject(models.Model):
                                       )
 
     def sort_matched_screening_first(self, pattern, reverse=False):
-        parts = self.screening_number.split(';')
-        matches, reminder = [], []
-        for part in parts:
-            chunks = part.strip().split('-')
-            if len(chunks) == 2:
-                letter, number = chunks
-                tupl = (letter, int(number))
-            else:
-                logger.warn('There are {} chunks in some parts of this screening_number: |{}|.'.format(
-                    len(chunks), self.screening_number))
-                tupl = (part.strip(), None)
-            if pattern is not None and pattern in part:
-                matches.append(tupl)
-            else:
-                reminder.append(tupl)
-
-        return matches + sorted(reminder, reverse=reverse)
+      if self.screening_number is None:
+        return None
+
+      parts = self.screening_number.split(';')
+      matches, reminder = [], []
+      for part in parts:
+          chunks = part.strip().split('-')
+          if len(chunks) == 2:
+              letter, number = chunks
+              tupl = (letter, int(number))
+          else:
+              logger.warn('There are {} chunks in some parts of this screening_number: |{}|.'.format(
+                  len(chunks), self.screening_number))
+              tupl = (part.strip(), None)
+          if pattern is not None and pattern in part:
+              matches.append(tupl)
+          else:
+              reminder.append(tupl)
+
+      return matches + sorted(reminder, reverse=reverse)
 
     @staticmethod
     def check_nd_number_regex(regex_str):
-- 
GitLab