class LibrarianBaseForm(FlaskForm): first_name = StringField( _l('First name'), validators=[required_cust(), length_cust(max=20), string_cust()]) last_name = StringField( _l('Last name'), validators=[required_cust(), length_cust(max=30), string_cust()])
class SearchForm(FlaskForm): text = StringField( _l('Search for'), validators=[optional_cust(), string_cust(), length_cust(max=50)]) submit = SubmitField(_l('Search'))
class PriceAdd(FlaskForm): price_value = DecimalField(_l('Price'), validators=[required_cust_decimal()], places=2) currency = StringField( _l('Currency'), validators=[required_cust(), char_cust(), length_cust(max=3)]) note = TextAreaField( _l('Note'), validators=[optional_cust(), string_cust(), length_cust(max=150)]) submit = SubmitField(_l('Add price')) def validate_price_value(self, price_value): if price_value.data < 0.0: raise ValidationError(_l('Price can not be lower than zero') + '.') elif price_value.data > 100.0: raise ValidationError( _l('Price can not be higher than hundred') + '.') else: exists = ExtensionPrice.query.filter( and_(ExtensionPrice.price_value == price_value.data, ExtensionPrice.currency == self.currency.data)).first() if not exists == None: raise ValidationError( _l('Price value already exists, please consider activating the existing one' ) + '.')
class PriceUpdate(FlaskForm): note = TextAreaField( _l('Note'), validators=[optional_cust(), string_cust(), length_cust(max=150)]) submit = SubmitField(_l('Approve'))
class BookCUForm(FlaskForm): inv_number = StringField( _l('Inventory number'), validators=[required_cust(), numeric_cust(), length_cust(max=6)]) signature = StringField( _l('Signature'), validators=[required_cust(), signature_cust(), length_cust(max=15)]) title = StringField( _l('Title'), validators=[required_cust(), string_cust(), length_cust(max=50)]) author = StringField( _l('Author'), validators=[required_cust(), string_cust(), length_cust(max=50)]) has_error = BooleanField( _l('Has error') + ' (' + _l('book has a problematic inventory number') + ')')
class LibrarianForm(LibrarianBaseForm): email = StringField( _l('E-mail address'), validators=[optional_cust(), email_cust(), length_cust(max=40)]) phone = StringField(_l('Phone'), validators=[required_cust(), phone_cust()]) address = StringField( _l('Address'), validators=[required_cust(), length_cust(max=50), string_cust()]) def validate_username(self, username): librarian = Librarian.query.filter_by(username=username.data).first() if librarian: raise ValidationError( _l('That username is taken. Please choose a different one') + '.')
class ExtensionForm(FlaskForm): date_expiration = None price = QuerySelectField( _l('Price'), query_factory=lambda: ExtensionPrice.query.filter_by( is_enabled=True).order_by(ExtensionPrice.price_value)) note = TextAreaField( _l('Note'), validators=[optional_cust(), string_cust(), length_cust(max=150)]) date_performed = DateField(_l('Date extended'), validators=[required_cust_date()], format=DATE_FORMAT, default=date.today()) submit = SubmitField(_l('Extend membership')) def validate_date_performed(self, date_performed): if date_performed.data > date.today(): raise ValidationError(_l('Date can not be set in future') + '.') elif self.date_expiration < date.today(): if date_performed.data < date.today() - timedelta( BACKWARD_INPUT_LIMIT): raise ValidationError( _l('Date cannot be set in past for more than') + ' ' + str(BACKWARD_INPUT_LIMIT) + ' ' + _l('days') + '.') elif self.date_expiration >= date.today(): if date_performed.data < self.date_expiration - timedelta( BACKWARD_INPUT_LIMIT): raise ValidationError( _l('Date cannot be set more than') + ' ' + str(BACKWARD_INPUT_LIMIT) + ' ' + _l('days before the curent membership expiration date') + '.') def validate_price(self, price): if not price.data == None: found = ExtensionPrice.query.filter_by(id=price.data.id).first() if not found: raise ValidationError(_l('Value is not a valid price') + '.')
class ShortFilterForm(FlaskForm): text = StringField(_l('Search for'), validators=[length_cust(max=40), string_cust()]) submit = SubmitField(_l('Search'))
class UserForm(FlaskForm): first_name = StringField(_l('First name'), validators=[required_cust(), length_cust(max=20), string_cust()]) last_name = StringField(_l('Last name'), validators=[required_cust(), length_cust(max=30), string_cust()]) father_name = StringField(_l('Father name'), validators=[required_cust(), length_cust(max=20), string_cust()]) profession = StringField(_l('Profession'), validators=[required_cust(), length_cust(max=50), string_cust()]) email = StringField(_l('E-mail address'), validators=[optional_cust(), email_cust(), length_cust(max=50)]) phone = StringField(_l('Phone'), validators=[required_cust(), phone_cust()]) address = StringField(_l('Address'), validators=[required_cust(), length_cust(max=60), string_cust()])