Files @ 52127f437376
Branch filter:

Location: C3L/C3L-Membership-Online-Form/c3l_membership/forms.py

Dennis Fink
Split up membership plans into more fields.

Student and starving are now options that can be selected additionally to the
regular or supporting membership.
from datetime import date

from flask_wtf import Form
from wtforms import BooleanField, RadioField, StringField, SubmitField
from wtforms.fields.html5 import DateField
from wtforms.validators import Email, InputRequired, Length, Optional, Required


class MembershipForm(Form):

    username = StringField(
        "Username",
        validators=[InputRequired("This field is required!"), Length(max=255)],
    )
    email = StringField(
        "E-Mail", validators=[InputRequired("This field is required!"), Email()]
    )
    fullname = StringField(
        "Full Name",
        validators=[InputRequired("This field is required!"), Length(max=65536)],
    )

    membership = RadioField(
        "Membership Plan",
        validators=[InputRequired("Please select one of the options!")],
        choices=[
            (
                "regular",
                "Regular membership - Membership with voting rights on the general assembly.",
            ),
            (
                "supporting",
                "Supporting membership - Membership without voting rights on the general assembly.",
            ),
        ],
    )

    student = BooleanField(
        ("I am a student and would like to have the reduced membership fees."),
    )

    starving = BooleanField(
        (
            "I am a starving hacker and cannot afford the membership! (Please get in touch with us at info@c3l.lu before filling out this membership form)"
        )
    )

    payment = RadioField(
        "Payment Options",
        validators=[InputRequired("Please select one of the options!")],
        choices=[
            ("cash", "by cash"),
            ("wire transfer", "by wire transfer"),
            ("digicash", "by DigiCash"),
            ("bitcoin", "by bitcoin"),
            ("ethereum", "by ethereum"),
        ],
    )

    street = StringField(
        "Nr., Street",
        validators=[Length(max=4000)],
    )
    zip = StringField(
        "Postal Code",
        validators=[Length(max=30)],
    )

    city = StringField(
        "City/Town",
        validators=[Length(max=500)],
    )

    state = StringField(
        "State/County/Province",
        validators=[Length(max=500)],
    )

    country = StringField(
        "Country",
        validators=[Length(max=500)],
    )

    gpg = StringField(
        "GPG-ID",
        validators=[Optional(), Length(max=18)],
    )
    jabber = StringField("Jabber Handle", validators=[Optional(), Email()])
    twitter = StringField("Twitter Handle", validators=[Optional()])

    terms = BooleanField(
        (
            "By submitting this membership application, you agree to have read and understood "
            'the <a href="http://statutes.c3l.lu">statutes of the Chaos Computer Club Lëtzebuerg A.S.B.L.</a>'
        ),
        validators=[InputRequired()],
    )

    minor_member = BooleanField(
        (
            "I am under 18 years of age and have the approval of my legal representative."
        ),
    )

    submit = SubmitField("Become a member")