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