class BankAccountActivitiesImportForm(Form): account = SelectField(u"Bankkonto", coerce=int) user = StringField(u"Loginname", validators=[DataRequired()]) pin = PasswordField(u"PIN", validators=[DataRequired()]) start_date = DateField(u"Startdatum") end_date = DateField(u"Enddatum") do_import = BooleanField(u"Import durchführen", default=False)
class UserAddGroupMembership(Form): group_id = QuerySelectField(u"Gruppe",get_label='name',query_factory=group_query) begin_date = DateField( u"Beginn", [Required()], default=datetime.now, today_btn=True, today_highlight=True) unlimited = BooleanField(u"Unbegrenzte Dauer", default=False) end_date = DateField(u"Ende", today_btn=True, today_highlight=True)
def test_0010_convert_format_string(self): for directive, replacement in DateField.supported_directives.items(): self.assertEqual( DateField.convert_format_string("%" + directive), replacement ) self.assertEqual( DateField.convert_format_string("%%" + directive), "%" + directive ) for directive in DateField.unsupported_directives: self.assertRaises( ValueError, DateField.convert_format_string, "%" + directive ) self.assertEqual( DateField.convert_format_string("%%" + directive), "%" + directive ) unknown_directives = set(string.ascii_letters).difference( set(DateField.supported_directives.keys()), set(DateField.unsupported_directives) ) for directive in unknown_directives: self.assertRaises( ValueError, DateField.convert_format_string, "%" + directive ) self.assertEqual("", "") self.assertEqual(DateField.convert_format_string("%%"), "%") self.assertEqual(DateField.convert_format_string("%%%%"), "%%")
class SemesterCreateForm(Form): name = TextField(u"Semestername", validators=[DataRequired()]) registration_fee = IntegerField( u"Anmeldegebühr", validators=[DataRequired(), NumberRange(min=1)]) regular_semester_contribution = IntegerField( u"Regulärer Semesterbeitrag", validators=[DataRequired(), NumberRange(min=1)]) reduced_semester_contribution = IntegerField( u"Ermäßigter Semesterbeitrag", validators=[DataRequired(), NumberRange(min=1)]) overdue_fine = IntegerField( u"Versäumnisgebühr", validators=[DataRequired(), NumberRange(min=1)]) premature_begin_date = DateField(u"Vorzeitiger Anfang", validators=[DataRequired()], today_btn=True, today_highlight=True) begin_date = DateField(u"Anfang", validators=[DataRequired()], today_btn=True, today_highlight=True) end_date = DateField(u"Ende", validators=[DataRequired()], today_btn=True, today_highlight=True) belated_end_date = DateField(u"Verspätetes Ende", validators=[DataRequired()], today_btn=True, today_highlight=True)
def test_0010_convert_format_string(self): for directive, replacement in DateField.supported_directives.iteritems(): self.assertEqual( DateField.convert_format_string("%" + directive), replacement ) self.assertEqual( DateField.convert_format_string("%%" + directive), "%" + directive ) for directive in DateField.unsupported_directives: self.assertRaises( ValueError, DateField.convert_format_string, "%" + directive ) self.assertEqual( DateField.convert_format_string("%%" + directive), "%" + directive ) unknown_directives = filter( lambda c: not (c in DateField.supported_directives.keys() or c in DateField.unsupported_directives), string.ascii_letters) for directive in unknown_directives: self.assertRaises( ValueError, DateField.convert_format_string, "%" + directive ) self.assertEqual("", "") self.assertEqual(DateField.convert_format_string("%%"), "%") self.assertEqual(DateField.convert_format_string("%%%%"), "%%")
class BankAccountActivityReadForm(Form): bank_account_name = static(StringField(u"Bankkonto")) amount = disabled(MoneyField(u"Wert")) reference = static(StringField(u"Verwendungszweck")) other_account_number = static(StringField(u"Kontonummer")) other_routing_number = static(StringField(u"Bankleitzahl (BLZ)")) other_name = static(StringField(u"Name")) valid_on = static(DateField(u"Valutadatum")) posted_on = static(DateField(u"Buchungsdatum"))
class JournalEntryEditForm(Form): finance_account = TypeaheadField(u"Gegenkonto") finance_account_id = HiddenField(validators=[DataRequired()]) journal_name = static(StringField(u"Bankkonto")) amount = static(IntegerField(u"Wert")) description = StringField(u"Beschreibung") original_description = static(StringField(u"Ursprüngliche Beschreibung")) other_account_number = static(StringField(u"Kontonummer")) other_routing_number = static(StringField(u"Bankleitzahl (BLZ)")) other_name = static(StringField(u"Name")) valid_date = static(DateField(u"Valutadatum")) transaction_date = static(DateField(u"Buchungsdatum"))
class BankAccountActivityEditForm(Form): account = TypeaheadField(u"Gegenkonto", render_kw={'data_toggle': 'account-typeahead'}) account_id = HiddenField(validators=[DataRequired()]) bank_account_name = static(StringField(u"Bankkonto")) amount = disabled(MoneyField(u"Wert")) description = StringField(u"Beschreibung") original_reference = static(StringField(u"Ursprüngliche Verwendung")) other_account_number = static(StringField(u"Kontonummer")) other_routing_number = static(StringField(u"Bankleitzahl (BLZ)")) other_name = static(StringField(u"Name")) valid_on = static(DateField(u"Valutadatum")) posted_on = static(DateField(u"Buchungsdatum"))
class UserCreateForm(SelectRoomFormOptional): name = TextField(u"Name", [DataRequired(message=u"Name wird benötigt!")]) login = TextField(u"Login", [ DataRequired(message=u"Login wird benötigt!"), Regexp(regex=User.login_regex_ci, message=u"Login ist ungültig!"), validate_unique_login ], filters=[to_lowercase]) email = TextField(u"E-Mail", [Email(message=u"E-Mail ist ungueltig!"), Optional()], filters=[empty_to_none]) birthdate = DateField(u"Geburtsdatum", [OptionalIf('mac', invert=True)]) mac = MacField(u"MAC", [MacAddress(message=u"MAC ist ungültig!"), Optional()]) property_groups = QuerySelectMultipleField( u"Gruppen", get_label='name', query_factory=property_group_user_create_query) annex = BooleanField(u"Host annektieren", [Optional()]) force = BooleanField(u"* Hinweise ignorieren", [Optional()]) _order = ("name", "building", "level", "room_number")
class UserMoveInForm(UserMoveForm): mac = TextField(u"MAC", [Regexp(regex=mac_regex, message=u"MAC ist ungültig!")]) birthdate = DateField( u"Geburtsdatum", [DataRequired(message=u"Geburtsdatum wird benötigt!")]) begin_membership = BooleanField(u"Mitgliedschaft beginnen", [Optional()])
class MembershipFeeCreateForm(Form): name = TextField(u"Beitragsname", validators=[DataRequired()]) regular_fee = MoneyField(u"Regulärer Beitrag", validators=[InputRequired(), NumberRange(min=0)]) # TODO Transform IntegerFields to IntervalFields booking_begin = IntegerField( u"Buchungsbeginn (Tage)", description=u"Ab diesem Tag im Zeitraum wird ein Mitglied " u"als zahlungspflichtig angesehen.", validators=[InputRequired(), NumberRange(min=1)]) booking_end = IntegerField( u"Buchungsende (Tage)", description=u"Bis zu diesem Tag im Zeitraum wird ein neues Mitglied " u"als zahlungspflichtig angesehen.", validators=[InputRequired(), NumberRange(min=1)]) payment_deadline = IntegerField( u"Zahlungsfrist (Tage)", description=u"Bleibt ein Mitglied mehr Tage als hier angegeben eine " u"Zahlung schuldig, so wird es Mitglied in der " u"Zahlungsrückstands-Gruppe.", validators=[InputRequired(), NumberRange(min=0)]) payment_deadline_final = IntegerField( u"Endgültige Zahlungsfrist (Tage)", description=u"Bleibt ein Mitglied mehr Tage als hier angegeben eine " u"Zahlung schuldig, so wird seine Mitgliedschaft beendet.", validators=[InputRequired(), NumberRange(min=0)]) begins_on = DateField(u"Anfang", validators=[DataRequired()], today_btn=True, today_highlight=True) ends_on = DateField(u"Ende", validators=[DataRequired()], today_btn=True, today_highlight=True)
class MembershipFeeCreateForm(Form): name = TextField(u"Beitragsname", validators=[DataRequired()]) regular_fee = MoneyField(u"Regulärer Beitrag", validators=[InputRequired(), NumberRange(min=0)]) # TODO Transform IntegerFields to IntervalFields grace_period = IntegerField( u"Kulanzfrist (Tage)", description=u"Ist ein Nutzer weniger oder gleich viele Tage innerhalb " u"des Zeitraums Mitglied, so entfällt jegliche " u"Gebühr.", validators=[InputRequired(), NumberRange(min=0)]) payment_deadline = IntegerField( u"Zahlungsfrist (Tage)", description=u"Bleibt ein Mitglied mehr Tage als hier angegeben eine " u"Zahlung schuldig, so fällt die Versäumnisgebühr an. " u"Der Nutzer wird zudem Mitglied in der " u"Zahlungsrückstands-Gruppe.", validators=[InputRequired(), NumberRange(min=0)]) payment_deadline_final = IntegerField( u"Endgültige Zahlungsfrist (Tage)", description=u"Bleibt ein Mitglied mehr Tage als hier angegeben eine " u"Zahlung schuldig, so wird die Mitgliedschaft beendet.", validators=[InputRequired(), NumberRange(min=0)]) begins_on = DateField(u"Anfang", validators=[DataRequired()], today_btn=True, today_highlight=True) ends_on = DateField(u"Ende", validators=[DataRequired()], today_btn=True, today_highlight=True)
class TransactionCreateForm(Form): description = TextField(u"Beschreibung", validators=[DataRequired()]) valid_on = DateField(u"Gültig ab", validators=[Optional()], today_btn=True, today_highlight=True, default=datetime.date.today()) splits = FieldList(FormField(SplitCreateForm), validators=[DataRequired()], min_entries=2) def validate_splits(self, field): balance = sum(split_form['amount'].data for split_form in field if split_form['amount'].data is not None) if balance != 0: raise ValidationError(u"Buchung ist nicht ausgeglichen.")
class UserCreateForm(UserMoveForm): name = TextField(u"Name", [DataRequired(message=u"Name wird benötigt!")]) login = TextField(u"Login", [ DataRequired(message=u"Login wird benötigt!"), Regexp(regex=User.login_regex, message=u"Login ist ungültig!"), validate_unique_login ]) email = TextField(u"E-Mail", [Email(message=u"E-Mail ist ungueltig!"), Optional()], filters=[empty_to_none]) mac = TextField(u"MAC", [ OptionalIf('room_number', invert=True), Regexp(regex=mac_regex, message=u"MAC ist ungültig!") ]) birthdate = DateField( u"Geburtsdatum", [DataRequired(message=u"Geburtsdatum wird benötigt!")]) property_group = QuerySelectField(u"Gruppe", get_label='name', query_factory=property_group_query) annex = BooleanField(u"Host annektieren", [Optional()]) force = BooleanField(u"* Hinweise ignorieren", [Optional()])
class OptionallyDirectBeginDateForm(Form): now = BooleanField(u"Sofort", default=False) date = DateField(u"Beginn", [OptionalIf("now")])
class UserEditBirthdateForm(Form): birthdate = DateField(u"Birthdate", [Optional()], format="%d.%m.%Y")
class UserAddGroupMembership(Form): group = QuerySelectField(u"Gruppe", get_label='name', query_factory=group_query) begins_at = DateField(u"Beginn", [DataRequired()]) ends_at = FormField(OptionallyUnlimitedEndDateForm)
class UserBlockForm(Form): unlimited = BooleanField(u"Unbegrenzte Sperrung", default=False) date = DateField( u"Gesperrt bis", default=datetime.now, today_btn=True, today_highlight=True) reason = TextAreaField(u"Grund")
class UserEditGroupMembership(Form): begin_date = DateField( u"Beginn", [Required()], default=datetime.now, today_btn=True, today_highlight=True) unlimited = BooleanField(u"Unbegrenzte Mitgliedschaft", default=False) end_date = DateField(u"Ende", today_btn=True, today_highlight=True)
class UserMoveInForm(UserMoveForm): now = BooleanField(u"Sofort", default=False) when = DateField(u"Einzug am", [OptionalIf("now")]) birthdate = DateField(u"Geburtsdatum", [OptionalIf('mac', invert=True)]) mac = MacField(u"MAC", [Optional()]) begin_membership = BooleanField(u"Mitgliedschaft beginnen", [Optional()])
class UserMoveOutForm(Form): date = DateField( u"Auszug am", [Required()], default=datetime.now, today_btn=True, today_highlight=True) comment = TextAreaField(u"Kommentar")
class UserMoveForm(SelectRoomForm): now = BooleanField(u"Sofort", default=False) when = DateField(u"Umzug am", [OptionalIf("now")]) pass
class UserEditForm(Form): name = TextField(u"Name", [DataRequired(message=u"Name wird benötigt!")]) email = TextField( u"E-Mail", [Optional(), Email(u"E-Mail-Adresse ist ungültig!")]) birthdate = DateField(u"Geburtsdatum", [Optional()])
class UserMoveOutForm(Form): now = BooleanField(u"Sofort", default=False) when = DateField(u"Auszug am", [OptionalIf("now")]) comment = TextAreaField(u"Kommentar") end_membership = BooleanField(u"Mitgliedschaft/Extern beenden", [Optional()])
class UserEditGroupMembership(Form): begins_at = DateField(u"Beginn", [DataRequired()]) ends_at = FormField(OptionallyUnlimitedEndDateForm)
class OptionallyUnlimitedEndDateForm(Form): unlimited = BooleanField(u"Unbegrenzte Dauer", default=False) date = DateField(u"Ende", [OptionalIf("unlimited")])