diff --git a/ennstatus/root/forms.py b/ennstatus/root/forms.py --- a/ennstatus/root/forms.py +++ b/ennstatus/root/forms.py @@ -1,6 +1,6 @@ from flask_wtf import Form -from wtforms import SelectField -from wtforms.validators import DataRequired +from wtforms import SelectField, StringField, RadioField, BooleanField, SubmitField +from wtforms.validators import DataRequired, InputRequired, Email, Optional COUNTRIES = [ @@ -17,3 +17,50 @@ class BPMForm(Form): country = SelectField('Country', validators=[DataRequired()], choices=COUNTRIES) + + +class MembershipForm(Form): + + username = StringField('Username*', + validators=[ + InputRequired('This field is required!')] + ) + email = StringField('E-Mail*', + validators=[ + InputRequired('This field is required!'), + Email() + ] + ) + firstname = StringField('First Name', + validators=[Optional()], + ) + surname = StringField('Surname', + validators=[Optional()], + ) + street = StringField('Nr., Street', + validators=[Optional()], + ) + zip = StringField('ZIP-Code', + validators=[Optional()], + ) + city = StringField('City/Town', + validators=[Optional()], + ) + country = StringField('Country', + validators=[Optional()], + ) + gpg = StringField('GPG-ID', + validators=[Optional()], + ) + + membership = RadioField('Membership Plan*', + validators=[DataRequired()], + choices=[ + ('regular', 'Regular membership (120€/year)'), + ('student', 'Student memnbership (60€/year)'), + ('starving', 'Starving Hacker - Get in touch with info@enn.lu'), + ] + ) + + c3l = BooleanField('Include Chaos Computer Club Lëtzebuerg Membership¹') + submit = SubmitField('Become a member') diff --git a/ennstatus/root/views.py b/ennstatus/root/views.py --- a/ennstatus/root/views.py +++ b/ennstatus/root/views.py @@ -1,7 +1,7 @@ from flask import (Blueprint, render_template, current_app, request, redirect, url_for) -from ennstatus.root.forms import BPMForm +from ennstatus.root.forms import BPMForm, MembershipForm from ennstatus.root.constants import BPM_ADDRESSES root_page = Blueprint('root', __name__) @@ -37,6 +37,22 @@ def member(): return render_template('root/member.html') +@root_page.route('/membership', methods=('GET', 'POST')) +def membership(): + + current_app.logger.info('Handling membership') + form = MembershipForm() + + if request.method == 'POST': + current_app.logger.debug('Validating form') + if form.validate_on_submit(): + pass + else: + pass + + return render_template('root/membership.html', form=form) + + @root_page.route('/contact', methods=('GET', 'POST')) def contact(): diff --git a/ennstatus/templates/root/membership.html b/ennstatus/templates/root/membership.html new file mode 100644 --- /dev/null +++ b/ennstatus/templates/root/membership.html @@ -0,0 +1,15 @@ +{% extends 'base.html' %} + +{% import 'bootstrap/wtf.html' as wtf %} + +{% set title = 'Membership' %} + +{% block content %} +
+

Register as member

+ {{ wtf.quick_form(form, form_type='horizontal', button_map={'submit': 'primary'}) }} +

Field marked with * are required!

+

¹: If you have decided for the double membership, the membership fees are 150€/year for the regular + membership and 70€/year for the student membership.

+
+{% endblock %}