class SurgeryForm(SectionForm): def get_summary(self): return self.fld_biopsy_tumour_diagnosis.data fld_surgery_consent_stat = SelectField( 'Has consent been taken from patient?', choices=SurgeryDict.consent_stat_choice) fld_surgery_consent_form = SelectField( 'Is consent form with signature present in file ?', choices=SurgeryDict.consent_form_choice) fld_surgery_block_serial_number = StringField( 'Block Serial Number', [validators.Length(min=1, max=5)], default=0) fld_surgery_block_location = StringField( "Block Location ID (Cabinet No.-Drawer No.-Column No.-Front/Back", default=tbd) fld_surgery_block_current_location = StringField( "What is the current location of block?", default=tbd) fld_surgery_block_id = StringField("Surgical Block ID", default=tbd) fld_surgery_block_number = IntegerField("Number of blocks", default=tbd) fld_surgery_path_lab_source = StringField("Pathology Lab source of blocks", default=tbd) fld_surgery_tumour_block_reference = TextAreaField( "Tumour block reference", default=tbd) fld_surgery_nodes_block_reference = TextAreaField("Nodes block reference", default=tbd) fld_surgery_adjacent_normal_block_reference = TextAreaField( "Adjacent Normal block reference", default=tbd) fld_surgery_reduction_tissue_block_reference = TextAreaField( "Reduction Tissue block reference", default=tbd) fld_surgery_date = DateField("Date of Surgery") fld_surgery_name_surgeon_id = StringField("Name of Surgeon", default='Dr. Koppiker') fld_surgery_hospital_id = StringField("Hospital ID", default=tbd) fld_surger_lesion_side = SelectField("Lesion Side", choices=CommonDict.breast_choice) fld_surger_lesion_side_other = StringField("Other") fld_surgery_right_breast_type = SelectField( "Type of Surgery for Right Breast", choices=SurgeryDict.surgery_type_choice) fld_surgery_right_breast_type_other = StringField("Other") fld_surgery_left_breast_type = SelectField( "Type of Surgery for Left Breast", choices=SurgeryDict.surgery_type_choice) fld_surgery_left_breast_type_other = StringField("Other") fld_surgery_tumour_size = StringField("Tumour size", default=tbd) fld_surgery_tumour_size_unit = StringField('Unit for tumour size', default='cm') fld_surgery_tumour_grade = SelectField( "Tumour Grade", choices=SurgeryDict.tumour_grade_choice) fld_surgery_tumour_grade_other = StringField("Other") fld_surgery_surgery_diagnosis = SelectField( "Surgery Diagnosis", choices=SurgeryDict.surgery_diagnosis_choice) fld_surgery_surgery_diagnosis_other = StringField("Other") fld_surgery_tumour_percent = StringField("Percent Tumour", default=tbd) fld_surgery_tumour_invasion_percent = StringField( "Percent Tumour Invasion", default=tbd) fld_surgery_dcis_invasion_other = StringField("Other") fld_surgery_perineural_invasion = SelectField( "Perineural Invasion", choices=CommonDict.absent_present_choice) fld_surgery_perineural_invasion_other = StringField("Other") fld_surgery_necrosis = SelectField( "Necrosis", choices=CommonDict.absent_present_choice) fld_surgery_necrosis_other = StringField("Other") fld_surgery_percent_vascular_invasion = StringField( "Percent Vascular invasion", default=tbd) fld_surgery_percent_lymphocyte_invasion = StringField( "Percent Lymphocyte invasion", default=tbd) fld_surgery_percent_stroma = StringField("Percent Stroma", default=tbd) fld_surgery_margin = SelectField("Margins", choices=SurgeryDict.margin_choice) fld_surgery_margin_other = StringField("Other") fld_pathological_complete_remission = SelectField( "Was pathological complete remission or no residual tumour " "observed?", choices=CommonDict.yes_no_choice) fld_pathological_complete_remission_other = StringField("Other") fld_surgery_er = SelectField("ER Status", choices=CommonDict.postive_negative_choice) fld_surgery_er_other = StringField("Other") fld_surgery_er_percent = StringField("ER Percent", default="0") fld_surgery_pr = SelectField("PR Status", choices=CommonDict.postive_negative_choice) fld_surgery_pr_other = StringField("Other") fld_surgery_pr_percent = StringField("PR Percent", default="0") fld_surgery_her2 = SelectField("HER2 Status", choices=SurgeryDict.tumour_her2_choice) fld_surgery_her2_other = StringField("Other") fld_surgery_her2_grade = StringField("HER2 Grade", default="0") fld_surgery_fish = SelectField("Tumour block FISH", choices=CommonDict.postive_negative_choice) fld_surgery_ki67 = StringField("Ki67 Percent", default="0") fld_surgery_sentinel_node_status = SelectField( "Status of Sentinel node", choices=SurgeryDict.node_choice) fld_surgery_sentinel_node_status_other = StringField('Other') fld_surgery_sentinel_node_removed = IntegerField( "Number of sentinel node removed", default=0) fld_surgery_sentinel_node_positive = IntegerField( "Number of sentinel node positive", default=0) fld_surgery_axillary_node_status = SelectField( "Status of Axillary node", choices=SurgeryDict.node_choice) fld_surgery_axillary_node_status_other = StringField('Other') fld_surgery_axillary_node_removed = IntegerField( "Number of axillary node removed", default=0) fld_surgery_axillary_node_positive = IntegerField( "Number of axillary node positive", default=0) fld_surgery_apical_node_status = SelectField( "Status of Apical node", choices=SurgeryDict.node_choice) fld_surgery_apical_node_status_other = StringField('Other') fld_surgery_apical_node_removed = IntegerField( "Number of apical node removed", default=0) fld_surgery_apical_node_positive = IntegerField( "Number of apical node positive", default=0) fld_surgery_perinodal_spread = SelectField( "Perinodal Spread", choices=CommonDict.absent_present_choice) fld_surgery_perinodal_spread_other = StringField('Other') fld_surgery_supraclavicular_node_involvement = SelectField( "Supraclavicular Node Involvment", choices=CommonDict.absent_present_choice) fld_surgery_supraclavicular_node_involvement_other = StringField('Other') fld_surgery_pt_status = SelectField("pT status", choices=SurgeryDict.pt_status_choice) fld_surgery_pt_status_other = StringField('Other') fld_surgery_pn_status = SelectField("pN status", choices=SurgeryDict.pn_status_choice) fld_surgery_pn_status_other = StringField('Other') fld_surgery_pm_status = SelectField("pM status", choices=SurgeryDict.pm_status_choice) fld_surgery_pm_status_other = StringField('Other') fld_surgery_clinical_stage = SelectField( "Select Clinical Stage based on TNM status " "(https://emedicine.medscape.com/article/2007112-overview)", choices=SurgeryDict.clinical_stage_choice) fld_surgery_clinical_stage_other = StringField("Other") submit_button = SubmitField('Submit Form')
class CategoryForm(Form): title = StringField("Category Title: ", [ validators.Length(1, 40), validators.DataRequired("Title can not be empty") ]) submit = SubmitField("Submit")
class AppForm(FlaskForm): AppID = StringField('AppID', validators=[validators.Length(min=25, max=40)]) Secret = StringField('Secret', validators=[validators.Length(min=30)]) submit = SubmitField("Connect")
class EmailForm(Form): email = StringField('Email', [validators.Length(min=6, max=40)])
def _string_common(cls, column, field_args, **extra): if column.type.length: field_args['validators'].append(validators.Length(max=column.type.length))
class CreateUserForm(Form): firstName = StringField("First Name",[validators.Length(min=1, max=150),validators.DataRequired()]) lastName = StringField("last Name",[validators.Length(min=1, max=150),validators.DataRequired()]) membership=RadioField("Membership",choices=[("F","Fellow"),("S","Senior"),("P","Professional")],default="F") gender = SelectField('Gender', [validators.DataRequired()],choices=[('', 'Select'), ('F', 'Female'), ('M', 'Male')],default='') remarks = TextAreaField('Remarks', [validators.Optional()])
class LoginForm(Form): username = StringField('Username', [validators.Length(min=4, max=25)]) password = PasswordField('Password', [validators.DataRequired()])
class CreateForm(Form): username = StringField('Username', [validators.Length(min=4, max=64)]) email = StringField('Email Address', [validators.Length(min=6, max=254)]) password = PasswordField('New Password', [validators.Length(min=6, max=64)])
class MatchForm(Form): server_id = SelectField('Server', coerce=int, validators=[validators.required()]) match_title = StringField( 'Match title text', default='Map {MAPNUMBER} of {MAXMAPS}', validators=[validators.Length(min=-1, max=Match.title.type.length)]) series_type = RadioField('Series type', validators=[validators.required()], default='bo1', choices=[ ('bo1-preset', 'Bo1 with preset map'), ('bo1', 'Bo1 with map vetoes'), ('bo2', 'Bo2 with map vetoes'), ('bo3', 'Bo3 with map vetoes'), ('bo5', 'Bo5 with map vetoes'), ('bo7', 'Bo7 with map vetoes'), ]) side_type = RadioField( 'Side type', validators=[validators.required()], default='standard', choices=[ ('standard', 'Standard: Team that doesn\'t pick map gets side choice'), ('never_knife', 'Never Knife: Team 1 is CT and Team 2 is T.'), ('always_knife', 'Always Knife: Always have knife round.'), ]) team1_id = SelectField('Team 1', coerce=int, validators=[validators.required()]) team1_string = StringField('Team 1 title text', default='', validators=[ validators.Length( min=-1, max=Match.team1_string.type.length) ]) team2_id = SelectField( 'Team 2', coerce=int, validators=[validators.required(), different_teams_validator]) team2_string = StringField('Team 2 title text', default='', validators=[ validators.Length( min=-1, max=Match.team2_string.type.length) ]) mapchoices = config_setting('MAPLIST') default_mapchoices = config_setting('DEFAULT_MAPLIST') veto_mappool = MultiCheckboxField( 'Map pool', choices=map(lambda name: (name, util.format_mapname(name)), mapchoices), default=default_mapchoices, validators=[mappool_validator], ) veto_first = RadioField('Veto', default='CT', choices=[ ('CT', 'CT gets first veto'), ('T', 'T get first veto'), ]) season_selection = SelectField('Season', coerce=int, validators=[validators.required()]) team1_series_score = IntegerField( 'Team 1 Series Score', default=0, validators=[validators.NumberRange(0, 7)]) team2_series_score = IntegerField( 'Team 2 Series Score', default=0, validators=[validators.NumberRange(0, 7)]) spectator_string = StringField('Spectator IDs', default='') private_match = BooleanField('Private Match?', default=False) enforce_teams = BooleanField('Enforce Auths on Team', default=True) min_player_ready = IntegerField( 'Max # Players Per Team', default=5, validators=[validators.required(), validators.NumberRange(1, 10)]) def add_teams(self, user): if self.team1_id.choices is None: self.team1_id.choices = [] if self.team2_id.choices is None: self.team2_id.choices = [] team_ids = [team.id for team in user.teams] for team in Team.query.filter_by(public_team=True): if team.id not in team_ids: team_ids.append(team.id) team_tuples = [] for teamid in team_ids: team_tuples.append((teamid, Team.query.get(teamid).name)) self.team1_id.choices += team_tuples self.team2_id.choices += team_tuples def add_servers(self, user): if self.server_id.choices is None: self.server_id.choices = [] server_ids = [] for s in user.servers: if not s.in_use: server_ids.append(s.id) for s in GameServer.query.filter_by(public_server=True): if not s.in_use and s.id not in server_ids: server_ids.append(s.id) server_tuples = [] for server_id in server_ids: server_tuples.append( (server_id, GameServer.query.get(server_id).get_display())) self.server_id.choices += server_tuples def add_seasons(self): if self.season_selection.choices is None: self.season_selection.choices = [] season_tuples = [] season_tuples.append((0, 'No Season')) if g.user.super_admin or g.user.admin: ourSeasons = Season.query.filter( (Season.end_date >= datetime.now()) | (Season.end_date.is_(None))).order_by(-Season.id) else: ourSeasons = Season.query.filter( (Season.end_date >= datetime.now()) | (Season.end_date.is_(None))).filter( Season.user_id == g.user.id).order_by(-Season.id) for seasons in ourSeasons: season_tuples.append((seasons.id, seasons.name)) self.season_selection.choices += season_tuples
class NewUserForm(FlaskForm): username = StringField("Username", [validators.Length(min=2, max=64)]) password = PasswordField("Password", [validators.Length(min=2, max=128)]) class Meta: csrf = False
class createUser(FlaskForm): username = StringField("Username", [validators.Length(min=5)]) password = PasswordField("Password", [validators.Length(min=5)]) class Meta: csrf = False
def _string_common(cls, column, field_args, **extra): if hasattr(column.type, 'length') and isinstance( column.type.length, int) and column.type.length: field_args['validators'].append( validators.Length(max=column.type.length))
class PostForm(Form): title = TextField('Title', [validators.Length(min=4, max=25)]) content = TextField('Content', [validators.Length(min=4, max=-1)])
class LoginForm(Form): email = StringField('Email', [validators.Length(min=1, max=100)]) password = PasswordField('Password', [validators.DataRequired()])
class CreateNewCategoryForm(FlaskForm): name = StringField("Tuotekategoria:", [validators.Length(min=3, max=500)]) class Meta: csrf = False
class ArticleForm(Form): title = StringField("Makale Başlığı",validator=[validators.Lenght(min=5,max=100)]) content = TextAreaField("Makale İçeriği",validators=[validators.Length(min=10)])
class MessageForm(Form): message = TextField(u'message', [validators.Length(min=4, max=25)]) email = TextField('Email Address', [validators.Length(min=6, max=35)]) fb_id = HiddenField('Facebook Id') submit = SubmitField('Submit')
def test_column_editable_list(): app, db, admin = setup() Model1, Model2 = create_models(db) # wtf-peewee doesn't automatically add length validators for max_length form_args = {'test1': {'validators': [validators.Length(max=20)]}} view = CustomModelView(Model1, column_editable_list=['test1'], form_args=form_args) admin.add_view(view) fill_db(Model1, Model2) client = app.test_client() # Test in-line edit field rendering rv = client.get('/admin/model1/') data = rv.data.decode('utf-8') ok_('data-role="x-editable"' in data) # Form - Test basic in-line edit functionality rv = client.post('/admin/model1/ajax/update/', data={ 'list_form_pk': '1', 'test1': 'change-success-1', }) data = rv.data.decode('utf-8') ok_('Record was successfully saved.' == data) # ensure the value has changed rv = client.get('/admin/model1/') data = rv.data.decode('utf-8') ok_('change-success-1' in data) # Test validation error rv = client.post( '/admin/model1/ajax/update/', data={ 'list_form_pk': '1', 'test1': 'longerthantwentycharacterslongerthantwentycharacterslongerthantwentycharacterslongerthantwentycharacters', }) data = rv.data.decode('utf-8') eq_(rv.status_code, 500) # Test invalid primary key rv = client.post('/admin/model1/ajax/update/', data={ 'list_form_pk': '1000', 'test1': 'problematic-input', }) data = rv.data.decode('utf-8') eq_(rv.status_code, 500) # Test editing column not in column_editable_list rv = client.post('/admin/model1/ajax/update/', data={ 'list_form_pk': '1', 'test2': 'problematic-input', }) data = rv.data.decode('utf-8') ok_('problematic-input' not in data) # Test in-line editing for relations view = CustomModelView(Model2, column_editable_list=['model1']) admin.add_view(view) rv = client.post('/admin/model2/ajax/update/', data={ 'list_form_pk': '1', 'model1': '3', }) data = rv.data.decode('utf-8') ok_('Record was successfully saved.' == data) # confirm the value has changed rv = client.get('/admin/model2/') data = rv.data.decode('utf-8') ok_('test1_val_3' in data)
class ReusableForm(Form): pay1_private = TextField('PrivateInsurance:', validators=[validators.required()]) metro = TextField( 'Metro:', validators=[validators.required(), validators.Length(min=1, max=3)]) diabetes = TextField( 'Diabetes:', validators=[validators.required(), validators.Length(min=1, max=3)]) copd = TextField( 'COPD:', validators=[validators.required(), validators.Length(min=1, max=3)]) ckd = TextField( 'CKD:', validators=[validators.required(), validators.Length(min=1, max=3)]) chf = TextField( 'CHF:', validators=[validators.required(), validators.Length(min=1, max=3)]) atrial_fib = TextField( 'AFib:', validators=[validators.required(), validators.Length(min=1, max=3)]) hyperlipidemia = TextField( 'Hyperlipidemia:', validators=[validators.required(), validators.Length(min=1, max=3)]) sex = TextField( 'Sex:', validators=[validators.required(), validators.Length(min=1, max=6)]) nicotine = TextField( 'Nicotine:', validators=[validators.required(), validators.Length(min=1, max=3)]) obesity = TextField( 'Obesity:', validators=[validators.required(), validators.Length(min=1, max=3)]) hypertension = TextField( 'Hypertension:', validators=[validators.required(), validators.Length(min=1, max=3)]) age = TextField( 'Age:', validators=[validators.required(), validators.Length(min=1, max=3)])
class CreateProvisionForm(FlaskForm): #ADDRESS FIELD addressField = TextAreaField( 'Street Address: ', [validators.Optional(), validators.length(max=200)]) #NETWORK CREATE FIELD networkTextField = StringField('New Network Name*', [validators.InputRequired()]) #TEMPLATE DROPDOWN templates = merakiapi.gettemplates(apikey, organizationid) cleantemplates = [] for template in templates: for key, value in template.items(): if key == 'id': template_id = value elif key == 'name': template_name = value else: continue cleantemplates.append([template_id, template_name]) cleantemplates.sort(key=lambda x: x[1]) cleantemplates.insert(0, ["", '* No Template']) templateField = SelectField(u'Template to bind to*', choices=cleantemplates) #SERIAL NUMBER FIELDS serialField1 = StringField('Serial Number 1*: ', [ validators.InputRequired(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField2 = StringField('Serial Number 2: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField3 = StringField('Serial Number 3: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField4 = StringField('Serial Number 4: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField5 = StringField('Serial Number 5: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField6 = StringField('Serial Number 6: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField7 = StringField('Serial Number 7: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField8 = StringField('Serial Number 8: ') nameField1 = StringField('Device Name: ', [validators.Optional()]) nameField2 = StringField('Device Name: ', [validators.Optional()]) nameField3 = StringField('Device Name: ', [validators.Optional()]) nameField4 = StringField('Device Name: ', [validators.Optional()]) nameField5 = StringField('Device Name: ', [validators.Optional()]) nameField6 = StringField('Device Name: ', [validators.Optional()]) nameField7 = StringField('Device Name: ', [validators.Optional()]) nameField8 = StringField('Device Name: ', [validators.Optional()]) submitField = SubmitField('Submit')
class TaskForm(Form): task = StringField('Task', [validators.Length(min=1, max=50)])
class AddProvisionForm(FlaskForm): #ADDRESS FIELD addressField = TextAreaField( 'Street Address: ', [validators.Optional(), validators.length(max=200)]) #SERIAL NUMBER FIELDS serialField1 = StringField('Serial Number 1*: ', [ validators.InputRequired(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField2 = StringField('Serial Number 2: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField3 = StringField('Serial Number 3: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField4 = StringField('Serial Number 4: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField5 = StringField('Serial Number 5: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField6 = StringField('Serial Number 6: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField7 = StringField('Serial Number 7: ', [ validators.Optional(), validators.Length( min=14, max=14, message='Invalid format. Must be Q2XX-XXXX-XXXX') ]) serialField8 = StringField('Serial Number 8: ') nameField1 = StringField('Device Name: ', [validators.Optional()]) nameField2 = StringField('Device Name: ', [validators.Optional()]) nameField3 = StringField('Device Name: ', [validators.Optional()]) nameField4 = StringField('Device Name: ', [validators.Optional()]) nameField5 = StringField('Device Name: ', [validators.Optional()]) nameField6 = StringField('Device Name: ', [validators.Optional()]) nameField7 = StringField('Device Name: ', [validators.Optional()]) nameField8 = StringField('Device Name: ', [validators.Optional()]) submitField = SubmitField('Submit') #NETWORK DROPDOWN networks = merakiapi.getnetworklist(apikey, organizationid) cleannetworks = [] for network in networks: for key, value in network.items(): if key == 'id': net_id = value elif key == 'name': net_name = value else: continue cleannetworks.append([net_id, net_name]) cleannetworks.sort(key=lambda x: x[1]) cleannetworks.insert(0, [None, '* Choose...']) networkField = SelectField(u'Network Name', choices=cleannetworks)
class ReusableForm(Form): name = TextField('Name:', validators=[validators.required()]) email = TextField('Email:', validators=[validators.required(), validators.Length(min=6, max=35)]) password = TextField('Password:', validators=[validators.required(), validators.Length(min=3, max=35)])
class PasswordResetForm(PasswordBaseForm): current_password = PasswordField('Current Password', [validators.DataRequired(), validators.Length(min=4, max=80)] )
class WordForm(FlaskForm): word = StringField('单词', [validators.Length(min=1, max=200)]) meaning = TextAreaField('解释', [validators.Length(min=2)])
class LoginForm(FlaskForm): email = StringField('Email', validators=[DataRequired(), validators.Email(message="Enter a valid email")]) password = PasswordField('Password', validators=[DataRequired(), validators.Length(min=8)])
class ArticleForm(Form): title = StringField('Title', [validators.Length(min=1, max=200)]) body = TextAreaField('Body', [validators.Length(min=30)])
class UserForm(Form): username = StringField('Username', [validators.Length(min=1, max=200)]) body = TextAreaField('Body', [validators.Length(min=30)])
class GraphForm(FlaskForm): API = StringField( validators=[validators.Length(min=2)], default='https://microsoftgraph.chinacloudapi.cn/v1.0/me') submit = SubmitField("Test")
class InnovationsForm(Form): year = IntegerField('Year :', render_kw={"placeholder": "YYYY"}) type = StringField('Type :', [validators.Length(min=4, max=30)]) title = StringField('Title :', [validators.Length(min=4, max=30)])