From 46a74320d98e88b8c8e807b27f7c17e479b42ef7 Mon Sep 17 00:00:00 2001 From: Arne Baeumler Date: Sun, 6 Jun 2021 13:54:25 +0200 Subject: [PATCH] add db backend --- app.py | 53 +++--- homeschooling.db | Bin 0 -> 12288 bytes homeschooling.sql | 348 ++++++++++++++++++++++++++++++++++++ templates/arbeitsblatt.html | 2 +- templates/generator.html | 34 ++-- 5 files changed, 385 insertions(+), 52 deletions(-) create mode 100644 homeschooling.db create mode 100644 homeschooling.sql diff --git a/app.py b/app.py index 44f546e..73d40cc 100644 --- a/app.py +++ b/app.py @@ -6,33 +6,24 @@ import magic import random import string -rechenreihen = { - "1multi": [ "1 · 1", "2 · 1", "3 · 1", "4 · 1", "5 · 1", "6 · 1", "7 · 1", "8 · 1", "9 · 1", "10 · 1", "1 · 2", "1 · 3", "1 · 4", "1 · 5", "1 · 6", "1 · 7", "1 · 8", "1 · 9", "1 · 10" ], - "2multi": [ "1 · 2", "2 · 2", "3 · 2", "4 · 2", "5 · 2", "6 · 2", "7 · 2", "8 · 2", "9 · 2", "10 · 2", "2 · 1", "2 · 3", "2 · 4", "2 · 5", "2 · 6", "2 · 7", "2 · 8", "2 · 9", "2 · 10" ], - "3multi": [ "1 · 3", "2 · 3", "3 · 3", "4 · 3", "5 · 3", "6 · 3", "7 · 3", "8 · 3", "9 · 3", "10 · 3", "3 · 1", "3 · 2", "3 · 4", "3 · 5", "3 · 6", "3 · 7", "3 · 8", "3 · 9", "3 · 10" ], - "4multi": [ "1 · 4", "2 · 4", "3 · 4", "4 · 4", "5 · 4", "6 · 4", "7 · 4", "8 · 4", "9 · 4", "10 · 4", "4 · 1", "4 · 2", "4 · 3", "4 · 5", "4 · 6", "4 · 7", "4 · 8", "4 · 9", "4 · 10" ], - "5multi": [ "1 · 5", "2 · 5", "3 · 5", "4 · 5", "5 · 5", "6 · 5", "7 · 5", "8 · 5", "9 · 5", "10 · 5", "5 · 1", "5 · 2", "5 · 3", "5 · 4", "5 · 6", "5 · 7", "5 · 8", "5 · 9", "5 · 10" ], - "6multi": [ "1 · 6", "2 · 6", "3 · 6", "4 · 6", "5 · 6", "6 · 6", "7 · 6", "8 · 6", "9 · 6", "10 · 6", "6 · 1", "6 · 2", "6 · 3", "6 · 4", "6 · 5", "6 · 7", "6 · 8", "6 · 9", "6 · 10" ], - "7multi": [ "1 · 7", "2 · 7", "3 · 7", "4 · 7", "5 · 7", "6 · 7", "7 · 7", "8 · 7", "9 · 7", "10 · 7", "7 · 1", "7 · 2", "7 · 3", "7 · 4", "7 · 5", "7 · 6", "7 · 8", "7 · 9", "7 · 10" ], - "8multi": [ "1 · 8", "2 · 8", "3 · 8", "4 · 8", "5 · 8", "6 · 8", "7 · 8", "8 · 8", "9 · 8", "10 · 8", "8 · 1", "8 · 2", "8 · 3", "8 · 4", "8 · 5", "8 · 6", "8 · 7", "8 · 9", "8 · 10" ], - "9multi": [ "1 · 9", "2 · 9", "3 · 9", "4 · 9", "5 · 9", "6 · 9", "7 · 9", "8 · 9", "9 · 9", "10 · 9", "9 · 1", "9 · 2", "9 · 3", "9 · 4", "9 · 5", "9 · 6", "9 · 7", "9 · 8", "9 · 10" ], - "10multi": [ "1 · 10", "2 · 10", "3 · 10", "4 · 10", "5 · 10", "6 · 10", "7 · 10", "8 · 10", "9 · 10", "10 · 10", "10 · 1", "10 · 2", "10 · 3", "10 · 4", "10 · 5", "10 · 6", "10 · 7", "10 · 8", "10 · 9" ], - "Qmulti": [ "1 · 1", "2 · 2", "3 · 3", "4 · 4", "5 · 5", "6 · 6", "7 · 7", "8 · 8", "9 · 9", "10 · 10" ], - "1div": [ "1 : 1", "2 : 1", "3 : 1", "4 : 1", "5 : 1", "6 : 1", "7 : 1", "8 : 1", "9 : 1", "10 : 1"], - "2div": [ "2 : 2", "4 : 2", "6 : 2", "8 : 2", "10 : 2", "12 : 2", "14 : 2", "16 : 2", "18 : 2", "20 : 2" ], - "3div": [ "3 : 3", "6 : 3", "9 : 3", "12 : 3", "15 : 3", "18 : 3", "21 : 3", "24 : 3", "27 : 3", "30 : 3" ], - "4div": [ "4 : 4", "8 : 4", "12 : 4", "16 : 4", "20 : 4", "24 : 4", "28 : 4", "32 : 4", "36 : 4", "40 : 4" ], - "5div": [ "5 : 5", "10 : 5", "15 : 5", "20 : 5", "25 : 5", "30 : 5", "35 : 5", "40 : 5", "45 : 5", "50 : 5" ], - "6div": [ "6 : 6", "12 : 6", "18 : 6", "24 : 6", "30 : 6", "36 : 6", "42 : 6", "48 : 6", "54 : 6", "60 : 6" ], - "7div": [ "7 : 7", "14 : 7", "21 : 7", "28 : 7", "35 : 7", "42 : 7", "49 : 7", "56 : 7", "63 : 7", "70 : 7" ], - "8div": [ "8 : 8", "16 : 8", "24 : 8", "32 : 8", "40 : 8", "48 : 8", "56 : 8", "64 : 8", "72 : 8", "80 : 8" ], - "9div": [ "9 : 9", "18 : 9", "27 : 9", "36 : 9", "45 : 9", "54 : 9", "63 : 9", "72 : 9", "81 : 9", "90 : 9" ], - "10div": [ "10 : 10", "20 : 10", "30 : 10", "40 : 10", "50 : 10", "60 : 10", "70 : 10", "80 : 10", "90 : 10", "100 : 10" ], -} - app = Flask(__name__) app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1) app.secret_key = 'eng5iikeiwah3lae4idoo0woh4eiy6Th' +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///homeschooling.db' +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +db = SQLAlchemy(app) + +class rt_rechenreihen(db.Model): + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + name = db.Column(db.String(200), nullable=False) + typ = db.Column(db.String(1), nullable=False) + +class rt_reihe(db.Model): + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + set = db.Column(db.Integer, db.ForeignKey('rt_rechenreihen.id'), nullable=False) + a = db.Column(db.Integer, nullable=False) + b = db.Column(db.Integer, nullable=False) + t = db.relationship("rt_rechenreihen") @app.context_processor def get_date(): @@ -45,8 +36,8 @@ def index(): alle = [] zufall = [] for r in request.form.getlist('rechenreihen'): - alle.extend(rechenreihen[r]) - + alle.extend(rt_reihe.query.filter_by(set = r).all()) + if request.form.get('anzahl'): count = (int(request.form.get('anzahl')) + 1) else: @@ -55,10 +46,16 @@ def index(): for i in range(1,count): if len(alle) == 0: break - zufall.append(alle.pop(random.randint(0,len(alle)-1))) + term = alle.pop(random.randint(0,len(alle)-1)) + term.c = '' + if request.form.get('gemischteAufgaben'): + maxValue = eval(str(term.a) + term.t.typ + str(term.b)) + term.c += ' + ' if random.randint(0,1) else ' - ' + term.c += str(random.randint(1,maxValue)) + zufall.append(term) return render_template('arbeitsblatt.html',aufgaben=zufall) else: - return render_template('generator.html') + return render_template('generator.html', reihen=rt_rechenreihen) if __name__ == "__main__": diff --git a/homeschooling.db b/homeschooling.db new file mode 100644 index 0000000000000000000000000000000000000000..0f6b21afed50f2bdee3e03264025be96b8e617dc GIT binary patch literal 12288 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 KWuT!mH1|*a6 {% for a in aufgaben %} -
{{ a }} =
+
{{ a.a }} {% if a.t.typ == '*' %}·{% elif a.t.typ == '/'%}:{% else %}{{ a.t.typ }}{% endif %} {{ a.b }}{{ a.c }} =
{% if (loop.index % 100 == 0) and (not loop.last) %}
diff --git a/templates/generator.html b/templates/generator.html index 058a67f..a4b6b90 100644 --- a/templates/generator.html +++ b/templates/generator.html @@ -7,37 +7,25 @@
- Multiplikation (·) - 1er Reihe
- 2er Reihe
- 3er Reihe
- 4er Reihe
- 5er Reihe
- 6er Reihe
- 7er Reihe
- 8er Reihe
- 9er Reihe
- 10er Reihe
- Quadratzahlen
+ Multiplikation (a · b = x) + {% for r in reihen.query.filter_by(typ = '*').order_by(reihen.id).all() %} + {{ r.name }}
+ {% endfor %}
- Division (:) - 1er Reihe
- 2er Reihe
- 3er Reihe
- 4er Reihe
- 5er Reihe
- 6er Reihe
- 7er Reihe
- 8er Reihe
- 9er Reihe
- 10er Reihe
+ Division (a : b = x) + {% for r in reihen.query.filter_by(typ = '/').order_by(reihen.id).all() %} + {{ r.name }}
+ {% endfor %}
+ + +