class CreateAppointmentForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) start_date = DateField('start_date', validators=[DataRequired()], widget=DateInput()) start_time = TimeField('start_time', validators=[DataRequired()], widget=TimeInput()) end_date = DateField('end_date', validators=[DataRequired()], widget=DateInput()) end_time = TimeField('end_time', validators=[DataRequired()], widget=TimeInput()) description = TextAreaField('description', validators=[DataRequired()]) private = BooleanField('private?') submit = SubmitField('create appointment') def validate_end_date(form, field): end = datetime.combine(form.end_date.data, form.end_time.data) start = datetime.combine(form.start_date.data, form.start_time.data) if start >= end: raise ValidationError('Start must come before end!') if form.end_date.data != form.start_date.data: raise ValidationError( 'Start date and end date must be the same day!')
class AppointmentForm(FlaskForm): name = StringField("name", validators=[DataRequired()]) start_date = DateField("start_date", validators=[DataRequired()], widget=DateInput()) start_time = TimeField("start_time", validators=[DataRequired()], widget=TimeInput()) end_date = DateField("end_date", validators=[DataRequired()], widget=DateInput()) end_time = TimeField("end_time", validators=[DataRequired()], widget=TimeInput()) description = TextAreaField("description", validators=[DataRequired()]) private = BooleanField("private") submit = SubmitField("Submit") def validate_end_date(form, field): start = datetime.combine(form.start_date.data, form.start_time.data) end = datetime.combine(field.data, form.end_time.data) if start >= end: msg = "End date/time must come after start date/time" raise ValidationError(msg) if form.start_date.data != form.end_date.data: msg = "End date must be the same as start date" raise ValidationError(msg)
class AppointmentForm(FlaskForm): name = StringField("Name", validators=[DataRequired()]) start_date = start_date = DateField( "Start date", [DataRequired()], widget=DateInput()) start_time = TimeField("Start Time", [DataRequired()], widget=TimeInput()) end_date = DateField("End Date", [DataRequired()], widget=DateInput()) end_time = TimeField("End Time", [DataRequired()], widget=TimeInput()) description = TextAreaField("Description", validators=[DataRequired()]) private = BooleanField("Private") submit = SubmitField("Save")
class TimeField(Field): """A text field which stores a `datetime.time` matching a format. Taken from http://flask-admin.readthedocs.org/en/v1.0.7/_modules/flask/ext/admin /form/fields/#TimeField """ widget = TimeInput() error_msg = 'Not a valid time.' def __init__(self, label=None, validators=None, format='%I:%M%p', **kwargs): super(TimeField, self).__init__(label, validators, **kwargs) self.format = format def _value(self): if self.raw_data: return ' '.join(self.raw_data) else: return self.data and self.data.strftime(self.format) or '' def process_formdata(self, valuelist): if valuelist: time_str = ' '.join(valuelist) try: self.data = datetime.time( *time.strptime(time_str.lower(), self.format)[3:5]) except ValueError: self.data = None raise ValueError(self.gettext(self.error_msg))
class AppointmentForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) start_date = DateField('Start Date', validators=[DataRequired()], widget=DateInput()) start_time = TimeField('Start Time', validators=[DataRequired()], widget=TimeInput()) end_date = DateField('End Date', validators=[DataRequired()], widget=DateInput()) end_time = TimeField('End Time', validators=[DataRequired()], widget=TimeInput()) description = TextAreaField('Description', validators=[DataRequired()]) private = BooleanField('Private') submit = SubmitField('Submit') def validate_end_date(self, field): start = datetime.combine(self.start_date.data, self.start_time.data), end = datetime.combine(field.data, self.end_time.data), if start >= end: raise ValidationError("End date/time must come after start date/time") if not self.start_date.data == field.data: raise ValidationError("End date must the be the same as start date")
class AppointmentForm(FlaskForm): name = StringField('name', validators=[DataRequired()]) start_date = DateField('start_datetime', widget=DateInput(), validators=[DataRequired()]) start_time = TimeField('start_datetime', widget=TimeInput(), validators=[DataRequired()]) end_date = DateField('end_datetime', widget=DateInput(), validators=[DataRequired()]) end_time = TimeField('end_datetime', widget=TimeInput(), validators=[DataRequired()]) description = TextAreaField('description', validators=[DataRequired()]) private = BooleanField('private') submit = SubmitField()
class AppointmentForm(FlaskForm): name = StringField('Name', validators) start_date = DateField('Start date', validators, widget=DateInput()) start_time = TimeField('Start time', validators, widget=TimeInput()) end_date = DateField('End date', validators, widget=DateInput()) end_time = TimeField('End time', validators, widget=TimeInput()) description = TextAreaField('Description', validators) private = BooleanField('Private?') submit = SubmitField('Create an appointment') def validate_end_date(form, field): start = datetime.combine(form.start_date.data, form.start_time.data) end = datetime.combine(form.end_date.data, form.end_time.data) if start >= end: raise ValidationError( 'End date/time must come after start date/time') if form.start_date.data != form.end_date.data: raise ValidationError('End date must be the same as start date')
class AppointmentForm(FlaskForm): name= StringField('Name',validators=[DataRequired()]) start_date= DateField('Start Date',validators=[DataRequired()], widget=DateInput()) start_time= TimeField('Start Time',validators=[DataRequired()], widget=TimeInput()) end_date= DateField('End Date',validators=[DataRequired()], widget=DateInput()) end_time= TimeField('End Time',validators=[DataRequired()], widget=TimeInput()) description= TextAreaField('Description',validators=[DataRequired()]) private= BooleanField('Private') submit= SubmitField('Create Appointment') def validate_end_date(form, field): start = datetime.combine(form.start_date.data, form.start_time.data) # end = datetime.combine(field.data, form.end_time.data) print(field) end = datetime.combine(form.end_date.data, form.end_time.data) if start >= end: msg = "End date/time must come after start date/time" raise ValidationError(msg)
class MovieventForm(Form): date = DateField('Date', validators=[DataRequired()], format='%d %B, %Y', description="Which day?") time = DateTimeField('Time', widget=TimeInput(), validators=[DataRequired()], format='%I:%M %p', description="and time?")
class EntryForm(FlaskForm): visited_date = DateField(widget=DateInput(), validators=[DataRequired()]) visited_time = TimeField(widget=TimeInput(), validators=[DataRequired()]) covid_status = SelectField("Covid Status", validators=[DataRequired()], choices=[(2, 'Tested Positive'), (1, 'Have Symptoms'), (0, 'I\'m not sure')]) last_visited_location = StringField( "Last Visited Location", render_kw={'readonly': ''}, validators=[DataRequired(message="This field is required!")]) last_visited_location_lat_long = HiddenField() submit = SubmitField("Submit")
class AppointmentForm(FlaskForm): name = StringField(label='Name', validators=[InputRequired()]) start_date = DateField('Start date', validators=[ InputRequired()], widget=DateInput()) start_time = TimeField('Start time', validators=[ InputRequired()], widget=TimeInput()) end_date = DateField('End date', validators=[ InputRequired()], widget=DateInput()) end_time = TimeField('End time', validators=[ InputRequired()], widget=TimeInput()) description = TextAreaField('Description', validators=[InputRequired()]) private = BooleanField('Private?') submit = SubmitField('Create an Appointment') def validate_end_date(form, field): end = datetime.combine(form.end_date.data, form.end_time.data) start = datetime.combine(form.start_date.data, form.start_time.data) if form.end_date.data != form.start_date.data: msg = 'Appointment must start and end on the same day' raise ValidationError(msg) if start >= end: msg = "End data/time must come after start date/time" raise ValidationError(msg)
class TimeField(Field): """A text field which stores a `datetime.time` matching a format. Adapted from: http://flask-admin.readthedocs.org/en/v1.0.7/_modules/flask/ext/admin/form/fields/#TimeField """ widget = TimeInput() error_msg = 'Not a valid time.' def __init__(self, label=None, validators=None, format='%I:%M%p', # 1:45PM **kwargs): """Creates a TimeField instance. :param str label: A label to be optionally displayed next to the field. :param validators: callables that validate the field's data. :type validators: list of functions or :class:`wtforms.validators` :param str format: the format to store the time in. """ super(TimeField, self).__init__(label, validators, **kwargs) self.format = format def _value(self): """Called by :mod:`wtforms` to get the data from the field. :returns: The time encoded as a string. :rtype: str """ if self.raw_data: return ' '.join(self.raw_data) else: return self.data and self.data.strftime(self.format) or '' def process_formdata(self, valuelist): """Called by :mod:`wtforms`.""" if valuelist: time_str = ' '.join(valuelist) try: self.data = datetime.time( *time.strptime(time_str.lower(), self.format)[3:5] ) except ValueError: self.data = None raise ValueError(self.gettext(self.error_msg))
class TimeField(StringField): """HTML5 time input.""" widget = TimeInput() def __init__(self, label=None, validators=None, format='%H:%M:%S', **kwargs): super(TimeField, self).__init__(label, validators, **kwargs) self.format = format def _value(self): if self.raw_data: return ' '.join(self.raw_data) else: return self.data and self.data.strftime(self.format) or '' def process_formdata(self, valuelist): if valuelist and valuelist != [u'']: time_str = ' '.join(valuelist) try: components = time_str.split(':') hour = 0 minutes = 0 seconds = 0 if len(components) in range(2, 4): hour = int(components[0]) minutes = int(components[1]) if len(components) == 3: seconds = int(components[2]) else: raise ValueError self.data = datetime.time(hour, minutes, seconds) except ValueError: self.data = None raise ValueError(self.gettext('Not a valid time'))
from wtforms.widgets.html5 import DateInput, TimeInput from wtforms.validators import DataRequired, ValidationError def next_block(delta=0): def time(): now = datetime.now() return now - timedelta(minutes=now.minute % 15 - delta - 15, seconds=now.second) return time v = [DataRequired()] di = {'default': datetime.now, 'widget': DateInput()} sti = {'default': next_block(), 'widget': TimeInput()} eti = {'default': next_block(60), 'widget': TimeInput()} class AppointmentForm(FlaskForm): name = StringField("Name", v) start_date = DateField("Start date", v, **di) start_time = TimeField("Start time", v, **sti) end_date = DateField("End date", v, **di) end_time = TimeField("End time", v, **eti) description = TextAreaField("Description", v) private = BooleanField("Private?") submit = SubmitField("Create an appointment") def validate_end_date(form, field): start = datetime.combine(form.start_date.data, form.start_time.data)
class ScheduleSubForm(Form): weekday = HiddenField() open_from = StringField('From', widget=TimeInput()) open_to = StringField('To', widget=TimeInput())