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

don't persist data from frontend if the field is readonly

parent 4e2b9419
No related branches found
No related tags found
3 merge requests!316Merge 1.0.1,!3151.0.1 into master,!310Resolve "saving subject with custom date_field makes subject form unusable"
Pipeline #38406 passed
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
......
......@@ -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:
......
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