diff --git a/CHANGELOG b/CHANGELOG index c6ea8144353b47e293961fb127ac505aff75654f..a33000d99580862e54ffa6a6da1531eb35291c50 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,8 @@ smasch (1.0.1-1) stable; urgency=low * bug fix: unfinish visit button was always disabled (#386) * bug fix: generating documents for templates did not work for subjects created before custom field was added to the study (#388) + * bug fix: readonly custom Date Field was improperly persisted in forms + (#383) -- Piotr Gawron <piotr.gawron@uni.lu> Mon, 15 Mar 2021 14:00:00 +0200 diff --git a/smash/web/forms/study_subject_forms.py b/smash/web/forms/study_subject_forms.py index c22662cd92ab569560c54da23d79d165d8b322ed..529e04b8c56eb65d60ebcc0d026a7a18e554e15d 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: