class RegistrationForm(BaseModelForm): class Meta: model = User def __init__(self, *args, **kwargs): super(RegistrationForm, self).__init__(*args, **kwargs) if not self.next.data: self.next.data = request.args.get('next', '') first_name = StringField('First Name', [validators.length(min=2, max=50)]) second_name = StringField('Last Name', [validators.length(min=2, max=50)]) phone_number = StringField('Phone', [validators.length(min=10, max=18), Unique(User.phone_number)]) username = StringField('Username', [validators.length(min=6, max=30), Unique(User.username)]) email = StringField("Email", validators=[email_required, email_validator, Unique(User.email)]) password = PasswordField("Password", validators=[password_required, password_length]) password_confirm = PasswordField("Retype Password", validators=[EqualTo('password', message='RETYPE_PASSWORD_MISMATCH'), password_required]) next = HiddenField() submit = SubmitField('Register') def validate_next(self, field): if field.data and not validate_redirect_url(field.data): field.data = '' flash(*get_message('INVALID_REDIRECT')) raise ValidationError(get_message('INVALID_REDIRECT')[0])
class SignupForm(ModelForm): username = StringField(validators=[ DataRequired(), Unique(User.username, get_session=lambda: db.session) ]) email = EmailField(validators=[ DataRequired(), Email(), Unique(User.email, get_session=lambda: db.session) ]) password = PasswordField(validators=[DataRequired(), Length(8, 128)]) confirm_password = PasswordField( validators=[DataRequired(), EqualTo('password')])
class NewCustomerForm(ModelForm): # Genral Info first_name = StringField('First Name', validators=[DataRequired()]) last_name = StringField('Last Name') company = StringField('Company') display_name = StringField('Display Name', validators=[ DataRequired(), Unique(Customers.display_name, get_session=lambda: db.session) ]) customer_type = SelectField(u'Customers Type', choices=[('Consumer', 'Consumer'), ('GST Registered', 'GST Registered'), ('GST Unregistered', 'GST Unregistered')]) # Contant Info phone = StringField('Phone', validators=[Optional(), Length(6, 13)]) email = EmailField('Email', validators=[Optional(), Email()]) website = StringField('Website') # Billing Address address = TextAreaField('Billing Address') pincode = StringField('Billing Pincode') city = StringField('Billing City') state = StringField('Billing State') country = StringField('Billing Country') # Shiping Address s_address = TextAreaField('Shipping Address') s_pincode = StringField('Shipping Pincode') s_city = StringField('Shipping City') s_state = StringField('Shipping State') s_country = StringField('Shipping Country') # Tax Info gst = StringField( 'GST No.', validators=[ Optional(), Unique(Customers.gst, get_session=lambda: db.session), Regexp(r'\d{2}[A-Z]{5}\d{4}[A-Z]{1}[A-Z\d]{1}[Z]{1}[A-Z\d]{1}') ]) pan = StringField('PAN No.', validators=[ Optional(), Unique(Customers.pan, get_session=lambda: db.session), Regexp(r'^[a-zA-Z]{5}[0-9]{4}[a-zA-Z]$') ])
class StudentForm(_PersonForm, ModelForm): class Meta: model = Student include_primary_keys = True id = IntegerField('Номер студенческого билета', [ validators.DataRequired(), validators.NumberRange(min=1), Unique(Student.id, get_session=lambda: db.session, message='Номер студенческого билета занят') ]) status = QuerySelectField('Состояние', query_factory=lambda: StudentStates, get_pk=lambda s: s, get_label=lambda s: StudentStateDict[s], allow_blank=False, validators=[validators.DataRequired()]) semester = IntegerField( 'Семестр', [validators.NumberRange(min=1, max=10), validators.Optional()]) stud_group = QuerySelectField( 'Группа', query_factory=lambda: db.session.query(StudGroup).filter( StudGroup.active).order_by(StudGroup.year, StudGroup.semester, StudGroup.num, StudGroup.subnum).all(), get_pk=lambda g: g.id, get_label=lambda g: "%d курс группа %s" % (g.course, g.num_print), blank_text='Не указана', allow_blank=True) alumnus_year = IntegerField('Учебный год выпуск', [ validators.NumberRange(min=2000, max=datetime.now().year + 1), validators.Optional() ]) expelled_year = IntegerField('Учебный год отчисления', [ validators.NumberRange(min=2000, max=datetime.now().year + 1), validators.Optional() ]) card_number = IntegerField('Номер карты (пропуска)', [ validators.Optional(), validators.NumberRange(min=1), Unique(Student.card_number, get_session=lambda: db.session, message='Номер занят') ]) group_leader = BooleanField('Староста') button_save = SubmitField('Сохранить') button_delete = SubmitField('Удалить')
class NewConsumableForm(ModelForm): name = StringField('Name', validators=[ DataRequired(), Unique(Consumable.name, get_session=lambda: dbt.session) ]) product_code = StringField('Product Code') category = StringField('Category') description = TextAreaField('Description') model = StringField('Model') unit = SelectField(u'Unit', choices=[ ('BAG', 'BAG - BAGS'), ('BOT', 'BOT - BOTTLES'), ('BOX', 'BOX - BOXES'), ('CMS', 'CMS - CENTIMETERS'), ('CAN', 'CAN - CANS'), ('DOZ', 'DOZ - DOZENS'), ('DRUM', 'DRUM - DRUMS'), ('KGS', 'KGS - KILLOGRAMS'), ('PCS', 'PCS - PIECES'), ('PAC', 'PAC - PACKS'), ('TON', 'TON - TONES'), ('UNT', 'UNT - UNITS'), ('YDS', 'YDS - YARDS'), ]) qty = IntegerField("Qty", validators=[Optional()]) sales_price = DecimalField("Sales Price", validators=[Optional()], places=2) low_stock_alert = IntegerField('Low Stock Alert', validators=[Optional()])
class CampaignForm(FlaskForm): next = HiddenField() name = TextField(_('Campaign Name'), [Required(), Length(max=LONG_STRING_LEN), Unique(Campaign.name, message="Campaign with that name already exists")]) campaign_country = DisabledSelectField(_('Country'), [Optional()], choices=COUNTRY_CHOICES) campaign_type = DisabledSelectField(_('Type'), [Optional()]) campaign_state = SelectField(_('State'), [Optional()]) campaign_subtype = SelectField(_('Subtype'), [Optional()]) # nested_type passed to data-field in template, but starts empty segment_by = RadioField(_('Segment By'), [Required()], choices=choice_items(SEGMENT_BY_CHOICES), description=True, default=SEGMENT_BY_CHOICES[0][0]) locate_by = RadioField(_('Locate By'), [Optional()], choices=choice_items(LOCATION_CHOICES), description=True, default=None) show_special = BooleanField(_('Include Special Targets'), [Optional()], default=False) include_special = SelectField(_('User\'s Representatives'), [Optional()], choices=choice_items(INCLUDE_SPECIAL_CHOCIES), description=True, default=INCLUDE_SPECIAL_CHOCIES[0][0]) target_set = FieldList(FormField(TargetForm, _('Choose Targets')), validators=[Optional()]) target_ordering = RadioField(_('Target Order'), [Optional()], description=True) target_shuffle_chamber = BooleanField(_('Shuffle within Chamber'), [Optional()], default=True, description=True) target_offices = RadioField(_('Target Offices'), [Optional()], choices=choice_items(TARGET_OFFICE_CHOICES), description=True, default=TARGET_OFFICE_CHOICES[0][0]) call_limit = BooleanField(_('Limit Maximum Calls'), [Optional()], default=False) call_maximum = IntegerField(_('Call Maximum'), [Optional(), NumberRange(min=0)]) phone_number_set = QuerySelectMultipleField(_('Select Phone Numbers'), query_factory=TwilioPhoneNumber.available_numbers, description=True, validators=[Required()]) allow_call_in = BooleanField(_('Allow Call In')) allow_intl_calls = BooleanField(_('Allow International Calls')) prompt_schedule = BooleanField(_('Prompt to Schedule Recurring Calls')) submit = SubmitField(_('Edit Audio')) submit_skip_audio = SubmitField(_('Save and Test')) def __init__(self, campaign_data, *args, **kwargs): super(CampaignForm, self).__init__(*args, **kwargs) read_only(self.campaign_country) read_only(self.campaign_type) self.campaign_type.choices = choice_items(campaign_data.data_provider.campaign_type_choices) self.campaign_state.choices = choice_items(campaign_data.region_choices) self.campaign_subtype.choices = choice_items(campaign_data.subtype_choices) self.target_ordering.choices = choice_items(campaign_data.target_order_choices) def validate(self): # check default validation if not FlaskForm.validate(self): return False # check nested forms for t in self.target_set: if not t.form.validate(): error_fields = ','.join(t.form.errors.keys()) self.target_set.errors.append({'target': t.name, 'message': 'Invalid target ' + error_fields}) return False return True
class UpdateCredentialsForm(ModelForm): current_password = PasswordField( 'Current password', [DataRequired(), Length(8, 128), ensure_existing_password_matches]) email = EmailField(validators=[Email(), Unique(User.email)]) password = PasswordField('Password', [Optional(), Length(8, 128)])
class WelcomeForm(ModelForm): username_message = 'Letters, numbers and underscores only please.' username = StringField(validators=[ Unique(User.username), DataRequired(), Length(1, 16), Regexp(r'^\w+$', message=username_message) ])
class UserForm(ModelForm): class Meta: model = User only = ["birth_date", "email"] username = TextField("username", validators=[Length(max=80), Unique(User.username)]) password = PasswordField("password") first_name = TextField("first_name", validators=[Length(max=80)]) last_name = TextField("last_name", validators=[Length(max=80)])
class PersonForm(ModelForm): class Meta: model = Person strip_string_fields = True first_name = StringField( validators=[DataRequired(), Length(min=3, max=50)]) last_name = StringField(validators=[DataRequired(), Length(min=3, max=50)]) email = StringField(validators=[DataRequired(), Email(), Unique('email')]) phone = StringField(validators=[DataRequired(), Regexp('\d{9}')])
class SubjectForm(ModelForm): class Meta: model = Subject name = StringField('Название предмета', [ validators.DataRequired(), validators.Length(min=3, max=Subject.name.property.columns[0].type.length), Unique(Subject.name, get_session=lambda: db.session, message='Предмет с таким названием существует') ]) button_save = SubmitField('Сохранить') button_delete = SubmitField('Удалить')
class SubjectForm(ModelForm): """Форма для добавления/удаления учебного предмета""" class Meta: """Метаданные для формы""" model = Subject name = StringField('Название предмета', [validators.DataRequired(), Unique(Subject.name, get_session=lambda: DB.session, message='Предмет с таким названием существует')]) button_save = SubmitField('Сохранить') button_delete = SubmitField('Удалить')
class UserForm(ModelForm): username_message = 'Letters, numbers and underscores only please.' username = StringField(validators=[ Unique(User.username), Optional(), Length(1, 16), Regexp(r'^\w+$', message=username_message) ]) role = SelectField('Privileges', [DataRequired()], choices=choices_from_dict(User.ROLE, prepend_blank=False)) active = BooleanField('Yes, allow this user to sign in')
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) clazz = self.Meta.model self.login.validators = [ validators.Optional(), validators.Length(min=3, max=45), validators.Regexp( "^[a-z0-9_]+$", message= "Учётное имя может содержать только латинкие символы, цифры и знак подчёркивания" ), Unique(clazz.login, get_session=lambda: db.session, message='Логин занят') ]
class NewMachineForm(ModelForm): # Genral Info name = StringField('Name', validators=[ DataRequired(), Unique(Machine.name, get_session=lambda: dbt.session) ]) product_code = StringField('Product Code') category = StringField('Category') description = TextAreaField('Description') model = StringField('Model') serial = StringField('Serial No.') instdate = DateField('Installation Date')
class StudentForm(ModelForm): """Форма для добавления/удаления студента""" class Meta: """Метаданные для формы""" model = Student include_primary_keys = True id = IntegerField('Номер студенческого билета', [validators.DataRequired(), validators.NumberRange(min=1), Unique(Student.id, get_session=lambda: DB.session, message='Номер студенческого билета занят')]) surname = StringField('Фамилия', [validators.DataRequired()]) firstname = StringField('Имя', [validators.DataRequired()]) middlename = StringField('Отчество') semester = IntegerField('Семестр', [validators.NumberRange(min=1, max=10), validators.Optional()]) stud_group = QuerySelectField('Группа', query_factory= lambda: DB.session.query(StudGroup). filter(StudGroup.active).order_by( StudGroup.year, StudGroup.semester, StudGroup.num, StudGroup.subnum ).all(), get_pk=lambda g: g.id, get_label=lambda g: "%d курс группа %s" % (g.course, g.num_print), blank_text='Не указана', allow_blank=True) alumnus_year = IntegerField('Учебный год выпуск', [validators.NumberRange(min=2000, max=datetime.now().year + 1), validators.Optional()]) expelled_year = IntegerField('Учебный год отчисления', [validators.NumberRange(min=2000, max=datetime.now().year + 1), validators.Optional()]) button_save = SubmitField('Сохранить') button_delete = SubmitField('Удалить')
class SignupForm(ModelForm): email = EmailField( validators=[DataRequired(), Email(), Unique(User.email)]) password = PasswordField('Password', [DataRequired(), Length(8, 128)])
class EmailForm(ModelForm): email = EmailField(validators=[ DataRequired(), Email(), Unique(User.email) ])