From defbeb6ed1fb188db42d1b15e834e47cb2c54e3b Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 15 Mar 2021 14:32:59 +0100 Subject: [PATCH] don't persist data from frontend if the field is readonly --- CHANGELOG | 3 +++ smash/web/forms/study_subject_forms.py | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 41dcd4f3..c341732b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,8 @@ smasch (1.0.1-1) stable; urgency=low + * bug fix: readonly custom Date Field was inproperly persisted in forms + (#383) + -- Piotr Gawron <piotr.gawron@uni.lu> Mon, 15 Mar 2021 14:00:00 +0200 smasch (1.0.0-1) stable; urgency=low diff --git a/smash/web/forms/study_subject_forms.py b/smash/web/forms/study_subject_forms.py index c22662cd..529e04b8 100644 --- a/smash/web/forms/study_subject_forms.py +++ b/smash/web/forms/study_subject_forms.py @@ -7,8 +7,8 @@ from django.forms import ModelForm from web.forms.forms import DATETIMEPICKER_DATE_ATTRS, get_worker_from_args, DATEPICKER_DATE_ATTRS from web.models import StudySubject, Study, StudyColumns, VoucherType, Worker -from web.models.constants import SCREENING_NUMBER_PREFIXES_FOR_TYPE, CUSTOM_FIELD_TYPE_TEXT, CUSTOM_FIELD_TYPE_BOOLEAN, \ - CUSTOM_FIELD_TYPE_INTEGER, CUSTOM_FIELD_TYPE_DOUBLE, \ +from web.models.constants import SCREENING_NUMBER_PREFIXES_FOR_TYPE, CUSTOM_FIELD_TYPE_TEXT, \ + CUSTOM_FIELD_TYPE_BOOLEAN, CUSTOM_FIELD_TYPE_INTEGER, CUSTOM_FIELD_TYPE_DOUBLE, \ CUSTOM_FIELD_TYPE_DATE, CUSTOM_FIELD_TYPE_SELECT_LIST, CUSTOM_FIELD_TYPE_FILE from web.models.custom_data import CustomStudySubjectField, CustomStudySubjectValue from web.models.custom_data.custom_study_subject_field import get_study_subject_field_id @@ -158,8 +158,9 @@ class StudySubjectAddForm(StudySubjectForm): instance = super(StudySubjectAddForm, self).save(commit) # we can add custom values only after object exists in the database for field_type in CustomStudySubjectField.objects.filter(study=self.study): - self.instance.set_custom_data_value(field_type, get_study_subject_field_value(field_type, self[ - get_study_subject_field_id(field_type)])) + if not field_type.readonly: + self.instance.set_custom_data_value(field_type, get_study_subject_field_value(field_type, self[ + get_study_subject_field_id(field_type)])) return instance def build_screening_number(self, cleaned_data): @@ -289,8 +290,9 @@ class StudySubjectEditForm(StudySubjectForm): def save(self, commit=True) -> StudySubject: for field_type in CustomStudySubjectField.objects.filter(study=self.study): - self.instance.set_custom_data_value(field_type, get_study_subject_field_value(field_type, self[ - get_study_subject_field_id(field_type)])) + if not field_type.readonly: + self.instance.set_custom_data_value(field_type, get_study_subject_field_value(field_type, self[ + get_study_subject_field_id(field_type)])) return super(StudySubjectForm, self).save(commit) class Meta: -- GitLab