class Crit(Hidden): """Critique for each of the standards STILL NEED TO CREATE Change radio fields to select and add inputtext other """ name = StringField(u'Name', widget=TextInput(), validators=[validators.input_required(message=NO_INPUT_ERROR), validators.length(max=MAX_LENGTH)]) school = StringField(u'School', widget=TextInput(), validators=[validators.input_required(message=NO_INPUT_ERROR), validators.length(max=MAX_LENGTH)]) materials = RadioField(u'Source of Materials', choices=[('Own','Own'), ('Commercial','Commercial'), ('Subject','Subject Association'), ('TKI','TKI / NZQA'), ('Other','Other')]) check1 = BooleanField(u'The assessment material has been reviewed against the current standard clarification and/or external moderation feedback. (Where the material has been previously critiqued and the standard is unchanged, no further critiquing is required)', widget=CheckboxInput()) check2 = BooleanField(u'Student instructions contain registered standard number, version, title, level & credits', widget=CheckboxInput()) check3 = BooleanField(u'Student instructions are clear and language is appropriate' ,widget=CheckboxInput()) check4 = BooleanField(u'The assessment is consistent with learning/context/curriculum at the appropriate level',widget=CheckboxInput()) check5 = BooleanField(u'The assessment allows students to achieve all requirements of the standard for all grades',widget=CheckboxInput()) check6 = BooleanField(u'Instructions are consistent with explanatory notes/range statements in the standard',widget=CheckboxInput()) check7 = BooleanField(u'Assessment schedule is consistent with the standard and clarifications documents',widget=CheckboxInput()) check8 = BooleanField(u'Judgement/ sufficiency statement clearly describe performance levels for each grade, e.g. quality & length',widget=CheckboxInput()) check9 = BooleanField(u'Evidence statements allow for a range of acceptable answers from students with specific examples for each grade (N/A/M/E)',widget=CheckboxInput()) finished = BooleanField(u""" By clicking the button to the left you are signing that <b>you</b> have finished the <b><u>critique process</u></b>. <br><small>If you are not finished, click submit process button below to save what you have entered so far. You can sign off the process at a later date</small>""",widget=CheckboxInput())
class FormItem(FlaskForm): id = StringField("id", widget=TextInput()) title = StringField("title", widget=TextInput(), validators=[DataRequired()]) text = StringField("text", widget=TextArea()) due = StringField("due", widget=TextInput()) search = StringField("search", widget=TextInput())
class LoginForm(FlaskForm): username = StringField('Login:'******'Password:'******'Отправить')
class CreateStaffForm(Form): year = SelectField(u'Year', widget=Select(), choices=YEARS) staff_id = StringField(u'Staff Identifier', widget=TextInput(), validators=[validators.input_required()]) first_name = StringField(u'First Name', widget=TextInput(), validators=[validators.input_required()]) last_name = StringField(u'Last Name', widget=TextInput(), validators=[validators.input_required()]) title = SelectField(u'Title', widget=Select(), choices=(('Mr','Mr'),('Mrs','Mrs'),('Miss','Miss'),('Ms','Ms'))) subject = StringField(u'Subject', widget=TextInput(),validators=[validators.input_required()]) email = StringField(u'Email', widget=TextInput(), validators=[validators.Email()])
class CourseForm(Form): name = StringField('Name', [validators.DataRequired()], widget=TextInput()) location = StringField('Location', [validators.DataRequired()], widget=TextInput()) city = StringField('City', [validators.DataRequired()], widget=TextInput()) holes = IntegerField('Holes', [validators.DataRequired()], widget=NumberInput()) submit = SubmitField('Create')
def __init__(self, is_review=False, *args, **kwargs): """Constructor.""" super(AuthorUpdateForm, self).__init__(*args, **kwargs) if is_review: self.bai.widget = TextInput() self.bai.widget_classes = "form-control" self.inspireid.widget = TextInput() self.inspireid.widget_classes = "form-control"
class InstitutionInlineForm(INSPIREForm): """Institution inline form.""" rank_options = [("rank", _("Rank")), ("SENIOR", _("Senior (permanent)")), ("JUNIOR", _("Junior (leads to Senior)")), ("STAFF", _("Staff (non-research)")), ("VISITOR", _("Visitor")), ("PD", _("PostDoc")), ("PHD", _("PhD")), ("MAS", _("Master")), ("UG", _("Undergrad"))] name = fields.StringField( widget_classes='form-control', widget=ColumnInput(class_="col-md-6"), autocomplete='affiliation', placeholder=_("Institution. Type for suggestions"), ) rank = fields.SelectField( choices=rank_options, default="rank", widget=ColumnSelect(class_="col-md-6"), widget_classes='form-control', validators=[validators.DataRequired()], ) start_year = fields.StringField( placeholder=_('Start Year'), description=u'Format: YYYY.', widget=WrappedInput( wrapped_widget=TextInput(), wrapper='<div class="col-md-6 col-margin-top">%(field)s</div>'), validators=[ RegexpStopValidator( "^(\d{4})?$", message="{} is not a valid year. Please use <i>yyyy</i> format." ) ], widget_classes="datepicker form-control") end_year = fields.StringField( placeholder=_('End Year'), description=u'Format: YYYY.', widget=WrappedInput( wrapped_widget=TextInput(), wrapper='<div class="col-md-6 col-margin-top">%(field)s</div>'), validators=[ RegexpStopValidator( "^(\d{4})?$", message="{} is not a valid year. Please use <i>yyyy</i> format." ) ], widget_classes="datepicker form-control") current = fields.BooleanField(widget=currentCheckboxWidget) email = fields.HiddenField() old_email = fields.HiddenField()
def __init__(self, is_review=False, *args, **kwargs): """Constructor.""" super(AuthorUpdateForm, self).__init__(*args, **kwargs) is_update = kwargs.pop('is_update', False) if is_update: self.orcid.widget = HiddenInput() self.orcid.validators = [] if is_review: self.bai.widget = TextInput() self.bai.flags = Flags() self.inspireid.widget = TextInput() self.inspireid.flags = Flags()
class OutsideVerificationForm(Form): standard = AllStandardsData('Choose Standard') student = StringField(u'Student Name (Full Name)', widget=TextInput(), validators=[validators.input_required(message=NO_INPUT_ERROR)]) verifier_name = StringField(u'Teacher name (Verifier)', widget=TextInput(), validators=[validators.input_required(message=NO_INPUT_ERROR)]) verifier_school = StringField(u'School of Verifier', widget=TextInput()) verifiers_grade = SelectField(u'Assessment judgement', widget=Select(), choices=GRADES, validators=[validators.NoneOf(values='No Grade',message='Please enter appropriate grade')]) discussion = StringField(u'Discussion', widget=TextArea()) finished = BooleanField(u"<p id='finished_p'>", widget=CheckboxInput(),validators=[validators.required(message="The sign off box above must be checked to submit data")])
class SolverForm(FlaskForm): task_name = StringField('Название задачи:', validators=[DataRequired()], widget=TextInput()) code = TextAreaField('Комментарии:', validators=[DataRequired()], widget=TextArea()) date = DateField('Дата:', validators=[DataRequired()]) aut_name = StringField('Имя автора:', validators=[DataRequired()], widget=TextInput()) submit = SubmitField('Отправить')
class RegisterForm(FlaskForm): '''A form for registering a new user.''' email = StringField( 'Sähköpostiosoite', widget=EmailInput(), validators=[ DataRequired(message="Sähköpostiosoite on pakollinen"), Email(message="Anna kelvollinen sähköpostiosoite") ]) password = PasswordField( 'Salasana', widget=PasswordInput(), validators=[ DataRequired(message="Salasana on pakollinen"), Length(min=6, max=24, message="Salasanan on oltava 6-24 merkkiä pitkä") ]) first_name = StringField( 'Etunimi', widget=TextInput(), validators=[DataRequired(message="Etunimi on pakollinen")]) last_name = StringField( 'Sukunimi', widget=TextInput(), validators=[DataRequired(message="Sukunimi on pakollinen")]) nickname = StringField('Lempinimi', widget=TextInput()) phone = StringField( 'Puhelinnumero', widget=TextInput(), validators=[ Regexp( '^\+\d+$', message='Anna kelvollinen puhelinnumero muodossa +xxxxxxxxxxxxx' ) ]) birth_date = StringField( 'Syntymäaika', widget=TextInput(), validators=[ Regexp('^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d$', message='Anna kelvollinen päivämäärä') ]) profile = TextAreaField( 'Pelaajaprofiilikuvaus', widget=TextArea(), validators=[ Length(min=10, max=1000, message="Profiilikuvauksen on oltava 10-1000 merkkiä pitkä") ]) submit = SubmitField('Rekisteröidy', widget=SubmitInput())
class Meta: model = Translation field_args = { 'english': { 'widget': TextInput() }, 'french': { 'widget': TextInput() }, 'spanish': { 'widget': TextInput() } }
class VerificationForm(Form): student = StringField(u'Student Name (Full Name)', widget=TextInput(),validators=[validators.input_required(message=NO_INPUT_ERROR), validators.length(max=MAX_LENGTH)]) verifier_name = StringField(u'Teacher name (Verifier)', widget=TextInput(),validators=[validators.input_required(message=NO_INPUT_ERROR), validators.length(max=MAX_LENGTH)]) verifier_school = StringField(u'School of Verifier', widget=TextInput()) verifier_school_other = StringField(u'Other - School of Verifier', widget=TextInput()) verifiers_grade = StringField(u'Assessment judgement of Verifier', widget=TextInput()) markers_grade = SelectField(u'Markers assessment judgement', widget=Select(), choices=GRADES) reported_grade = SelectField(u'Reported assessment judgement', widget=Select(), choices=GRADES) tic = AllStaffData(u'Teacher in Charge', widget=Select()) discussion = StringField(u'Discussion', widget=TextArea())
class Registration(FlaskForm): username = StringField('Никнэйм', validators=[DataRequired()], widget=TextInput()) email = StringField('Почта', validators=[DataRequired(), Email()], widget=TextInput()) password = StringField('Пароль', validators=[DataRequired()], widget=PasswordInput()) password_confirm = StringField( 'Подтверждение пароля', validators=[DataRequired(), EqualTo('password')], widget=PasswordInput())
class GameForm(FlaskForm): title = StringField(label='Название', validators=[DataRequired()]) desc = StringField(label='Описание', validators=[DataRequired()], widget=TextArea()) poster = StringField(label='Обложка', validators=[DataRequired(), URL()], description='Используйте обложки с соотношением 2:1.') price = IntegerField(label='Цена', validators=[DataRequired()], widget=TextInput('number')) release_date = DateField(label='Дата релиза', validators=[DataRequired()], widget=TextInput('date')) on_sale = BooleanField(label='Распродажа')
class StandardCreateForm(Form): year = SelectField(u'Year', widget=Select(), choices=YEARS) verification_total = IntegerField(u'No of Student Entries', widget=TextInput(), validators=[validators.optional()]) subject_id = StringField(u'Subject ID e.g MUS1', widget=TextInput(), validators=[validators.input_required(message=NO_INPUT_ERROR),validators.length(max=MAX_LENGTH)]) subject_title = StringField(u'Faculty Umbrella e.g Arts', widget=TextInput(), validators=[validators.input_required(message=NO_INPUT_ERROR),validators.length(max=MAX_LENGTH)]) standard_no = StringField(u'Standard Number', widget=TextInput(), validators=[validators.input_required(message=NO_INPUT_ERROR),validators.length(max=MAX_LENGTH)]) version = StringField(u'Version of the Standard', widget=TextInput(), validators=[validators.input_required(message=NO_INPUT_ERROR),validators.length(max=MAX_LENGTH)]) level = SelectField(u'NCEA level of Standard', widget=Select(), choices=[('Multi','Multi'),('1','1'),('2','2'),('3','3')]) credits = IntegerField(u'Credits <br><small>How many credits the standard is worth</small>', widget=TextInput(),validators=[validators.input_required(message=NO_INPUT_ERROR),validators.NumberRange(min=1,max=50,message="Please enter a Number : Max 50")]) title = StringField(u'Title of the standard', widget=TextArea(), validators=[validators.input_required(message=NO_INPUT_ERROR)]) standard_type = SelectField(u'Standard Type <br><small>Achievement or Unit Standard</small>',widget=Select(),choices=(('Achievement Standard','Achievement Standard'),('Unit Standard','Unit Standard'))) tic = AllStaffData(u'Teacher in Charge', widget=Select())
def __init__(self, *args, **kwargs): """Constructor.""" super(AuthorUpdateForm, self).__init__(*args, **kwargs) is_review = kwargs.pop('is_review', False) is_update = kwargs.pop('is_update', False) if is_update: # remove validation for duplicate ORCIDs on update self.orcid.validators = self.orcid.validators[:-1] if is_review: self.bai.widget = TextInput() self.bai.flags = Flags() self.inspireid.widget = TextInput() self.inspireid.flags = Flags()
class ExperimentsInlineForm(INSPIREForm): """Experiments inline form.""" name = fields.StringField( placeholder="Experiment. Type for suggestions", label='Experiment', widget=ColumnInput(class_="col-md-6"), widget_classes="form-control", autocomplete="experiment" ) start_year = fields.StringField( placeholder='Start Year', description=u'Format: YYYY.', widget=WrappedInput( wrapped_widget=TextInput(), wrapper='<div class="col-md-6">%(field)s</div>', ), validators=[ LessThan('end_year', message='Start year should be earlier than End year'), RegexpStopValidator( r'^(\d{4})?$', message='{} is not a valid year. Please use <i>yyyy</i> format.', ), ], widget_classes="form-control" ) end_year = fields.StringField( placeholder='End Year', description=u'Format: YYYY.', widget=WrappedInput( wrapped_widget=TextInput(), wrapper='<div class="col-md-6 col-margin-top">%(field)s</div>' ), validators=[ RegexpStopValidator( r'^(\d{4})?$', message='{} is not a valid year. Please use <i>yyyy</i> format.', ), ], widget_classes="form-control" ) current = fields.BooleanField( widget=currentCheckboxWidget )
class TagListField(Field): widget = TextInput() def _value(self): if self.data: return u', '.join([tag.name for tag in self.data]) return u'' def process_formdata(self, valuelist): if valuelist and valuelist[0]: # Order is preserved here but ``Post.tags`` orders by tag name seen = set() tag_names = [] for value in valuelist[0].split(','): stripped_value = value.strip() if stripped_value and stripped_value not in seen: tag_names.append(stripped_value) seen.add(stripped_value) existing_tags = Tag.query.filter(Tag.name.in_(tag_names)) existing_tag_names = {t.name: t for t in existing_tags} tags = [] for tag_name in tag_names: try: tags.append(existing_tag_names[tag_name]) except KeyError: tags.append(Tag(tag_name)) self.data = tags else: self.data = []
class HourMinuteField(fields.Field): widget = TextInput() def e_init__(self, label=None, validators=None, **kwargs): super(HourMinuteField, self).__init__(label, validators, **kwargs) def process_formdata(self, valuelist): if len(valuelist) and valuelist[0]: message = "格式00:00" rep = '^(\d+):[0-5]\d$' if not re.match(rep, valuelist[0]): raise ValidationError(message) minute = float('%.2f' % float(int(valuelist[0].split(":")[1]) / 60.0)) hour = int(valuelist[0].split(":")[0]) self.data = hour + minute def _value(self): if self.data is not None: value = str(self.data) hour = str(int(value.split(".")[0])) minute = value.split(".")[1] # 四舍五入 minite = int((float('.'.join(['0', minute])) * 60) + 0.5) minite = str(minite) if len(minite) < 2: minite = '0' + minite value = ':'.join([hour, minite]) return text_type(value) else: return ''
class DateTimeField(Field): """ DateTimeField represented by a text input, accepts all input text formats that `dateutil.parser.parse` will. :param parse_kwargs: A dictionary of keyword args to pass to the dateutil parse() function. See dateutil docs for available keywords. :param display_format: A format string to pass to strftime() to format dates for display. """ widget = TextInput() def __init__( self, label=None, validators=None, parse_kwargs=None, display_format="%Y-%m-%d %H:%M", **kwargs ): super(DateTimeField, self).__init__(label, validators, **kwargs) if parse_kwargs is None: parse_kwargs = {} self.parse_kwargs = parse_kwargs self.display_format = display_format def _value(self): if self.raw_data: return " ".join(self.raw_data) else: return self.data and self.data.strftime(self.display_format) or "" def process_formdata(self, valuelist): if valuelist: date_str = " ".join(valuelist) if not date_str: self.data = None raise ValidationError(self.gettext("Please input a date/time value")) parse_kwargs = self.parse_kwargs.copy() if "default" not in parse_kwargs: try: parse_kwargs["default"] = self.default() except TypeError: parse_kwargs["default"] = self.default try: self.data = parser.parse(date_str, **parse_kwargs) except ValueError: self.data = None raise ValidationError(self.gettext("Invalid date/time input")) except TypeError: if not DATEUTIL_TYPEERROR_ISSUE: raise # If we're using dateutil 2.2, then consider it a normal # ValidationError. Hopefully dateutil fixes this issue soon. self.data = None raise ValidationError(self.gettext("Invalid date/time input"))
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 SchoolAdminPasswordForm(Form): """ This changes the user password for the relative school """ school = StringField(u'School', widget=TextInput()) password = PasswordField('New Password', validators=[validators.input_required(), validators.EqualTo('confirm', message='Passwords must match'), validators.password_check(min=8)]) confirm = PasswordField('Repeat Password')
class TagListField(Field): widget = TextInput() def _value(self): return ", ".join(self.data or ()) def process_formdata(self, valuelist): if valuelist and valuelist[0]: tags = [ invalid_tag_chars.sub("", tag["value"]) for tag in orjson.loads(valuelist[0]) ] data = list(set(tags)) self.data = data else: self.data = [] def post_validate(self, form, validation_stopped): if not self.data: return for i in self.data: l = len(i) if l < 3 or l > 20: raise ValidationError( "Tags must be between 3 and 20 characters in length") if len(self.data) > 8: raise ValidationError("Things can have at most 8 tags")
class CodeCreateForm(Form): """ This changes the user password for the relative school """ school = StringField(u'School', widget=TextInput()) code = StringField('Code', validators=[validators.input_required(), validators.EqualTo('confirm', message='Code must match'), validators.password_check(min=5)]) confirm = StringField('Repeat Code')
class CommaSeparatedIntegerListField(Field): def __iter__(self): return iter(self.data) widget = TextInput() def _value(self): """ overrides the representation wtforms sends to the server """ if self.data and len(self.data) > 0: return u', '.join(map(unicode, self.data)) else: return u'' def process_data(self, value): if isinstance(value, list): self.data = value else: if value: self.process_formdata([value]) else: self.data = [] def process_formdata(self, valuelist): """ overrides wtforms parsing to split list into namespaces """ if valuelist: self.data = [ int(x.strip()) for x in valuelist[0].split(',') if x.strip().isdigit() ] else: self.data = []
class CoordinatesField(Field): widget = TextInput() def _value(self): if self.raw_data: return self.raw_data[0] elif self.data: return u'%.10f %.10f' % self.data else: return u'' def process_formdata(self, valuelist): if valuelist and valuelist[0]: try: self.data = model.Point(*(map(float, valuelist[0].split(' ')))) except ValueError: raise validators.ValidationError( u'Неправильно заданы координаты') else: self.data = None def pre_validate(self, form): if self.process_errors: raise validators.StopValidation() if self.data is not None: if not (self.data[0] > 0 and self.data[1] < 90): raise validators.ValidationError( u'Широта должна быть между 0 и 90 градусов') if not (self.data[1] > 0 and self.data[1] < 180): raise validators.ValidationError( u'Долгота должна быть между 0 и 180 градусов')
class TimeField(Field): """A text field which stores a `time.time` matching a format.""" widget = TextInput() def __init__(self, label=None, validators=None, format='%H:%M:%S', **kwargs): """Init.""" super(TimeField, self).__init__(label, validators, **kwargs) self.format = format def _value(self): if self.raw_data: return u' '.join(self.raw_data) else: return self.data and self.data.strftime(self.format) or u'' def process_formdata(self, valuelist): """Join time string.""" if valuelist: time_str = u' '.join(valuelist) try: timetuple = time.strptime(time_str, self.format) self.data = datetime.time(*timetuple[3:6]) except ValueError: self.data = None raise
class BookForm(Form): title = StringField(__('Book title label'), validators=[DataRequired()], widget=WidgetPrebind(TextInput(), class_='uk-width-1-1')) series = QuerySelectField( __('Book series label'), query_factory=lambda: BookSeries.admin_list(), allow_blank=True, blank_text=__('Select book series option'), get_label='name', ) annotation = StringField(__('Book annotation label'), widget=WidgetPrebind(TextArea(), rows=5, class_='uk-width-1-1')) publisher_info = StringField(__('Book publisher info label'), widget=WidgetPrebind(TextArea(), rows=5, class_='uk-width-1-1')) authors = StringField(__('Authors as text label'), widget=WidgetPrebind(TextArea(), rows=3, class_='uk-width-1-2')) persons = RefQuerySelectMultipleField( __('Authors label'), query_factory=lambda: Person.admin_list(with_positions=False), get_label='fullname', )
class ClimbDateField(Field): _date_format = '%d.%m.%Y' widget = TextInput() def _value(self): if self.raw_data: return self.raw_data[0] elif self.data: return \ u'.'.join( [str(f) for f in reversed(self.data) if f is not None]) else: return u'' def process_formdata(self, valuelist): if valuelist: try: self.data = model.InexactDate.fromstring(valuelist[0]) except ValueError: raise validators.ValidationError(u'Неправильно указана дата') else: self.data = None def pre_validate(self, form): if self.process_errors: raise validators.StopValidation() if self.data is not None and self.data > \ model.InexactDate.fromdate(datetime.date.today()): raise validators.ValidationError(u'Указана дата в будущем')
def __call__(self, *args, **kwargs): if self.disabled: kwargs['disabled'] = 'disabled' return TextInput.__call__(self, *args, **kwargs)
def __init__(self, disabled, *args, **kwargs): self.disabled = disabled TextInput.__init__(self, *args, **kwargs)