class RegistrationForm(FlaskForm): name = StringField("Name", validators=[DataRequired()]) email = StringField("Email", validators=[DataRequired(), Email()]) phone = StringField("Phone", validators=[DataRequired()]) community = StringField("Community Name", validators=[DataRequired()]) days = SelectMultipleField('Attending Days', choices=[('0', 'Friday, April 27'), ('1', 'Saturday, April 28'), ('2', 'Sunday, April 29')], option_widget=CheckboxInput(), widget=ListWidget(prefix_label=False)) dietary = SelectMultipleField('Dietary Restrictions', choices=[('0', 'None'), ('1', 'Vegetarian'), ('2', 'Gluten Free'), ('3', 'Dairy Free')], option_widget=CheckboxInput(), widget=ListWidget(prefix_label=False)) dietary_other = StringField("Other Dietary") food_allergies = StringField("Food Allergies") number_of_adults = IntegerField("Number of Adults Attending", validators=[DataRequired()]) names_of_adults = StringField("Names of Adults") number_of_children = IntegerField("Number of Children Attending", validators=[]) names_of_children = StringField("Names of Children") number_of_jy = IntegerField("Number of Youth Attending", validators=[]) names_of_jy = StringField("Names of JY")
class WordCounterUpload(UploadForm, WordCounterForm, FlaskForm): ignore_case_upload = BooleanField(_('Ignore case'), widget=CheckboxInput(), default=True) ignore_stopwords_upload = BooleanField(_('Ignore stopwords'), widget=CheckboxInput(), default=True)
class BoardOptionsForm(forms.Form): restrict_listing = forms.BooleanField(__(u"Restrict direct posting on this board to owners and the following users"), default=True, description=__(u"As the owner of this board, you can always cross-add jobs from other boards on Hasjob")) posting_users = forms.UserSelectMultiField(__(u"Allowed users"), description=__(u"These users will be allowed to post jobs on this board under the following terms"), usermodel=User, lastuser=lastuser) # Allow turning this off only in siteadmin-approved boards (deleted in the view for non-siteadmins) require_pay = forms.BooleanField(__(u"Require pay data for posting on this board?"), default=True, description=__(u"Hasjob requires employers to reveal what they intend to pay, " u"but you can make it optional for jobs posted from this board. " u"Pay data is used to match candidates to jobs. We recommend you collect it")) newjob_headline = forms.StringField(__(u"Headline"), description=__(u"Optional – The sample headline shown to employers when posting a job"), validators=[ forms.validators.Length(min=0, max=100, message=__("%%(max)d characters maximum"))], filters=[forms.filters.strip(), forms.filters.none_if_empty()]) newjob_blurb = forms.TinyMce4Field(__(u"Posting instructions"), description=__(u"Optional – What should we tell employers when they post a job on your board? " u"Leave blank to use the default text"), content_css=content_css, validators=[forms.validators.AllUrlsValid()]) types = QuerySelectMultipleField(__("Job types"), widget=ListWidget(), option_widget=CheckboxInput(), query_factory=lambda: JobType.query.filter_by(private=False).order_by(JobType.seq), get_label=jobtype_label, validators=[forms.validators.DataRequired(__(u"You need to select at least one job type"))], description=__(u"Jobs listed directly on this board can use one of the types enabled here")) categories = QuerySelectMultipleField(__("Job categories"), widget=ListWidget(), option_widget=CheckboxInput(), query_factory=lambda: JobCategory.query.filter_by(private=False).order_by(JobCategory.seq), get_label='title', validators=[forms.validators.DataRequired(__(u"You need to select at least one category"))], description=__(u"Jobs listed directly on this board can use one of the categories enabled here"))
class UsersCreateForm(Form): """ Organise users """ user = StringField('Add / Delete User',widget=TextInput(), validators=[validators.Email(),validators.optional()]) admin = BooleanField('Assign as Administrator',widget=CheckboxInput()) delete = BooleanField('Delete User',widget=CheckboxInput()) admin_delete = BooleanField('Retract Admin Rights',widget=CheckboxInput()) all_delete = BooleanField('DELETE ALL USERS - CLICK AT YOUR PERIL',widget=CheckboxInput())
class WordCounterPaste(PasteForm, WordCounterForm, FlaskForm): ignore_case_paste = BooleanField(_('Ignore case'), widget=CheckboxInput(), default=True) ignore_stopwords_paste = BooleanField(_('Ignore stopwords'), widget=CheckboxInput(), default=True) def __init__(self, default_text=''): super(WordCounterPaste, self).__init__(default_text)
class WordCounterSample(SampleForm, WordCounterForm, FlaskForm): ignore_case_sample = BooleanField(_('Ignore case'), widget=CheckboxInput(), default=True) ignore_stopwords_sample = BooleanField(_('Ignore stopwords'), widget=CheckboxInput(), default=True) def __init__(self, lang): super(WordCounterSample, self).__init__('wordcounter', lang)
class FiltersetForm(forms.Form): title = forms.StringField(__("Title"), description=__("A title shown to viewers"), validators=[forms.validators.DataRequired()], filters=[forms.filters.strip()]) description = forms.TinyMce4Field( __("Description"), content_css=content_css, description=__("Description shown to viewers and search engines"), validators=[forms.validators.DataRequired()]) types = QuerySelectMultipleField(__("Job types"), widget=ListWidget(), option_widget=CheckboxInput(), get_label='title', validators=[forms.validators.Optional()]) categories = QuerySelectMultipleField( __("Job categories"), widget=ListWidget(), option_widget=CheckboxInput(), get_label='title', validators=[forms.validators.Optional()]) geonameids = forms.GeonameSelectMultiField("Locations", filters=[format_geonameids]) remote_location = forms.BooleanField(__("Match remote jobs")) pay_cash_currency = forms.RadioField( __("Currency"), choices=get_currency_choices(), default='', validators=[forms.validators.Optional()]) pay_cash = forms.IntegerField(__("Pay"), description=__("Minimum pay"), validators=[forms.validators.Optional()]) keywords = forms.StringField(__("Keywords"), validators=[forms.validators.Optional()], filters=[forms.filters.strip()]) auto_domains = forms.AutocompleteMultipleField( __("Domains"), autocomplete_endpoint='/api/1/domain/autocomplete', results_key='domains') auto_tags = forms.AutocompleteMultipleField( __("Tags"), autocomplete_endpoint='/api/1/tag/autocomplete', results_key='tags') def set_queries(self): if not self.edit_parent: self.edit_parent = g.board self.types.query = JobType.query.join(board_jobtype_table).filter( board_jobtype_table.c.board_id == self.edit_parent.id).order_by( 'title') self.categories.query = JobCategory.query.join( board_jobcategory_table).filter( board_jobcategory_table.c.board_id == self.edit_parent.id).order_by('title')
class PortfolioForm(FlaskForm): """ Form to be used in changing accout portfolio """ course_selection = SelectMultipleField('Completed Coursework', option_widget=CheckboxInput(), widget=ListWidget(prefix_label=False), choices=Course_.to_choices()) skill_selection = SelectMultipleField('Skills', option_widget=CheckboxInput(), widget=ListWidget(prefix_label=False), choices=Skill_.to_choices()) submit = SubmitField('Update')
class WordCounterLink(LinkForm, WordCounterForm, FlaskForm): ignore_case_link = BooleanField(_('Ignore case'), widget=CheckboxInput(), default=True) ignore_stopwords_link = BooleanField(_('Ignore stopwords'), widget=CheckboxInput(), default=True) def __init__(self): super(WordCounterLink, self).__init__( _('Paste a link'), _('https://en.wikipedia.org/wiki/Natural_language_processing'))
class CampaignForm(forms.Form): title = forms.StringField( __("Title"), description=__("A reference name for looking up this campaign again"), validators=[ forms.validators.DataRequired(__("A title is required")), forms.validators.StripWhitespace() ]) start_at = forms.DateTimeField(__("Start at"), timezone=lambda: g.user.timezone if g.user else None) end_at = forms.DateTimeField(__("End at"), timezone=lambda: g.user.timezone if g.user else None) public = forms.BooleanField(__("This campaign is live")) position = forms.RadioField(__("Display position"), choices=CAMPAIGN_POSITION.items(), coerce=int) priority = forms.IntegerField( __("Priority"), default=0, description=__( "A larger number is higher priority when multiple campaigns are running on the " "same dates. 0 implies lowest priority")) boards = QuerySelectMultipleField( __("Boards"), widget=ListWidget(), option_widget=CheckboxInput(), query_factory=lambda: Board.query.order_by('title'), get_label='title', validators=[forms.validators.Optional()], description=__(u"Select the boards this campaign is active on")) geonameids = forms.GeonameSelectMultiField( "Locations", description=__( "This campaign will be targetted at users and jobs with matching locations" )) user_required = forms.RadioField(__("User is required"), coerce=getbool, choices=[(None, __("N/A")), (True, __("Yes")), (False, __("No"))]) flags = forms.RadioMatrixField( "Flags", coerce=getbool, fields=Campaign.flag_choices, description=__( "All selected flags must match the logged in user for the campaign to be shown" ), choices=[('None', __("N/A")), ('True', __("True")), ('False', __("False"))]) content = forms.FormField(CampaignContentForm, __("Campaign content")) def validate_geonameids(self, field): field.data = [int(x) for x in field.data if x.isdigit()] def validate_end_at(self, field): if field.data <= self.start_at.data: raise forms.ValidationError( __(u"The campaign can’t end before it starts"))
class CampaignForm(Form): _store_id = None title = StringField( gettext(u'campaign title'), validators=[DataRequired(gettext(u'campaign title cannot be empty'))]) content = StringField( gettext(u'campaign detail'), validators=[DataRequired(gettext(u'campaign detail cannot be empty'))], widget=TextArea()) related_cars = SelectMultipleField(gettext(u'related cars'), option_widget=CheckboxInput(), widget=ListWidget(prefix_label=False)) start = DateField( gettext(u'start time'), format='%m/%d/%Y', validators=[DataRequired(gettext(u'start time cannot be empty'))]) end = DateField(gettext(u'end time'), format='%m/%d/%Y', validators=[ DataRequired(gettext(u'end time cannot be empty')), validate_end_date ]) notify_date = DateField(gettext(u'notify time'), format='%m/%d/%Y', validators=[ DataRequired( gettext(u'notify time cannot be empty')), validate_notify_date ])
class EditForm(FlaskForm): """Project editing Form""" title = StringField('Title:', validators=[InputRequired()]) description = TextAreaField('Project Summary:', validators=[InputRequired()], widget=TextArea(), render_kw={ 'cols': '150', 'rows': '25' }) maxProjSize = IntegerField("Maximum Number of People Needed: ") degree = SelectMultipleField( 'Suggested Degree Path: ', coerce=int, validators=[InputRequired()], choices=[(DegreeAttributes.electrical.value, 'Electrical Engineering'), (DegreeAttributes.mechanical.value, 'Mechanical Engineering'), (DegreeAttributes.computer.value, 'Computer Engineering'), (DegreeAttributes.computersci.value, 'Computer Science')], widget=ListWidget(prefix_label=False), option_widget=CheckboxInput()) grade = RadioField('Suggested Minimum Grade: ', validators=[InputRequired()], coerce=int, choices=[(GradeAttributes.Freshman.value, 'Freshman'), (GradeAttributes.Sophmore.value, 'Sophmore'), (GradeAttributes.Junior.value, 'Junior'), (GradeAttributes.Senior.value, 'Senior')]) submit = SubmitField('Submit')
class AddBillForm(FlaskForm): billDate = DateField('Bill Date', format='%Y-%m-%d', validators=[DataRequired()]) dueDate = DateField('Due Date', format='%Y-%m-%d', validators=[DataRequired()]) selectedWings = SelectMultipleField('Wings', choices=[], widget=ListWidget(prefix_label=False), option_widget=CheckboxInput(), validators=[DataRequired()]) WATER_CHARGES = DecimalField(label='WATER CHARGES', places=2, validators=[DataRequired()]) PROPERTY_TAX = DecimalField(label='PROPERTY TAX', places=2, validators=[DataRequired()]) ELECTRICITY_CHARGES = DecimalField(label='ELECTRICITY CHARGES', places=2, validators=[DataRequired()]) SINKING_FUNDS = DecimalField(label='SINKING FUNDS', places=2, validators=[DataRequired()]) PARKING_CHARGES = DecimalField(label='PARKING CHARGES', places=2, validators=[DataRequired()]) NOC = DecimalField(label='NOC', places=2, validators=[DataRequired()]) INSURANCE = DecimalField(label='INSURANCE', places=2, validators=[DataRequired()]) OTHER = DecimalField(label='OTHER', places=2, validators=[Optional()]) submitBtn = SubmitField(label='Submit')
class CreateForm(FlaskForm): usernames = SelectMultipleField("Users:", validators=[InputRequired()], widget=ListWidget(prefix_label=False), option_widget=CheckboxInput()) starting_balance = IntegerField( "Starting Balance:", validators=[InputRequired(), NumberRange(min=1)]) default_lot = IntegerField( "Default Lot Size:", validators=[InputRequired(), NumberRange(min=0, max=15)]) time_limit = IntegerField("Time Limit (seconds):", validators=[Optional(), NumberRange(min=1)]) first_nom = StringField("First Nomination:") submit_create = SubmitField("Create") def validate_usernames(self, usernames): if current_user.username not in usernames.data: raise ValidationError("You must be one of the drafters.") def validate_first_nom(self, first_nom): if first_nom.data and first_nom.data not in cube_cards: raise ValidationError("That card isn't in the cube.")
class SessionForm(Form): """Session Form class""" title = StringField('Title', [DataRequired()]) subtitle = StringField('Subtitle') abstract = TextAreaField('Abstract') description = TextAreaField('Description', [DataRequired()]) start_time = DateTimeField( 'Start Time', [DataRequired(), CustomDateSessionValidate()]) end_time = DateTimeField( 'End Time', [DataRequired(), CustomDateSessionValidate()]) level = QuerySelectField(label='Level', query_factory=DataGetter.get_levels, allow_blank=True) format = QuerySelectField(label='Format', query_factory=DataGetter.get_formats, allow_blank=True) language = QuerySelectField(label='Language', query_factory=DataGetter.get_languages, allow_blank=True) speakers = QuerySelectMultipleField(query_factory=get_speakers, widget=ListWidget(prefix_label=False), option_widget=CheckboxInput()) microlocation = QuerySelectField( label='Microlocation', query_factory=DataGetter.get_microlocations_by_event_id, allow_blank=True)
def __init__(self, *args, **kwargs): for opt in DEFAULT_OPTION: if isinstance(opt["default_value"], bool): name = opt["option"] field = BooleanField(label=opt["label"], default=app.config.get( name, opt["default_value"]), description=opt.get("description", ""), widget=opt.get("widget", CheckboxInput())) elif isinstance(opt["default_value"], str): name = opt["option"] field = StringField(label=opt["label"], default=app.config.get( name, opt["default_value"]), validators=opt.get("validators", []), description=opt.get("description", ""), widget=opt.get("widget", TextInput())) elif isinstance(opt["default_value"], int): name = opt["option"] field = IntegerField(label=opt["label"], default=opt["default_value"], validators=opt.get("validators", []), description=opt.get("description", ""), widget=opt.get("widget", NumberInput(step='1'))) setattr(self, name, field) self._unbound_fields = self._unbound_fields + [[name, field]] setattr(self, "submit", SubmitField(label=u"提交")) self._unbound_fields = self._unbound_fields + [[ "submit", SubmitField(label=u"提交") ]] super(SiteOptionForm, self).__init__(*args, **kwargs)
class LoginForm(FlaskForm): """Sign in form """ email = TextField( 'Email address', validators=[Required('Please enter your email address'), Email()]) password = PasswordField( 'Password', widget=PasswordInput(hide_value=False), validators=[Required('Please enter your password')]) remember_me = BooleanField('Remember me', widget=CheckboxInput(), default=True) def validate_password(form, field): """Verify password """ if not form.email.data: raise StopValidation() # get user and verify password u = User.query.filter(User.email == form.email.data).first() if not u or not verify_password_hash(field.data, u.password): raise ValidationError('Email and password must match')
class CreateAccountForm(FlaskForm): """Create account form """ email = TextField( 'Email address', validators=[Required('Please enter an email address'), Email()]) password = PasswordField('Password', widget=PasswordInput(hide_value=False), validators=[ Required('Please choose a password'), EqualTo('password_confirm', message='Passwords must match') ]) password_confirm = PasswordField( 'Confirm Password', widget=PasswordInput(hide_value=False), validators=[Required('Please confirm your password')]) newsletter = BooleanField('Please send me product updates', widget=CheckboxInput(), default=True) def validate_email(form, field): """Check if email already exists """ u = User.query.filter(User.email == field.data).first() if u != None: raise ValidationError('Did your forget your password?')
class ParticipantForm(forms.Form): fullname = forms.StringField(__("Full Name"), validators=[forms.validators.DataRequired()]) email = forms.EmailField(__("Email"), validators=[ forms.validators.DataRequired(), forms.validators.Length(max=80) ]) phone = forms.StringField(__("Phone number"), validators=[forms.validators.Length(max=80)]) city = forms.StringField(__("City"), validators=[forms.validators.Length(max=80)]) company = forms.StringField(__("Company"), validators=[forms.validators.Length(max=80)]) job_title = forms.StringField(__("Job Title"), validators=[forms.validators.Length(max=80)]) twitter = forms.StringField(__("Twitter"), validators=[forms.validators.Length(max=15)]) events = QuerySelectMultipleField( __("Events"), widget=ListWidget(), option_widget=CheckboxInput(), get_label='title', validators=[ forms.validators.DataRequired(u"Select at least one event") ])
class NewPostForm(Form): title = StringField(_l('Title'), validators=[DataRequired()]) content = TextAreaField(_l('Content'), validators=[DataRequired()]) covered_period = DateField(_l('Date'), validators=[DataRequired()], default=lambda: dtdate.today()) week = BooleanField(_l('Covers whole week')) categories = SelectMultipleField(_('Categories'), widget=ListWidget(), option_widget=CheckboxInput(), choices=ClassChoices( Category.query.order_by('name'), 'name')) def get_slug(self): return slugify(self.title.data) def fill_post_object(self, post): post.title = self.title.data post.content = self.content.data post.covered_period = self.covered_period.data post.covers_week = self.week.data post.categories.extend( Category.query.filter(Category.name.in_(self.categories.data))) return post
class CurriculumUnitAddAppendStudGroupForm(Form): relative_curriculum_units = QuerySelectMultipleField( 'Группы', get_pk=lambda cu: cu.id, get_label=lambda cu: cu.stud_group.num_print, widget=ListWidget(prefix_label=False), option_widget=CheckboxInput())
class MultiCheckboxField(SelectMultipleField): """ A multiple-select, except displays a list of checkboxes. Iterating the field will produce subfields, allowing custom rendering of the enclosed checkbox fields. """ widget = ListWidget(prefix_label=False) option_widget = CheckboxInput()
class ConnectTheDotsUpload(UploadForm, FlaskForm): # download_template = BooleanField( # _('<a href="http://www.google.com">Download our simple template</a>'), # widget=CheckboxInput(), # default=True) has_header_row = BooleanField(_('Has header row'), widget=CheckboxInput(), default=True)
class TicketTypeForm(forms.Form): title = forms.StringField(__("Title"), validators=[forms.validators.DataRequired()]) events = QuerySelectMultipleField(__("Events"), widget=ListWidget(), option_widget=CheckboxInput(), allow_blank=True, get_label='title', query_factory=lambda: [])
class NewCategoryForm(Form): name = StringField(_l('Name'), validators=[DataRequired()]) public = BooleanField(_l('Public')) users = SelectMultipleField(_l('Allowed readers'), coerce=int, widget=ListWidget(), option_widget=CheckboxInput(), choices=ClassChoices( User.query.order_by('login'), 'login'))
class TrackForm(Form): """Track Form class""" name = StringField('Name', [Length(min=6, max=35)]) description = StringField('Description', [Length(min=4, max=1000)]) track_image_url = StringField('Image') sessions = QuerySelectMultipleField( query_factory=DataGetter.get_sessions_by_event_id, widget=ListWidget(prefix_label=False), option_widget=CheckboxInput())
class EditStaffForm(Form): edit_name = StringField('Name') edit_title = StringField('Title') edit_bio = StringField('Bio', widget=TextArea()) edit_email = StringField('Email (optional)') edit_phone = StringField('Phone (optional)') edit_picture = FileField("Picture") edit_active = BooleanField('Active', widget=CheckboxInput()) edit_order = HiddenField('Order')
class AddStaffForm(Form): name = StringField('Staff Name', [validators.DataRequired()]) title = StringField('Title', [validators.DataRequired()]) bio = StringField('Bio', [validators.DataRequired()], widget=TextArea()) email = StringField('Email (optional)') phone = StringField('Phone (optional)') picture = FileField("Picture") active = BooleanField('Active', widget=CheckboxInput()) order = HiddenField('Order')
class NewProjectForm(FlaskForm): """ Form to be used in new project creation.""" title = StringField('Project Title', validators=[DataRequired(), Length(max=MAX_LENGTH_TITLE)]) description = TextAreaField('Project Description', validators=[Length(max=MAX_LENGTH_DESCRIPTION)]) skill_selection = SelectMultipleField('Preferred Skills', option_widget=CheckboxInput(), widget=ListWidget(prefix_label=False), choices=Skill_.to_choices()) submit = SubmitField('Submit')
class AddNoteForm(Form): title = StringField('Title', validators=[DataRequired("Please enter the Title")]) description = TextAreaField( 'Description', validators=[DataRequired("Please Enter some Description")]) #widget = ListWidget(prefix_label=False) ready = CheckboxInput('Is it Done?') submit = SubmitField('Add Note')