class NewFolderForm(FlaskForm): title = StringField('Title', validators=[DataRequired()]) owner_id = HiddenField(validators=[DataRequired()]) # parent_id = QuerySelectField('Parent') parent_id = HiddenField(validators=[Optional(), UUID()], default=None, filters=[lambda x: x or None]) add = SubmitField('Add')
def _set_fields(self, form): setattr( form, 'first_name', HiddenField( _(u'First Name'), [validators.Length(min=2, message=_(u'First name required.')) ])) setattr( form, 'last_name', HiddenField( _(u'Last Name'), [validators.Length(min=2, message=_(u'Last name required.'))])) setattr( form, 'email', HiddenField( _(u'E-mail Address'), validators=[ validators.Email(message=_(u'Invalid email address.')), custom_validators.UniqueEmail(message=_( u'That address is already being used, please choose another one.' )), ], filters=[custom_filters.to_lowercase])) setattr( form, 'category', SelectField( _(u'Category'), choices=util.get_all_categories_for_profile_editing( self.domain), validators=[ custom_validators.DisallowNoChoiceInSelect(message=_( 'Please choose an option from the list. If none of the options seems to fit, please choose "Other"' )) ])) setattr( form, 'password', PasswordField(_(u'Password'), [ validators.Length( min=6, message=_(u'Password must be at least 6 characters.')), validators.EqualTo('password_confirm', _(u"Passwords do not match.")) ])) setattr(form, 'password_confirm', PasswordField(_(u'Password Confirmation'))) setattr( form, 'terms_agreement', CustomBooleanField( _(u'I agree with the Terms of Service'), default='True', validators=[ validators.Required( message=_(u'You must accept the terms to continue.')) ]))
class AltForm(FlaskForm): mirror_type = SelectField('Mirror Type', choices=[ ('mirror', 'Mirror'), ('proxy', 'Cloudfront, AzureEdge or Fastly'), ('eotk', 'Onion'), ('ipfs', 'IPFS Node')]) mirror_url = StringField('Alternative URL') inactive = BooleanField('Inactive?') domain_id = HiddenField('Domain ID') old_url = HiddenField('Old Url') submit = SubmitField('Submit')
class ActionForm(Form): # pylint:disable=R0924,R0903 """ User submits a range-based action """ fold = HiddenField(label="Fold range:", validators=[Length(min=1)]) passive = HiddenField(label=passive_label, validators=[Length(min=1)]) if can_raise: aggressive = HiddenField(label=aggressive_label, validators=[Length(min=1)]) total = HiddenField(label=total_label) else: aggressive = HiddenField(label=aggressive_label, default=NOTHING, validators=[Regexp(NOTHING)])
class FormDiaria(FlaskForm): id = HiddenField(validators=[Optional()]) nome = StringField("Nome", validators=[DataRequired()]) data = DateField("Data", validators=[DataRequired()]) destino = StringField("Destino", validators=[DataRequired()]) motivo = StringField("Motivo", validators=[DataRequired()]) valor = DecimalField("Valor", validators=[DataRequired()])
class NewPostForm(Form): id = HiddenField() title = TextField('Title', validators=[Length(min=3, max=500)]) text = TextAreaField('Text', validators=[Required(), ]) url = URLField('URL') image_url = URLField('Image URL') publish_date = DateTimeField("Publish at date", default=datetime.datetime.now())
class FormNoticia(FlaskForm): id = HiddenField(validators=[Optional()]) categoria = SelectField( "Categoria", choices=[ ("Geral", "Geral"), ("Segurança", "Segurança"), ("Saúde", "Saúde"), ("Economia", "Economia"), ], default="Geral", ) titulo = StringField( "Título", [ DataRequired(message="Informe título da notícia."), Length(5, 150, message="Deve ter pelo menos 5 caracteres."), ], ) conteudo = TextAreaField("Conteúdo") destaque = SelectField( "Destacar na página inicial?", choices=[("sim", "Sim"), ("nao", "Não")], default="nao", ) thumb = FileField("Imagem de capa da notícia", validators=[Optional()])
class EditCharacterForm(FlaskForm): """ Edit Character Form """ id = HiddenField() name = StringField( label="Character", validators=[InputRequired('Please provide a character name')]) is_dead = BooleanField(label="Is Dead")
class AttachmentFolderForm(IndicoForm): title = HiddenField(_("Name"), [DataRequired()], widget=TypeaheadWidget(), description=_("The name of the folder.")) description = TextAreaField(_("Description"), description=_("Description of the folder and its content")) protected = BooleanField(_("Protected"), widget=SwitchWidget()) acl = PrincipalListField(_("Grant Access To"), [UsedIf(lambda form, field: form.protected.data)], groups=True, serializable=False, allow_external=True, description=_("The list of users and groups with access to the folder")) is_always_visible = BooleanField(_("Always Visible"), widget=SwitchWidget(), description=_("By default, folders are always visible, even if a user cannot " "access them. You can disable this behavior here, hiding the folder " "for anyone who does not have permission to access it.")) def __init__(self, *args, **kwargs): self.linked_object = kwargs.pop('linked_object') super(AttachmentFolderForm, self).__init__(*args, **kwargs) self.title.choices = self._get_title_suggestions() def _get_title_suggestions(self): query = db.session.query(AttachmentFolder.title).filter_by(is_deleted=False, is_default=False, linked_object=self.linked_object) existing = set(x[0] for x in query) suggestions = set(get_default_folder_names()) - existing if self.title.data: suggestions.add(self.title.data) return sorted(suggestions) @generated_data def protection_mode(self): return ProtectionMode.protected if self.protected.data else ProtectionMode.inheriting
class MailtoolForm(Form): recipients = HiddenField() subject = StringField("Subject", render_kw={"placeholder": "Enter the email subject"}) replyto = StringField( "Reply-To", render_kw={"placeholder": "Enter an alternative reply-to address (optional)"}) dryrun = BooleanField("Dry-run") body = TextAreaField("Body", render_kw=_taf)
class PasswordResetRequestForm(FlaskForm): email=StringField('Email',validators=[DataRequired(),Length(1,64),Email()]) captcha = CaptchaField('验证码') captcha_input = StringField('', validators=[DataRequired(), Length(4, 4), Captcha_equalTo('hidden_right_captcha', '验证码错误')]) hidden_right_captcha = HiddenField() submit=SubmitField('发送重置密码邮件')
class FormCadastro(FlaskForm): num_reg = StringField('Número de Registro') tipo_reg = QuerySelectField('Tipo de Documento', query_factory=escolha_tipo, allow_blank=True, get_label='name') objeto = TextAreaField('Objeto', validators=[InputRequired(), length(max=2000)]) origem = QuerySelectField('Origem', query_factory=escolha_setor_a, allow_blank=True, get_label='name') tipo_destino = SelectField('Tipo de Destino', choices=[('0', ''), ('1', 'Interno'), ('2', 'Externo - Fornecedores'), ('3', 'Externo - Orgão Governo')], coerce=int) destino = NonValidatingSelectField('Destino', choices=[]) date_criacao = DateTimeField('Data de Criação') solicitante = QuerySelectField('Interessado', query_factory=escolha_user, allow_blank=True) criador = StringField('Criado por:') botao1 = SubmitField('Salvar') branco = HiddenField('')
class RunForm(FlaskForm): id_org = SelectField('Organization', [DataRequired()], choices=[("actc", "ACTC"), ("apat", "APAT"), ("aptp", "APTP"), ( "auvo", "AUVO"), ("carx", "CARX"), ("cur", "CUR"), ("gpu", "GPU"), ("mss", "MSS"), ("tc", "TC"), ("tr", "TR")]) year = IntegerField('Year') manual = BooleanField('Manual') org = HiddenField('org') submit = SubmitField('create')
class UploadForm(FlaskForm): uploaded = FileField(validators=[ FileRequired(), FileAllowed(VALID_FILE_EXTENSIONS, 'Certain images only') ]) folder_id = HiddenField('FolderId', validators=[DataRequired()]) submit = SubmitField('Upload')
class AttachmentFolderForm(IndicoForm): title = HiddenField(_('Name'), [DataRequired()], widget=TypeaheadWidget(), description=_('The name of the folder.')) description = TextAreaField( _('Description'), description=_('Description of the folder and its content')) protected = BooleanField(_('Protected'), widget=SwitchWidget()) acl = AccessControlListField( _('Access control list'), [UsedIf(lambda form, field: form.protected.data)], allow_groups=True, allow_external_users=True, allow_event_roles=True, allow_category_roles=True, allow_registration_forms=True, event=lambda form: form.event, description=_( 'The list of users and groups allowed to access the folder')) is_always_visible = BooleanField( _('Always Visible'), [HiddenUnless('is_hidden', value=False)], widget=SwitchWidget(), description=_( 'By default, folders are always visible, even if a user cannot ' 'access them. You can disable this behavior here, hiding the folder ' 'for anyone who does not have permission to access it.')) is_hidden = BooleanField( _('Always hidden'), [HiddenUnless('is_always_visible', value=False)], widget=SwitchWidget(), description= _('Always hide the folder and its contents from public display areas of ' 'the event. You can use this for folders to store non-image files used ' 'e.g. in download links. The access permissions still apply.')) def __init__(self, *args, **kwargs): self.linked_object = kwargs.pop('linked_object') self.event = getattr(self.linked_object, 'event', None) # not present in categories super().__init__(*args, **kwargs) self.title.choices = self._get_title_suggestions() def _get_title_suggestions(self): query = db.session.query(AttachmentFolder.title).filter_by( is_deleted=False, is_default=False, object=self.linked_object) existing = {x[0] for x in query} suggestions = set(get_default_folder_names()) - existing if self.title.data: suggestions.add(self.title.data) return sorted(suggestions) def validate_is_always_visible(self, field): if self.is_always_visible.data and self.is_hidden.data: raise ValidationError( 'These two options cannot be used at the same time') validate_is_hidden = validate_is_always_visible @generated_data def protection_mode(self): return ProtectionMode.protected if self.protected.data else ProtectionMode.inheriting
class NewBookingConfirmForm(NewBookingPeriodForm): booked_for_id = HiddenField(_(u'User'), [InputRequired()]) booked_for_name = StringField() # just for displaying contact_email = StringField( _(u'Email'), [InputRequired(), IndicoEmail(multi=True)]) contact_phone = StringField(_(u'Telephone')) booking_reason = TextAreaField(_(u'Reason'), [DataRequired()]) uses_vc = BooleanField(_(u'I will use videoconference equipment')) used_equipment = IndicoQuerySelectMultipleCheckboxField( _(u'VC equipment'), get_label=lambda x: x.name) needs_vc_assistance = BooleanField( _(u'Request assistance for the startup of the videoconference session. ' u'This support is usually performed remotely.')) needs_assistance = BooleanField( _(u'Request personal assistance for meeting startup')) submit_book = SubmitField(_(u'Create booking')) submit_prebook = SubmitField(_(u'Create pre-booking')) def validate_used_equipment(self, field): if field.data and not self.uses_vc.data: raise ValidationError( _(u'Video Conference equipment is not used.')) elif not field.data and self.uses_vc.data: raise ValidationError( _(u'You need to select some Video Conference equipment')) def validate_needs_vc_assistance(self, field): if field.data and not self.uses_vc.data: raise ValidationError( _(u'Video Conference equipment is not used.'))
class OfferChangeForm(Form): ids = HiddenField() tags = QuerySelectMultipleField( get_label="name", query_factory=lambda: Criterion.query.all(), # pylint: disable=unnecessary-lambda allow_blank=True, ) remove_other_tags = BooleanField(label="Supprimer tous les autres tags", )
class EditAttachmentFileForm(EditAttachmentFormBase): file = HiddenField( _("File"), widget=DropzoneWidget(max_files=1, submit_form=False, add_remove_links=False), description=_( "Already uploaded file. Replace it by adding a new file."))
class DomainForm(FlaskForm): domain = StringField('Domain') old_domain = HiddenField('Old Domain') ext_ignore = StringField('Extensions to ignore') paths_ignore = StringField('Paths to ignore') s3_storage_bucket = StringField('S3 Storage Bucket') azure_profile_name = StringField('Azure Profile Name') inactive = BooleanField('Inactive?') submit = SubmitField('Add/Edit Domain')
class ChangePassowrdForm(FlaskForm): old_password = PasswordField('旧密码', validators=[DataRequired()]) password = PasswordField('新密码', validators=[DataRequired(), Not_equalTo('old_password', message='不能和旧密码相同'), EqualTo('re_password', message='两次输入的新密码必须相同'), Length(8, 16)]) re_password = PasswordField('确认新密码', validators=[DataRequired(), Length(8, 16)]) captcha = CaptchaField('验证码') captcha_input=StringField('',validators=[DataRequired(),Length(4,4),Captcha_equalTo('hidden_right_captcha','验证码错误')]) hidden_right_captcha=HiddenField() submit = SubmitField('更新')
class TaskUpdateStatusForm(FlashingForm): def __init__(self, **kwargs): super().__init__(**kwargs) self.status.choices = _get_task_status_type_choices() task_id = HiddenField() status = SelectField("New Status", validators=[DataRequired()]) notes = TextAreaField("Notes", validators=[Length(max=255)])
class TaskUpdateAssignedUserForm(FlashingForm): def __init__(self, **kwargs): super().__init__(**kwargs) self.assigned_user.choices = _get_task_assigned_user_choices() task_id = HiddenField() assigned_user = SelectField("Assigned User", validators=[DataRequired()]) notes = TextAreaField("Notes", validators=[Length(max=255)])
class ExtrasForm(Form): code = HiddenField("code") participant_roomtype = SelectField("Room type", choices=sel_participant_roomtypes, validators=[ check_participant_roomtype_formconstraint("participant_roompartner", ["guest1_roomtype", "guest2_roomtype"])]) participant_roompartner = SelectField("Share room with", choices=sel_all_participants) participant_arrival = DateField("Arrival", format="%d/%m/%Y", default=default_arrival_date, validators=[start_date_check]) participant_departure = DateField("Departure", format="%d/%m/%Y", default=default_departure_date, validators=[end_date_check, dates_check("participant_arrival")]) guest1_roomtype = SelectField("Guest 1: room type", choices=sel_guest_roomtypes, validators=[guest_consistency_check( "guest1_name"), check_guest_roomtype_formconstraint("participant_roomtype", "guest2_roomtype")]) guest1_name = StringField("Guest 1: name", render_kw={ "placeholder": "Enter the name of Guest 1"}) guest1_arrival = DateField("Guest 1: arrival date", format="%d/%m/%Y", default=default_arrival_date) guest1_departure = DateField("Guest 1: departure date", format="%d/%m/%Y", default=default_departure_date, validators=[dates_check("guest1_arrival")]) guest2_roomtype = SelectField("Guest 2: room type", choices=sel_guest_roomtypes, validators=[guest_consistency_check( "guest2_name"), check_guest_roomtype_formconstraint("participant_roomtype", "guest1_roomtype")]) guest2_name = StringField("Guest 2: name", render_kw={ "placeholder": "Enter the name of Guest 2"}) guest2_arrival = DateField("Guest 2: arrival date", format="%d/%m/%Y", default=default_arrival_date) guest2_departure = DateField("Guest 2: departure date", format="%d/%m/%Y", default=default_departure_date, validators=[dates_check("guest2_arrival")]) num_dinner_friday = IntegerField("Extra Friday dinners", validators=[ validators.NumberRange(min=0)], default=0) num_lunch_saturday = IntegerField("Extra Saturday lunches", validators=[ validators.NumberRange(min=0)], default=0) num_after_concert = IntegerField("Extra after-show snacks", validators=[validators.NumberRange(min=0)], default=0) # num_show_tickets_regular = IntegerField("Show tickets (regular)", validators=[validators.NumberRange(min=0)], default=0) # num_show_tickets_discount = IntegerField("Show tickets (discounted)", validators=[validators.NumberRange(min=0)], default=0) guest = TextAreaField( "Further guest info", default="Room for any other comments regarding your guests.", render_kw=_taf) # sat_dinner_restaurant = SelectField("Restaurant", choices=sel_restaurants, validators=[restaurant_consistency_check("sat_dinner_numpeople")]) # sat_dinner_numpeople = IntegerField("Number of people", validators=[validators.NumberRange(min=0)], default=0) # special_event_tickets = IntegerField("Tickets to special event", validators=[validators.NumberRange(min=0)], default=0) # tshirt_sex = SelectField("Style", choices=sel_t_shirt_sexes) # tshirt_size = SelectField("Size", choices=sel_t_shirt_sizes) # tshirt_spec = SelectField("Color", choices=sel_t_shirt_specs) phone = StringField("Your number (optional)") other = TextAreaField( "Comments", default="Tell us anything else we need to know here.", render_kw=_taf)
class BillOwersForm(FlaskForm): weight_validators = [ NumberRange(min=0, message="Weights should be positive") ] included = BooleanField("Included in the bill", validators=[]) person_id = HiddenField("Person Id", validators=[DataRequired()]) person_name = StringField("Ower") weight = CommaDecimalField(_("Weight"), default=1, validators=weight_validators)
class EditEntryForm(FlaskForm): """ Edit a transaction / entry Form """ id = HiddenField() game_session = IntegerField( label='Session', validators=[InputRequired('Please provide game session number.')]) description = SearchField( label='Description', validators=[InputRequired('Please provide a name')]) amount = FloatField(label='Amount', validators=[InputRequired('Please enter an amount.')]) submit = SubmitField('Save')
class LoginForm(FlaskForm): email = StringField(EMAIL_DIAPLAY_NAME, validators=[DataRequired(), Length(6, 64), Email()]) password = PasswordField(PASSWORD_DIAPLAY_NAME, validators=[DataRequired(), Length(6, 18)]) # recaptcha = RecaptchaField() captcha = CaptchaField('验证码') captcha_input = StringField('', validators=[DataRequired(), Length(4, 4), Captcha_equalTo('hidden_right_captcha', '验证码错误')]) hidden_right_captcha = HiddenField() remember_me = BooleanField(REMEMBER_ME_DIAPLAY_NAME) submit = SubmitField(SUBMIT_LOGIN_DIAPLAY_NAME)
class RoomForm(IndicoForm): name = StringField(_(u'Name')) site = StringField(_(u'Site')) building = StringField(_(u'Building'), [DataRequired()]) floor = StringField(_(u'Floor'), [DataRequired()]) number = StringField(_(u'Number'), [DataRequired()]) longitude = FloatField(_(u'Longitude'), [Optional()]) latitude = FloatField(_(u'Latitude'), [Optional()]) is_active = BooleanField(_(u'Active'), default=True) is_reservable = BooleanField(_(u'Public'), default=True) reservations_need_confirmation = BooleanField(_(u'Confirmations')) notification_for_assistance = BooleanField(_(u'Assistance')) notification_before_days = IntegerField( _(u'Notification on booking start - X days before'), [Optional(), NumberRange(min=0, max=9)], default=0) notification_for_responsible = BooleanField( _(u'Notification to responsible, too')) owner_id = HiddenField(_(u'Responsible user'), [DataRequired()]) key_location = StringField(_(u'Where is key?')) telephone = StringField(_(u'Telephone')) capacity = IntegerField( _(u'Capacity'), [DataRequired(), NumberRange(min=1)], default=20) division = StringField(_(u'Department')) surface_area = IntegerField(_(u'Surface area'), [Optional(), NumberRange(min=0)]) max_advance_days = IntegerField( _(u'Maximum advance time for bookings'), [Optional(), NumberRange(min=1)]) comments = TextAreaField(_(u'Comments')) delete_photos = BooleanField(_(u'Delete photos')) large_photo = FileField(_(u'Large photo')) small_photo = FileField(_(u'Small photo')) available_equipment = IndicoQuerySelectMultipleCheckboxField( _(u'Equipment'), get_label=_get_equipment_label, modify_object_list=_group_equipment) # attribute_* - set at runtime bookable_hours = FieldList(FormField(_TimePair), min_entries=1) nonbookable_periods = FieldList(FormField(_DateTimePair), min_entries=1) def validate_large_photo(self, field): if not field.data and self.small_photo.data: raise ValidationError( _(u'When uploading a small photo you need to upload a large photo, too.' )) def validate_small_photo(self, field): if not field.data and self.large_photo.data: raise ValidationError( _(u'When uploading a large photo you need to upload a small photo, too.' ))
class ChangeEmailForm(FlaskForm): email = StringField('新邮箱', validators=[DataRequired(), Length(1, 64), Email()]) password = PasswordField('密码', validators=[DataRequired()]) captcha = CaptchaField('验证码') captcha_input = StringField('', validators=[DataRequired(), Length(4, 4), Captcha_equalTo('hidden_right_captcha', '验证码错误')]) hidden_right_captcha = HiddenField() submit = SubmitField('更新邮箱') def validate_email(self, field): if User().get_user(email=field.data): raise ValidationError('邮箱已经存在.')
class FormSessao(FlaskForm): id = HiddenField(validators=[Optional()]) tipo = SelectField( "Tipo de sessão", choices=[ ("Sessão Ordinária", "Sessão Ordinária"), ("Audiência Pública", "Audiência Pública"), ], default="Sessão Ordinária", ) data = DateField("Data da sessão", validators=[DataRequired()]) hora = TimeField("Hora da sessão", validators=[DataRequired()]) detalhes = TextAreaField("Detalhes/Pauta")
class RedirectForm(FlaskForm): next = HiddenField() def __init__(self, *args, **kwargs): # super(RedirectForm, self).__init__(self, *args, **kwargs) FlaskForm.__init__(self, *args, **kwargs) if not self.next.data: self.next.data = get_redirect_target() or '' def redirect(self, endpoint='index', **values): if is_safe_url(self.next.data): return redirect(self.next.data) target = get_redirect_target() return redirect(target or url_for(endpoint, **values))