class IndexForm(FlaskForm): """ Form on the index page. This form is compose of two select fields for each team. """ team = SelectField( 'Team 1', [DataRequired(), NoneOf(['Choose a country'], 'Invalid country.')]) opponent = SelectField( 'Team 2', [DataRequired(), NoneOf(['Choose a country'], 'Invalid country.')]) submit = SubmitField('And the winner is...') def init_choice(self, choice: list, default_choice='Choose a country'): """ Initialize the choice list for team and opponent SelectField and add a default value. Parameters ---------- choice : list list of values to put in the choice attribute default_choice : str default value for SelectField (the default is 'Choose a country'). """ if type(choice) != type(list()): choice = list(choice) choice = list_to_list_two_tuples([default_choice] + choice) self.team.choices = choice self.opponent.choices = choice
class JoinForm(FlaskForm): username = StringField( 'Username', validators=[ NoneOf(get_users(), message= "This username is already in use, please pick another one") ]) password = PasswordField( 'Password', validators=[ Length(min=8, message= "Please make sure your password has eight letters or more") ]) learner_name = StringField('Learner Name', validators=[DataRequired()]) email = StringField( 'Email', validators=[ Email(), NoneOf( get_user_emails(), message= "This email address is already in use, please check you are not already a member" ) ]) submit = SubmitField(label='Register')
class InputForm(FlaskForm): if not csrf: class Meta: csrf = False # setup input type choices for drop down list input_type_tags = ('empty', 'constant', 'normal', 'uniform') input_type_labels = ('', 'Constant', 'Normal', 'Uniform') input_type_choices = tuple(zip(input_type_tags, input_type_labels)) # setup form choices and labels for input details input_detail_field_forms = (EmptyInputDetailsForm, ConstantInputDetailsForm, NormInputDetailsForm, UniformInputDetailsForm) input_detail_field_form_labels = tuple( '{} Input Details Form'.format(input_type_label) \ if not input_type_label == '' else '' \ for input_type_label in input_type_labels ) keyed_input_detail_field_forms = dict( zip(input_type_tags, input_detail_field_forms)) keyed_input_detail_labels = dict( zip(input_type_tags, input_detail_field_form_labels)) # create input fields for generic input form input_name = StringField( 'Input Name', default='', validators=[ DataRequired(), NoneOf( none_of, message= 'Input name must be unique. (Cannot be any of: %(values)s.)' ) ], render_kw={ 'onchange': 'this.form.submit()', 'onkeypress': 'return event.keyCode != 13;' }) input_type = SelectField( 'Input Distribution Type', choices=input_type_choices, default='empty', validators=([NoneOf(('empty'), message='This field is required.')]), render_kw={ 'onchange': 'this.form.submit()', 'onkeypress': 'return event.keyCode != 13;' })
class CareerForm(FlaskForm): career = SelectField( 'Career Field', validators=[NoneOf(["-1"], message="select a field to search")], choices=careers, default="-1") pathway = SelectField('Career Area') state = SelectField( 'State to Work In', validators=[NoneOf(["-1"], message="select your state")], choices=states, default=["-1"]) education = SelectField( "Highest Current Level of Education", validators=[NoneOf(["-1"], message="select your education level")], choices=edufield, default=["-1"]) experience = SelectField( "Years of Work Experience in Field", validators=[NoneOf(["-1"], message="select your experience level")], choices=explevel, default=["-1"]) submit = SubmitField("Search") clear = SubmitField("Clear") choose = SubmitField("Select Field") return_data = None test_bls = SubmitField("test BLS data") test_onet = SubmitField("test O*NET data") test_educ = SubmitField("test educ data") def paths_for_career(self, data): ''' generate a filtered list of pathways for each career area to keep those drop downs tidy. ''' valid_codes = links.get(data, ["-1"]) path_choices = [] for code, choice in pathways: if code in valid_codes: path_choices.append((code, choice)) return path_choices
class CRNForm(FlaskForm): course = IntegerField( 'Enter Course CRN', validators=[ AnyOf(course_valid(), message='That course number could not be found.'), NoneOf(course_invalid(), message="""This course is not full! It is available for sign up on Banner."""), NoneOf(wishlist_get(current_user.id), message='This course is already on your wishlist.') ]) addcourse = SubmitField('Add to wishlist')
class WishAdd(FlaskForm): CRN = IntegerField( 'Course Number', validators=[ DataRequired(), AnyOf(course_valid(), message='That course number could not be found.'), NoneOf(course_invalid(), message="""This course is not full! It is available for sign up on Banner."""), NoneOf(wishlist_get(current_user.id), message='This course is already on your wishlist.') ]) submit = SubmitField('Add Wish')
class SignUpForm(FlaskForm): name = TextField('Full Name', validators=[DataRequired()]) studentID = TextField( 'Student ID', validators=[ DataRequired(), NoneOf(id_list(), message='That ID is in use already.'), Length(8, message='Field must be 8 characters long.'), Regexp('^[0-9]*$', message='Input must be numerical.') ]) year = SelectField('Class', choices=[('Freshman', 'Freshman'), ('Sophomore', 'Sophomore'), ('Junior', 'Junior'), ('Senior', 'Senior')]) user = TextField('Email', validators=[DataRequired(), Email()]) passw = PasswordField('Password', validators=[ DataRequired(), EqualTo('pass2', message='Passwords must match') ]) pass2 = PasswordField('Enter Password Again') submit = SubmitField('Sign Up')
class RegisterForm(Form): nickname = StringField( 'Name', validators=[ DataRequired(), Length(*NICKNAME_LENGTH), NonDuplicate(User, 'nickname'), NoneOf([arbiter.NO_PLAYER_NAME]), ]) email = StringField( 'E-mail', validators=[ DataRequired(), Email(), NonDuplicate(User, 'email') ]) password = PasswordField( 'Password', validators=[DataRequired(), Length(*PASSWORD_LENGTH)]) password_check = PasswordField( 'Re-enter password', validators=[ DataRequired(), EqualTo('password', message="Passwords must match.") ]) submit = SubmitField('Sign up')
class EditProfileForm(FlaskForm): username = StringField( 'Username', validators=[InputRequired(), Length(min=1, max=64), NoneOf(['admin'])]) email = StringField( 'Email', validators=[InputRequired(), Email(), Length(min=1, max=120)]) password = PasswordField('Password') password2 = PasswordField('Repeat Password', validators=[EqualTo('password')]) submit = SubmitField('OK') cancel = SubmitField('Cancel') def __init__(self, original_username, original_email, *args, **kwargs): super(EditProfileForm, self).__init__(*args, **kwargs) self.original_username = original_username self.original_email = original_email self.password.description = 'Leave the password fields empty if you don' 't want to change your password' def validate_username(self, username): if username.data != self.original_username: user = User.query.filter_by(username=self.username.data).first() if user is not None: raise ValidationError('Please use a different username.') def validate_email(self, email): if email.data != self.original_email: user = User.query.filter_by(email=self.email.data).first() if user is not None: raise ValidationError('Please use a different email.')
class ExportSelectionForm(FlaskForm): data_list = [ ('', ''), ("SURVEY_SUBSAMPLE", "Survey Subsample"), ("PS_FINAL", "Final Weight Summary"), ("SHIFT_DATA", "Shift"), ("NON_RESPONSE_DATA", "Non-Response"), ("PS_SHIFT_DATA", "Shift Weight Summary"), ("PS_NON_RESPONSE", "Non Response Weight Summary"), ("PS_MINIMUMS", "Minimum Weight Summary"), ("PS_TRAFFIC", "Traffic Weight Summary"), ("PS_UNSAMPLED_OOH", "Unsampled Traffic Weight Summary"), ("PS_IMBALANCE", "Imbalance Weight Summary") ] # ("ALL_DATA", "All Data"), # ("SAS_AIR_MILES", "Air Miles"), # ("ALCOHOL", "Alcohol"), # ("REGIONAL", "Regional"), # ("CONTACT", "Contact"), # ("MIGRATION", "Migration")] filename = StringField(label='Save file as', validators=[InputRequired(), Regexp(r'^[\w+-]+$'), NoneOf([" ", ".", ",", "'"])]) data_selection = SelectField(label='Select Data', choices=data_list, validators=[InputRequired()]) display_data = SubmitField(label='Export Data') cancel_button = SubmitField(label='Cancel')
class SignUpForm(Form): """Simple form to upload SSH keys and choose the username.""" name_len = "Provided username length is not valid (3 <= length <= 32)." username = StringField( id="username", label="Username", description="The username to use with the system", render_kw={ "aria-describedby": "usernameHelp", "placeholder": "Choose a username." }, validators=[ InputRequired(message="A username is required."), Length(min=3, max=32, message=name_len), NoneOf(config_get("INVALID_USERNAMES"), message="Provided username is not valid."), username_characters_check, username_duplicates_check ]) ssh_key = TextAreaField( id="sshkey", label="SSH Key", description="Your public SSH key", render_kw={ "autocomplete": "off", "rows": 10, "aria-describedby": "sshkeyHelp", "placeholder": "Copy and paste your public SSH key." }, validators=[ InputRequired(message="An SSH key is required."), sshkey_valid_check ])
def add_date_fields(form: Any) -> None: validator_day = [Optional(), NumberRange(min=1, max=31)] validator_month = [Optional(), NumberRange(min=1, max=12)] validator_year = [Optional(), NumberRange(min=-4713, max=9999), NoneOf([0])] setattr(form, 'begin_year_from', IntegerField( render_kw={'placeholder': _('YYYY')}, validators=validator_year)) setattr(form, 'begin_month_from', IntegerField( render_kw={'placeholder': _('MM')}, validators=validator_month)) setattr(form, 'begin_day_from', IntegerField( render_kw={'placeholder': _('DD')}, validators=validator_day)) setattr(form, 'begin_year_to', IntegerField( render_kw={'placeholder': _('YYYY')}, validators=validator_year)) setattr(form, 'begin_month_to', IntegerField( render_kw={'placeholder': _('MM')}, validators=validator_month)) setattr(form, 'begin_day_to', IntegerField( render_kw={'placeholder': _('DD')}, validators=validator_day)) setattr(form, 'begin_comment', StringField( render_kw={'placeholder': _('comment')})) setattr(form, 'end_year_from', IntegerField( render_kw={'placeholder': _('YYYY')}, validators=validator_year)) setattr(form, 'end_month_from', IntegerField( render_kw={'placeholder': _('MM')}, validators=validator_month)) setattr(form, 'end_day_from', IntegerField( render_kw={'placeholder': _('DD')}, validators=validator_day)) setattr(form, 'end_year_to', IntegerField( render_kw={'placeholder': _('YYYY')}, validators=validator_year)) setattr(form, 'end_month_to', IntegerField( render_kw={'placeholder': _('MM')}, validators=validator_month)) setattr(form, 'end_day_to', IntegerField( render_kw={'placeholder': _('DD')}, validators=validator_day)) setattr(form, 'end_comment', StringField( render_kw={'placeholder': _('comment')}))
class RegistrationForm(FlaskForm): username = StringField('Username (ideally: short, memorable, no spaces)', validators=[DataRequired(), NoneOf(['now'])]) email = StringField('E-mail (please use & enter your corporate e-mail)', validators=[DataRequired(), Email()]) lunch_time = TimeField('I usually go for lunch at (HH:MM)', validators=[DataRequired()]) invite_me = BooleanField( 'Every workday, invite me for lunch, if there\'s a match') site = StringField('What\'s your company\'s Site name or nearby City', validators=[Length(min=0, max=32), DataRequired()]) canteen = StringField('Canteen (an empty value means: ALL at your Site)', validators=[Length(min=0, max=32)]) password = PasswordField('Password', validators=[DataRequired()]) password2 = PasswordField('Repeat Password', validators=[DataRequired(), EqualTo('password')]) #recaptcha = RecaptchaField() submit = SubmitField('Register') def validate_username(self, username): user = User.query.filter_by(username=username.data).first() if user is not None: raise ValidationError('Please use a different username.') def validate_email(self, email): user = User.query.filter_by(email=email.data.lower()).first() if user is not None: raise ValidationError('Please use a different email address.')
class EditProfileForm(FlaskForm): username = StringField( 'Username (ideally: short, memorable, no spaces)', validators=[DataRequired(), Length(min=0, max=32), NoneOf(['now'])]) about_me = TextAreaField('About me (free text)', validators=[Length(min=0, max=140)]) topics = TextAreaField('Topics (please use keywords separated by space)', validators=[Length(min=0, max=140)]) lunch_time = TimeField('I usually go for lunch at (HH:MM)', validators=[DataRequired()]) invite_me = BooleanField( 'Every workday, invite me for lunch, if there\'s a match') site = StringField('What\'s your company\'s Site name or nearby City', validators=[Length(min=0, max=32), DataRequired()]) canteen = StringField('Canteen (an empty value means: ALL at your Site)', validators=[Length(min=0, max=32)]) submit = SubmitField('Submit') def __init__(self, original_username, *args, **kwargs): super(EditProfileForm, self).__init__(*args, **kwargs) self.original_username = original_username def validate_username(self, username): if username.data != self.original_username: user = User.query.filter_by(username=self.username.data).first() if user is not None: raise ValidationError('Please use a different username.')
def set_match_form_choices_validators( form: Union[MatchForm, MatchSearchForm], team_id: int, *args) -> MatchForm: """ Set the choices and validators in a MatchForm. :param form: form to configure :param team_id: id of team setting up the match :return: """ teams, team_options = _team_choices_validators( [get_unassigned_team_id(), team_id]) form.opposition.choices = teams form.opposition.validators = [ AnyOf(team_options, message="Please select a team from the list"), NoneOf([team_id], message="Duplicate home and away team") ] if FormArgs.TEAM_REQ in args or FormArgs.TEAM_NOT_REQ not in args \ else [] if FormArgs.FREE_MIN in args: form.start_time.validators = [ InputRequired(), ValidateDateTime(dt_format=APP_DATETIME_FMT) ] return form
class SicknessForm(BaseForm): name = StringField('name', validators=[NoneOf(['"', "'", ";", "/", "\\"], message="\", ', ;, /, \\ are not allowed")]) description = TextAreaField('description', validators=[Regexp(".*")]) severity = StringField('prescription', validators=[Regexp("[1-5]", message="Введите тяжесть от 1 до 5")]) def get_item(self, index): return { 0: self.name, 1: self.description, 2: self.severity }[index] def __len__(self): return 3 def create_instance(self, _id=0): if _id == 0: sick = Sickness(name=self.name.data, description=self.description.data, severity=self.severity.data) else: sick = Sickness.get_by_id(_id) sick.name = self.name.data sick.description = self.description.data sick.severity = self.severity.data sick.save() def delete_instance(self, _id): sick = Sickness.get_by_id(_id) sick.delete_instance()
class SymptomForm(BaseForm): name = StringField('name', validators=[NoneOf(['"', "'", ";", "/", "\\"], message="\", ', ;, /, \\ are not allowed")]) description = TextAreaField('description', validators=[Regexp(".*")]) def get_item(self, index): return { 0: self.name, 1: self.description }[index] def __len__(self): return 2 def create_instance(self, _id=0): if _id == 0: sym = Symptom(name=self.name.data, description=self.description.data) else: sym = Symptom.get_by_id(_id) sym.name = self.name.data sym.description = self.description.data sym.save() def delete_instance(self, _id): sym = Symptom.get_by_id(_id) sym.delete_instance()
class DrugForm(BaseForm): name = StringField('name', validators=[NoneOf(['"', "'", ";", "/", "\\"], message="\", ', ;, /, \\ are not allowed")]) description = TextAreaField('description', validators=[Regexp(".*")]) prescription = StringField('prescription', validators=[Regexp("[01]", message="0 - без рецета, 1 - по рецепту")]) def get_item(self, index): return { 0: self.name, 1: self.description, 2: self.prescription }[index] def __len__(self): return 3 def create_instance(self, _id=0): if _id == 0: drug = Drug(name=self.name.data, description=self.description.data, prescription=self.prescription.data) else: drug = Drug.get_by_id(_id) drug.name = self.name.data drug.description = self.description.data drug.prescription = self.prescription.data drug.save() def delete_instance(self, _id): drug = Drug.get_by_id(_id) drug.delete_instance()
class DowntimeBarForm(FlaskForm): form_template = "key_date_time" graph_name = "Downtime Bar Chart" description = "A bar chart showing the total amount of each activity for selected machines between two times" key = SelectField(validators=[ NoneOf(MACHINES_CHOICES_HEADERS, message="Pick a machine or group") ], id="downtime_bar_machines") start_date = DateField(validators=[DataRequired()], format=DATE_FORMAT, id="downtime_bar_start_date", label="Start Date (DD-MM-YYYY)", default=datetime.now()) end_date = DateField(validators=[DataRequired()], format=DATE_FORMAT, id="downtime_bar_end_date", label="End Date (DD-MM-YYYY)", default=datetime.now() + timedelta(days=1)) start_time = TimeField(validators=[DataRequired()], format=TIME_FORMAT, default=midnight, id="downtime_bar_start_time") end_time = TimeField(validators=[DataRequired()], format=TIME_FORMAT, default=midnight, id="downtime_bar_end_time") submit = SubmitField('Submit', id="downtime_bar_submit")
class NewCategoryForm(FlaskForm): new_category_name = StringField('分类', [ DataRequired(), Length(1, 50, message='请将分类名限制在1-20字内'), NoneOf('未分类', message='无法创建该分类') ]) submit = SubmitField('提交')
def test_none_of_passes(dummy_form, dummy_field): """ it should pass if the value is not present in list """ dummy_field.data = "d" validator = NoneOf(["a", "b", "c"]) validator(dummy_form, dummy_field)
class SignupForm(Form): phone_providers = [('default', '-Please Choose Your Provider-'), ('alltell', 'Alltell Wireless'), ('att', 'AT&T'), ('boost', 'Boost Mobile'), ('cricket', 'Cricket'), ('metropcs', 'Metro PCS'), ('projectfi', 'Project Fi'), ('sprint', 'Sprint'), ('straighttalk', 'Straight Talk'), ('tmobile', 'T-Mobile'), ('uscellular', 'U.S. Cellular'), ('verizon', 'Verizon Wireless'), ('virgin', 'Virgin Mobile'), ('other', 'Other Provider')] #phone = StringField('phone', validators=[Regexp('9 digits or 10 if the first is 1')]) lname = StringField( 'lname', validators=[DataRequired(message='Please enter your last name.')]) fname = StringField( 'fname', validators=[DataRequired(message='Please enter your first name.')]) phone = StringField( 'phone', validators=[DataRequired(message='A valid phone number is required.')]) provider = SelectField( 'provider', validators=[ NoneOf(('default', ), message='Please select a wireless provider.') ], choices=phone_providers)
class SSLHostForm(Form): config_path = TextField(u'SER2SOCK Configuration Path', [Required(), PathExists()], default='/etc/ser2sock') device_address = TextField(u'Address', [Required(), Length(max=255)], description=u'Hostname or IP address', default='localhost') device_port = IntegerField(u'Port', [Required(), NumberRange(1024, 65535), NoneOf(values=[80,443,5000], message="The port value is reserved by other services. Please choose another port.")], description=u'', default=10000) ssl = BooleanField(u'Encrypt ser2sock?') buttons = FormField(SetupButtonForm)
class GanttForm(FlaskForm): form_template = "key_date_time" graph_name = "Machine Status Gantt Chart" description = "A Gantt chart showing the activity of a single machine or multiple machines. Time is plotted on the x-axis and different " \ "colours represent different activities." key = SelectField(validators=[ NoneOf(MACHINES_CHOICES_HEADERS, message="Pick a machine or group") ], id="gantt_machines") start_date = DateField(validators=[DataRequired()], format=DATE_FORMAT, label="Start Date (DD-MM-YYYY)", default=datetime.now()) end_date = DateField(validators=[DataRequired()], format=DATE_FORMAT, label="End Date (DD-MM-YYYY)", default=datetime.now() + timedelta(days=1)) start_time = TimeField(validators=[DataRequired()], format=TIME_FORMAT, default=midnight, id="gantt_start_time") end_time = TimeField(validators=[DataRequired()], format=TIME_FORMAT, default=midnight, id="gantt_end_time") submit = SubmitField('Submit', id="gantt_submit")
def test_none_of_pases(dummy_form, dummy_field): """ it should pass if the value is not present in list """ dummy_field.data = 'd' validator = NoneOf(['a', 'b', 'c']) validator(dummy_form, dummy_field)
class TripForm(FlaskForm): name = StringField('Name', validators=[DataRequired(), Length(max=2000)]) country_code = SelectField('Country', choices=[], validators=[Optional(strip_whitespace=True)]) center_lat = DecimalField('Center latitude', places=5) center_lon = DecimalField('Center longitude', places=5) slug = StringField('Slug', validators=[ DataRequired(), Length(min=3, max=2000), Regexp(r'\w[\w_-]*\w'), NoneOf(['new', 'update', 'delete']) ]) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.country_code.choices = list(self._country_code_choices()) def _country_code_choices(self): yield ('', '') file_name = pjoin(DATA_PATH, 'countries.json') with open(file_name) as f: for country in json.load(f): yield (country['Code'], country['Name'])
class RouterNewForm(FormPro): cityid = SelectFieldPro(u'所属地市', choices=lambda: area_choices(1, u'请选择地市')) town = SelectFieldPro(u'', choices=lambda: area_choices(2, u'请选择区县')) area_id = SelectFieldPro(u'所属区域', validators=[required(message=u'必填')], choices=lambda: area_choices(4, u'请选择接入点')) name = TextField(u'路由器名称', validators=[required(message=u'必填')]) alias = TextField(u'路由器别名', validators=[required(message=u'必填')]) addr = TextField(u'IP 地址', validators=[ required(message=u'必填'), IPAddress(message=u'IP地址格式不正确'), NoneOf(['0.0.0.0', '255.255.255.255'], message=u'IP地址格式不正确') ]) snmp_comm = TextField(u'读团体名', validators=[required(message=u'必填')]) snmp_wcomm = TextField(u'写团体名', validators=[required(message=u'必填')]) snmp_ver = RadioField(u'SNMP版本', default=SNMP_VER_DICT.keys()[0], validators=[required(message=u'必填')], choices=[(value, label) for value, label in SNMP_VER_DICT.items()]) mask = TextField(u'子网掩码') location = TextField(u'位置') remark = TextAreaField(u'备注信息')
class AnalysisForm(FlaskForm): id = HiddenField("Id") company_id = SelectField( "Yritys", validators=[NoneOf([''], 'Yritystä ei ole valittu')]) name = StringField("Nimi", validators=[ InputRequired('Nimi ei voi olla tyhjä'), Length( max=50, message='Nimi voi olla korkeintaan 50 merkkiä') ]) keywords = StringField( "Avainsanat", validators=[ InputRequired('Avainsanat ei voi olla tyhjä'), Length(max=150, message='Avainsanat voi olla korkeintaan 150 merkkiä') ]) ttargets = TextAreaField( "Kohteet", validators=[ Length(max=1024, message='Kohteet voi olla korkeintaan 1024 merkkiä') ]) locked = BooleanField("Lukittu") class Meta: csrf = False
class RegistrationForm(FlaskForm): # name -> input type - string, required name = StringField("name", [InputRequired()]) # surname -> input type - string, required surname = StringField("surname", [InputRequired()]) # username -> input type - string, required, unique username = StringField("username", [ InputRequired(), NoneOf(Admin.all_usernames(), message="An admin with this username already exists!") ]) # password -> input type - password, required, at least 8 characters long password = PasswordField("password", [ InputRequired(), Length(min=8, message="Password must be at least 8 characters!") ]) # confirm -> input type - password, equal to password confirm = PasswordField( "confirm", [EqualTo("password", message="Passwords must match!")]) # key -> input type - string, required, validated key = StringField("key", [InputRequired(), validate_key]) # passcode -> input type - string, passcode for entering passcode = StringField("passcode")
def test_none_of_raises(dummy_form, dummy_field): """ it should raise ValueError if the value is present in list """ dummy_field.data = "a" validator = NoneOf(["a", "b", "c"]) with pytest.raises(ValueError): validator(dummy_form, dummy_field)