def validate(self, data): data = super().validate(data) if self.instance and 'options' in data: raise ValidationError(_('Updating options via PATCH/PUT is not supported. Please use the dedicated' ' nested endpoint.')) event = self.context['event'] full_data = self.to_internal_value(self.to_representation(self.instance)) if self.instance else {} full_data.update(data) if full_data.get('ask_during_checkin') and full_data.get('dependency_question'): raise ValidationError('Dependencies are not supported during check-in.') dep = full_data.get('dependency_question') if dep: if dep.ask_during_checkin: raise ValidationError(_('Question cannot depend on a question asked during check-in.')) seen_ids = {self.instance.pk} if self.instance else set() while dep: if dep.pk in seen_ids: raise ValidationError(_('Circular dependency between questions detected.')) seen_ids.add(dep.pk) dep = dep.dependency_question if full_data.get('ask_during_checkin') and full_data.get('type') in Question.ASK_DURING_CHECKIN_UNSUPPORTED: raise ValidationError(_('This type of question cannot be asked during check-in.')) Question.clean_items(event, full_data.get('items')) return data
def validate(self, data): data = super().validate(data) if self.instance and 'options' in data: raise ValidationError(_('Updating options via PATCH/PUT is not supported. Please use the dedicated' ' nested endpoint.')) event = self.context['event'] full_data = self.to_internal_value(self.to_representation(self.instance)) if self.instance else {} full_data.update(data) if full_data.get('ask_during_checkin') and full_data.get('dependency_question'): raise ValidationError('Dependencies are not supported during check-in.') dep = full_data.get('dependency_question') if dep: seen_ids = {self.instance.pk} if self.instance else set() while dep: if dep.pk in seen_ids: raise ValidationError(_('Circular dependency between questions detected.')) seen_ids.add(dep.pk) dep = dep.dependency_question Question.clean_items(event, full_data.get('items')) return data
def validate(self, data): data = super().validate(data) if self.instance and 'options' in data: raise ValidationError(_('Updating options via PATCH/PUT is not supported. Please use the dedicated' ' nested endpoint.')) event = self.context['event'] full_data = self.to_internal_value(self.to_representation(self.instance)) if self.instance else {} full_data.update(data) Question.clean_items(event, full_data.get('items')) return data
def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs['instance'] = Question(event=self.request.event) return kwargs
def validate_identifier(self, value): Question._clean_identifier(self.context['event'], value, self.instance) return value