class EventLabelForm(IndicoForm): title = StringField(_('Title'), [DataRequired()]) color = SelectField(_('Color'), [DataRequired()], choices=zip(get_sui_colors(), get_sui_colors())) def __init__(self, *args, **kwargs): self.event_label = kwargs.pop('event_label', None) super(EventLabelForm, self).__init__(*args, **kwargs) def validate_title(self, field): conflict = next((x for x in event_labels_store.get_all().values() if x.title.lower() == field.data.lower()), None) if conflict and (not self.event_label or conflict.id != self.event_label.id): raise ValidationError(_('This title is already in use.'))
class EditableTagArgs(mm.Schema): class Meta: rh_context = ('event', 'tag', 'is_service_call') code = fields.String(required=True, validate=not_empty) title = fields.String(required=True, validate=not_empty) color = fields.String(required=True, validate=validate.OneOf(get_sui_colors())) system = fields.Bool(missing=False) @validates('code') def _check_for_unique_tag_code(self, code): event = self.context['event'] tag = self.context['tag'] query = EditingTag.query.with_parent(event).filter( func.lower(EditingTag.code) == code.lower()) if tag: query = query.filter(EditingTag.id != tag.id) if query.has_rows(): raise ValidationError(_('Tag code must be unique')) @validates('system') def _check_only_services_set_system_tags(self, value): if value and not self.context['is_service_call']: raise ValidationError( 'Only custom editing workflows can set system tags')
class EventLabelForm(IndicoForm): title = StringField(_('Title'), [DataRequired()]) color = SelectField(_('Color'), [DataRequired()], choices=list(zip(get_sui_colors(), get_sui_colors()))) def __init__(self, *args, **kwargs): self.event_label = kwargs.pop('event_label', None) super().__init__(*args, **kwargs) def validate_title(self, field): query = EventLabel.query.filter( db.func.lower(EventLabel.title) == field.data.lower()) if self.event_label: query = query.filter(EventLabel.id != self.event_label.id) if query.has_rows(): raise ValidationError(_('This title is already in use.'))
class EditableTagArgs(mm.Schema): class Meta: rh_context = ('event', 'tag') code = fields.String(required=True, validate=not_empty) title = fields.String(required=True, validate=not_empty) color = fields.String(required=True, validate=validate.OneOf(get_sui_colors())) @validates('code') def _check_for_unique_tag_code(self, code): event = self.context['event'] tag = self.context['tag'] query = EditingTag.query.with_parent(event).filter(func.lower(EditingTag.code) == code.lower()) if tag: query = query.filter(EditingTag.id != tag.id) if query.has_rows(): raise ValidationError(_('Tag code must be unique'))