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

Merge branch 'bug/regex_validation_fails' into 'devel_0.12.x'

Issue #276 changed check_nd_number_regex to receive a study and to filter out…

See merge request NCER-PD/scheduling-system!191
parents 06284e0d 350ab9ac
No related branches found
No related tags found
2 merge requests!196v0.12.2 into master,!191Issue #276 changed check_nd_number_regex to receive a study and to filter out…
Pipeline #7569 passed
......@@ -15,7 +15,9 @@ class StudyEditForm(ModelForm):
nd_number_study_subject_regex = self.cleaned_data.get(
'nd_number_study_subject_regex')
if StudySubject.check_nd_number_regex(nd_number_study_subject_regex) == False:
instance = getattr(self, 'instance', None)
if StudySubject.check_nd_number_regex(nd_number_study_subject_regex, instance) == False:
raise ValidationError(
'Please enter a valid nd_number_study_subject_regex regex.')
......
......@@ -208,8 +208,8 @@ class StudySubject(models.Model):
return matches + sorted(reminder, reverse=reverse)
@staticmethod
def check_nd_number_regex(regex_str):
nd_numbers = StudySubject.objects.all().values_list('nd_number', flat=True)
def check_nd_number_regex(regex_str, study):
nd_numbers = StudySubject.objects.filter(study=study).exclude(nd_number__isnull=True).exclude(nd_number__exact='').all().values_list('nd_number', flat=True)
regex = re.compile(regex_str)
for nd_number in nd_numbers:
if regex.match(nd_number) is None:
......
from django.test import TestCase
from django.forms import ValidationError
from web.tests.functions import create_study_subject
from web.tests.functions import get_test_study, create_study_subject
from web.forms.study_forms import StudyEditForm
from web.models.study import Study
from web.models.study_subject import StudySubject
......@@ -12,6 +12,7 @@ class StudyFormTests(TestCase):
StudySubject.objects.all().delete()
create_study_subject(nd_number='ND0001')
form = StudyEditForm()
form.instance = get_test_study()
# set default regex
nd_number_study_subject_regex_default = Study._meta.get_field(
'nd_number_study_subject_regex').get_default()
......@@ -21,6 +22,7 @@ class StudyFormTests(TestCase):
== nd_number_study_subject_regex_default)
# test wrong regex
form = StudyEditForm()
form.instance = get_test_study()
nd_number_study_subject_regex_default = r'^nd\d{5}$'
form.cleaned_data = {
'nd_number_study_subject_regex': nd_number_study_subject_regex_default}
......@@ -32,6 +34,7 @@ class StudyFormTests(TestCase):
# this will add a studysubject with a NDnumber
create_study_subject(nd_number='nd00001')
form = StudyEditForm()
form.instance = get_test_study()
# test new regex
nd_number_study_subject_regex_default = r'^nd\d{5}$'
form.cleaned_data = {
......
......@@ -3,7 +3,7 @@ from django.test import TestCase
from web.models import Appointment
from web.models import Visit
from web.models import StudySubject, Study
from web.tests.functions import create_study_subject, create_appointment, create_study_subject_with_multiple_screening_numbers
from web.tests.functions import get_test_study, create_study_subject, create_appointment, create_study_subject_with_multiple_screening_numbers
from web.tests.functions import create_visit
......@@ -72,24 +72,24 @@ class SubjectModelTests(TestCase):
Appointment.APPOINTMENT_STATUS_CANCELLED, appointment_status)
def test_check_nd_number_regex(self):
study = get_test_study()
# delete everything
StudySubject.objects.all().delete()
# get default regex
nd_number_study_subject_regex_default = Study._meta.get_field(
'nd_number_study_subject_regex').get_default()
self.assertTrue(StudySubject.check_nd_number_regex(
nd_number_study_subject_regex_default))
self.assertTrue(StudySubject.check_nd_number_regex(nd_number_study_subject_regex_default, study))
# this will add a studysubject with a NDnumber
study_subject = create_study_subject(nd_number='ND0001')
self.assertTrue(StudySubject.check_nd_number_regex(
nd_number_study_subject_regex_default))
self.assertTrue(StudySubject.check_nd_number_regex(nd_number_study_subject_regex_default, study))
# delete everything
StudySubject.objects.all().delete()
# this will add a studysubject with a NDnumber
create_study_subject(nd_number='ND00001')
self.assertFalse(StudySubject.check_nd_number_regex(
nd_number_study_subject_regex_default))
self.assertFalse(StudySubject.check_nd_number_regex(nd_number_study_subject_regex_default, study))
def test_sort_matched_screening_first(self):
......
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