-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat!: Swap LeineLab e.V. specific implementation
in favor of FNorden e.V. specific implementation.
- Loading branch information
1 parent
e2b5058
commit fd97e0f
Showing
5 changed files
with
25 additions
and
83 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,9 @@ | ||
#!/usr/bin/python | ||
|
||
class Config(object): | ||
MAIL_SERVER = 'leineserver.leinelab.org' | ||
MAIL_PORT = 587 | ||
MAIL_USERNAME = 'vorstand@leinelab.org' | ||
MAIL_SERVER = 'server.wiemann.cc' | ||
MAIL_PORT = 25 | ||
MAIL_USERNAME = 'vorstand@fnorden.de' | ||
MAIL_PASSWORD = 'your_password' | ||
MAIL_USE_TLS = True | ||
MAIL_USE_SSL = False |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,13 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<title>LeineLab e.V. - Mitgliedsantrag</title> | ||
<title>FNorden e.V. - Mitgliedsantrag</title> | ||
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" | ||
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> | ||
<!-- HTMX --> | ||
<script src="https://unpkg.com/[email protected]"></script> | ||
<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
<link rel="icon" type="image/x-icon" href="{{ url_for('static', filename='leinelab0.png')}}"> | ||
<link rel="icon" type="image/x-icon" href="{{ url_for('static', filename='logo_mini_inverted.png')}}"> | ||
<style> | ||
body { | ||
padding: 20px; | ||
|
@@ -24,15 +24,14 @@ | |
<body style="display:flex; justify-content : center;"> | ||
<div style="max-width: 600px;"> | ||
<div style="text-align: center;"> | ||
<img src="{{ url_for('static', filename='leinelab0.png')}}" width="300" alt="LeineLab Logo - An den Glider aus Game of Life angelehntes L auf regenbogenfarbenem Hintergrund."> | ||
</div> | ||
<h1 style="margin-top: 30px;">LeineLab e.V. - Mitgliedsantrag</h1> | ||
<h1 style="margin-top: 30px;">FNorden e.V. - Mitgliedsantrag</h1> | ||
{% from "form.html" import render_field with context %} | ||
|
||
{% block content %} | ||
<form method="post" hx-indicator="#loading" hx-swap="outerHTML" id="{{form._prefix}}form" hx-post novalidate encoding="{{encoding}}"> | ||
|
||
<h3 style="padding-top:30px">Basisdaten</h3> | ||
<h3 style="padding-top:30px">Stammdaten</h3> | ||
|
||
{{ form.csrf_token }} | ||
|
||
|
@@ -58,29 +57,14 @@ <h3 style="padding-top:30px" id="beitrag" hx-post="" hx-trigger="input from:#x2 | |
<div class="alert alert-info" role="alert"> | ||
Sofern nicht anders vereinbart, werden die Mitgliedsbeiträge in einer jährlichen Sammelbuchung eingezogen. | ||
</div> | ||
<div id="ermaessigt-hinweis" hx-post="" hx-trigger="input from:#x2"> | ||
{% if request.form['x-ermaessigt'] %} | ||
<div class="alert alert-info" role="alert"> | ||
Hinweis: Falls du den angezeigten Beitrag aus finanziellen Gründen trotz Ermäßigung immer | ||
noch nicht aufbringen kannst, sprich uns als Vorstand gerne an. Wir haben | ||
nach der Beitragsordnung die Möglichkeit, weitere individuelle Vergünstigungen | ||
für Sonderfälle zu vergeben. | ||
</div> | ||
{% endif %} | ||
</div> | ||
|
||
<div id="mitgliedsart-outer"> | ||
{{ render_field(form.mitgliedsart, False) }} | ||
</div> | ||
|
||
<div id="mitgliedsart-dependent" hx-post="" hx-trigger="change from:#mitgliedsart-outer"> | ||
{% if request.form['mitgliedsart'] == "Fördermitgliedschaft (Kein Stimmrecht auf Mitgliederversammlungen, keine Werkstattnutzung, keine Schließberechtigung, beliebiger Beitrag)" %} | ||
{% if request.form['mitgliedsart'] == "Fördermitgliedschaft (Kein Stimmrecht auf Mitgliederversammlungen, beliebiger Beitrag)" %} | ||
{{ render_field(form.x.foerderbeitrag, False, False) }} | ||
{% else %} | ||
<div id="ermaessigt-werkstatt" hx-post="" hx-trigger="change"> | ||
{{ render_field(form.x.ermaessigt, False, False) }} | ||
{{ render_field(form.x.werkstatt, False, False) }} | ||
</div> | ||
{% endif %} | ||
</div> | ||
|
||
|
@@ -102,12 +86,8 @@ <h3 style="padding-top:30px">Zahlungsdaten</h3> | |
Hinweis: Ich kann innerhalb von acht Wochen, beginnend mit dem Belastungsdatum, die Erstattung des belasteten | ||
Betrags verlangen. Es gelten dabei die mit meinem Kreditinstitut vereinbarten Bedingungen. | ||
</div> | ||
<div class="alert alert-info" role="alert"> | ||
Die Behandlung von nicht eingelösten Lastschriften und die damit verbundenen Kosten werden in der Gebührenordnung des | ||
LeineLab e.V. geregelt. | ||
</div> | ||
<div class="alert alert-light" role="alert"> | ||
Gläuber-Identifikationsnummer des LeineLab e.V.: DE86MEM00002676494. | ||
Gläuber-Identifikationsnummer des FNorden e.V.: DE-FIXME-Aiyion. | ||
</div> | ||
|
||
<h3 style="padding-top:30px">Datenschutz</h3> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,19 +18,13 @@ def iban_validator(form, field): | |
parser = etree.HTMLParser(encoding="utf-8") | ||
|
||
class NormalesMitgliedForm(FlaskForm): | ||
ermaessigt = BooleanField("""Ermäßigter Beitrag %TAG% - Für Schüler*innen, Studierende, | ||
Auszubildende, Empfänger*innen | ||
von Sozial- oder Bürgergeld einschließlich Leistungen nach § 22 ohne | ||
Zuschläge oder nach § 24 des zweiten Sozialgesetzbuchs (SGB II) sowie | ||
Empfänger*innen von Ausbildungsförderung nach dem | ||
Bundesausbildungsförderungsgesetz (BAföG)""") | ||
werkstatt = BooleanField("Werkstattnutzung %TAG%") | ||
pass | ||
|
||
class SEPABase(FlaskForm): | ||
mitglied_is_inhabende = BooleanField("Mitglied ist kontoinhabende Person", default="checked") | ||
einwilligung = BooleanField("""Hiermit ermächtige ich den LeineLab e.V., wiederkehrende Zahlungen von | ||
einwilligung = BooleanField("""Hiermit ermächtige ich den FNorden e.V., wiederkehrende Zahlungen von | ||
meinem Konto mittels Lastschrift einzuziehen. Zugleich weise ich mein Kreditinstitut an, | ||
die vom LeineLab e.V. auf mein Konto gezogenen Lastschriften einzulösen. | ||
die vom FNorden e.V. auf mein Konto gezogenen Lastschriften einzulösen. | ||
""", [validators.InputRequired("Zustimmung ist erforderlich.")]) | ||
iban = StringField('IBAN', [iban_validator]) | ||
kreditinstitut = StringField('Kreditinstitut', [Length(min=3, message="Der Name des Kreditinstituts sollte mindestens 3 Zeichen haben.")]) | ||
|
@@ -49,7 +43,7 @@ class SEPAAbweichendeInhabende(SEPABase): | |
]) | ||
|
||
class FoerderMitgliedForm(FlaskForm): | ||
foerderbeitrag = DecimalRangeField("", default=10, render_kw={"min": 2.5, "step": 2.5, "max": 30}) | ||
foerderbeitrag = DecimalRangeField("", default=10, render_kw={"min": 5, "step": 2.5, "max": 30}) | ||
|
||
class BaseForm(FlaskForm): | ||
name = StringField('Name', validators=[ | ||
|
@@ -63,33 +57,22 @@ class BaseForm(FlaskForm): | |
validators.Length(min=6, message='Ein bisschen kurz für eine EMail-Adresse?'), | ||
validators.Email(message='Keine valide EMail-Adresse.') | ||
]) | ||
mitgliedsart = RadioField('Mitgliedsart', default="Normale Mitgliedschaft", choices=["Normale Mitgliedschaft", "Fördermitgliedschaft (Kein Stimmrecht auf Mitgliederversammlungen, keine Werkstattnutzung, keine Schließberechtigung, beliebiger Beitrag)"]) | ||
mitgliedsart = RadioField('Mitgliedsart', default="Normale Mitgliedschaft", choices=["Normale Mitgliedschaft", "Fördermitgliedschaft (Kein Stimmrecht auf Mitgliederversammlungen, beliebiger Beitrag)"]) | ||
|
||
datenschutz = BooleanField("""Ich stimme zu, dass meine Stammdaten im | ||
Rahmen der Datenschutzvereinbarung auf der Webseite des LeineLab e.V. verarbeitet | ||
Rahmen der Datenschutzvereinbarung auf der Webseite des FNorden e.V. verarbeitet | ||
werden.""", [InputRequired("Zustimmung ist erforderlich.")]) | ||
|
||
def calc_beitrag(ermaessigt, werkstatt, foerderbeitrag=None): | ||
def calc_beitrag(foerderbeitrag=None): | ||
if foerderbeitrag: | ||
return foerderbeitrag | ||
|
||
if ermaessigt: | ||
if werkstatt: | ||
return 10 | ||
else: | ||
return 2.5 | ||
else: | ||
if werkstatt: | ||
return 28 | ||
else: | ||
return 10 | ||
|
||
return 5.0 | ||
|
||
@app.route("/", methods=["GET", "POST"]) | ||
def home(): | ||
xCls = NormalesMitgliedForm | ||
|
||
if request.form.get('mitgliedsart') == "Fördermitgliedschaft (Kein Stimmrecht auf Mitgliederversammlungen, keine Werkstattnutzung, keine Schließberechtigung, beliebiger Beitrag)": | ||
if request.form.get('mitgliedsart') == "Fördermitgliedschaft (Kein Stimmrecht auf Mitgliederversammlungen, beliebiger Beitrag)": | ||
#form = BaseFormFoerderMitglied() | ||
xCls = FoerderMitgliedForm | ||
|
||
|
@@ -103,38 +86,20 @@ class MyForm(BaseForm): | |
|
||
form = MyForm() | ||
|
||
if xCls == NormalesMitgliedForm: | ||
ermaessigt = form.x.ermaessigt.data | ||
werkstatt = form.x.werkstatt.data | ||
|
||
tag = '' | ||
if not ermaessigt: | ||
tag = '<span class="badge rounded-pill bg-success">%.2f €</span>' % (calc_beitrag(True, werkstatt)-calc_beitrag(False, werkstatt)) | ||
|
||
form.x.ermaessigt.label.text = form.x.ermaessigt.label.text.replace("%TAG%", tag) | ||
|
||
tag = '' | ||
if not werkstatt: | ||
tag = '<span class="badge rounded-pill bg-info text-dark">%+.2f €</span>' % (calc_beitrag(ermaessigt, True)-calc_beitrag(ermaessigt, False)) | ||
|
||
form.x.werkstatt.label.text = form.x.werkstatt.label.text.replace("%TAG%", tag) | ||
|
||
if sepaCls == SEPASameInhabende: | ||
form.sepa.kontoinhabende.process_data(form.data['name']) | ||
form.sepa.kontoinhabende_addresse.process_data(form.data['full_address']) | ||
|
||
|
||
foerderbeitrag = None | ||
werkstatt = request.form.get("x-werkstatt") | ||
ermaessigt = request.form.get("x-ermaessigt") | ||
|
||
if request.form.get("mitgliedsart") == "Fördermitgliedschaft (Kein Stimmrecht auf Mitgliederversammlungen, keine Werkstattnutzung, keine Schließberechtigung, beliebiger Beitrag)": | ||
if request.form.get("mitgliedsart") == "Fördermitgliedschaft (Kein Stimmrecht auf Mitgliederversammlungen, beliebiger Beitrag)": | ||
foerderbeitrag = request.form.get("x-foerderbeitrag", 10) | ||
|
||
beitrag = calc_beitrag(ermaessigt, werkstatt, foerderbeitrag) | ||
beitrag = calc_beitrag(foerderbeitrag) | ||
|
||
if form.validate_on_submit() and "HX-Target" in request.headers and request.headers['HX-Target'] == 'form': | ||
msg = Message(subject=f'Neue Mitgliedsanfrage von {form.data["name"]}!', sender='[email protected]', recipients=['[email protected]']) | ||
msg = Message(subject=f'Neue Mitgliedsanfrage von {form.data["name"]}!', sender='[email protected]', recipients=['[email protected]']) | ||
msg.body = render_template("mail.txt", form=form, beitrag=beitrag) | ||
print(msg) | ||
mail.send(msg) | ||
|