Changeset - 52127f437376
[Not reviewed]
default
0 4 0
Dennis Fink - 4 years ago 2021-06-14 20:43:03
dennis.fink@c3l.lu
Split up membership plans into more fields.

Student and starving are now options that can be selected additionally to the
regular or supporting membership.
4 files changed with 44 insertions and 17 deletions:
0 comments (0 inline, 0 general)
c3l_membership/forms.py
Show inline comments
 
@@ -21,22 +21,33 @@ class MembershipForm(Form):
 
    )
 

	
 
    membership = RadioField(
 
        "Membership Plan",
 
        validators=[InputRequired("Please select one of the options!")],
 
        choices=[
 
            ("regular", "Regular membership (120€/year)"),
 
            ("student", "Student membership (40€/year)"),
 
            (
 
                "regular",
 
                "Regular membership - Membership with voting rights on the general assembly.",
 
            ),
 
            (
 
                "supporting",
 
                "Supporting membership (40€/year) - Membership without voting rights",
 
                "Supporting membership - Membership without voting rights on the general assembly.",
 
            ),
 
            ("starving", "Starving Hacker - Get in touch with us at info@c3l.lu"),
 
        ],
 
    )
 

	
 
    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"),
c3l_membership/templates/index.html
Show inline comments
 
@@ -57,12 +57,26 @@
 
            {% for option in form.membership %}
 
            <label for="{{ option.id }}" class="pure-radio pure-u-1-1">
 
              {{ option() }}
 
              {{ option.label.text }}
 
            </label>
 
            {% endfor %}
 
            <div class="pure-g">
 
              <div class="pure-u-1-1">
 
                <label for="{{ form.student.id }}" class="pure-checkbox">
 
                {{ form.student }} {{ form.student.label.text|safe}}
 
                </label>
 
              </div>
 
            </div>
 
            <div class="pure-g">
 
              <div class="pure-u-1-1">
 
                <label for="{{ form.starving.id }}" class="pure-checkbox">
 
                  {{ form.starving }} {{ form.starving.label.text|safe}}
 
                </label>
 
              </div>
 
            </div>
 
            <h3>What's difference between the different membership options?</h3>
 
            <p>All the options include to following benefits:</p>
 
            <ul>
 
              <li>Access to the <a href="https://wiki.c3l.lu/doku.php?id=organization:membership#benefits">services</a> run by us</li>
 
              <li>Access to our <a href="https://wiki.c3l.lu/doku.php?id=chaosstuff:bootstrap">hackerspace: ChaosStuff</a></li>
 
            </ul>
c3l_membership/templates/member.html
Show inline comments
 
@@ -22,13 +22,17 @@
 
      <dd>{{ form.city.data if form.city.data else "<i>Not specified</i>"|safe }}</dd>
 
      <dt>State/County/Province:</dt>
 
      <dd>{{ form.state.data if form.state.data else "<i>Not specified</i>"|safe }}</dd>
 
      <dt>Country:</dt>
 
      <dd>{{ form.country.data if form.country.data else "<i>Not specified</i>"|safe }}</dd>
 
      <dt>Membership Plan:</dt>
 
      <dd>{{ membership }}</dd>
 
      <dd>{{ form.membership.data }}</dd>
 
      <dt>Student:</dt>
 
      <dd>{{ "Yes" if form.student.data else "No" }}</dd>
 
      <dt>Starving:</dt>
 
      <dd>{{ "Yes" if form.starving.data else "No" }}</dd>
 
      <dt>Payment:</dt>
 
      <dd>{{ form.payment.data }}</dd>
 
      <dt>Agreed to Terms &amp; Conditions:</dt>
 
      <dd>{{ "Yes" if form.terms.data else "No" }}</dd>
 
      <dt>Minor Member:</dt>
 
      <dd>{{ "Yes" if form.minor_member.data else "No" }}</dd>
c3l_membership/views.py
Show inline comments
 
@@ -11,23 +11,23 @@ root_page = Blueprint("root", __name__)
 

	
 
@root_page.route("/", methods=("GET", "POST"))
 
def index():
 
    form = MembershipForm()
 
    if form.validate_on_submit():
 

	
 
        if form.minor_member.data and form.membership.data != "starving":
 
            membership = "student"
 
        else:
 
            membership = form.membership.data
 
        if (
 
            form.minor_member.data
 
            or form.student.data
 
            or form.membership.data == "supporting"
 
        ):
 
            price = 40
 
        elif form.membership.data == "regular":
 
            price = 120
 

	
 
        if membership in ["student", "supporting"]:
 
            price = 40
 
        elif membership == "starving":
 
        if form.starving.data:
 
            price = 1
 
        else:
 
            price = 120
 

	
 
        if form.payment.data == "bitcoin":
 
            price = subprocess.check_output(
 
                ["/usr/local/share/btc/BTC_Membership.pl", str(price)]
 
            ).decode("utf-8")
 
        elif form.payment.data == "ethereum":
 
@@ -36,11 +36,9 @@ def index():
 
            ).decode("utf-8")
 
        elif form.payment.data == "digicash":
 
            price = price * 100
 

	
 
        year = date.today().year
 

	
 
        html = render_template(
 
            "member.html", form=form, membership=membership, price=price, year=year
 
        )
 
        html = render_template("member.html", form=form, price=price, year=year)
 
        return render_pdf(HTML(string=html))
 
    return render_template("index.html", form=form)
0 comments (0 inline, 0 general)