7 Commits
0.0.3 ... 0.0.8

Author SHA1 Message Date
5948cf3840 postgres, fix 3
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 14:48:31 +01:00
63dbfcc89f postgres, fix 2 2024-01-30 14:47:36 +01:00
439f6085e7 postgres 2024-01-30 14:47:07 +01:00
21479212f8 fix 2
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 14:18:52 +01:00
5d8997d45e fix 2024-01-30 14:16:59 +01:00
6e6effb1bc fix
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 14:07:42 +01:00
00d48b4de1 roles
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 14:00:41 +01:00
3 changed files with 48 additions and 91 deletions

View File

@ -4,6 +4,7 @@ from flask_oidc import OpenIDConnect
from werkzeug.middleware.proxy_fix import ProxyFix from werkzeug.middleware.proxy_fix import ProxyFix
import os import os
import json import json
import psycopg2
app = Flask(__name__) app = Flask(__name__)
app.config.update({ app.config.update({
@ -19,61 +20,17 @@ app.config.update({
oidc = OpenIDConnect(app) oidc = OpenIDConnect(app)
# Datenbankverbindung konfigurieren
def get_db_connection():
conn = sqlite3.connect('nutrition.db') # 'nutrition.db' ist der Name der Datenbankdatei
conn.row_factory = sqlite3.Row # Ermöglicht den Zugriff auf Daten durch Spaltennamen
return conn
#def init_db():
# conn = get_db_connection()
# cursor = conn.cursor()
#
# # Erstellen der Tabelle
# cursor.execute('''
# CREATE TABLE IF NOT EXISTS nutrition_table (
# id INTEGER PRIMARY KEY,
# name TEXT NOT NULL,
# kcal REAL,
# EW REAL,
# Fett REAL,
# KH REAL,
# BST REAL,
# CA REAL
# )
# ''')
#
# # Testdaten einfügen
# test_data = [
# ('Apfel', 52, 0.3, 0.2, 14, 0.2, 6),
# ('Banane', 89, 1.1, 0.3, 23, 0.3, 5),
# ('Karotte', 41, 0.9, 0.2, 10, 0.2, 3),
# ('Tomate', 18, 0.9, 0.2, 3.9, 0.2, 4),
# ('Brokkoli', 34, 2.8, 0.4, 6.6, 0.4, 2),
# ('Spinat', 23, 2.9, 0.4, 3.6, 0.4, 99),
# ('Kartoffel', 77, 2, 0.1, 17, 0.1, 12),
# ('Huhn', 239, 27, 14, 0, 0, 2),
# ('Lachs', 208, 20, 13, 0, 0, 1),
# ('Ei', 155, 13, 11, 1.1, 1, 1)
# ]
#
# cursor.executemany('INSERT INTO nutrition_table (name, kcal, EW, Fett, KH, BST, CA) VALUES (?, ?, ?, ?, ?, ?, ?)', test_data)
#
# conn.commit()
# conn.close()
def calculate_nutrition(food, weight): def calculate_nutrition(food, weight):
conn = get_db_connection() try:
cursor = conn.cursor() conn = psycopg2.connect()
with conn.cursor() as cursor:
# Abfrage der Nährwertdaten aus der Datenbank # Abfrage der Nährwertdaten aus der Datenbank
cursor.execute('SELECT kcal, EW, Fett, KH, BST, CA FROM nutrition_table WHERE name = ?', (food,)) cursor.execute('SELECT kcal, EW, Fett, KH, BST, CA FROM nutrition_table WHERE name = ?', (food,))
result = cursor.fetchone() result = cursor.fetchone()
conn.close()
if result: if result:
# Runden und Berechnen der Nährwerte basierend auf dem Gewicht # Runden und Berechnen der Nährwerte basierend auf dem Gewicht
@ -89,12 +46,14 @@ def calculate_nutrition(food, weight):
return nutrition_values return nutrition_values
else: else:
return None return None
finally:
if conn:
conn.close()
# Index-Route # Index-Route
@app.route('/') @app.route('/')
@oidc.require_login @oidc.require_login
@oidc.require_keycloak_role('user')
def index(): def index():
return render_template('index.html') return render_template('index.html')
@ -102,24 +61,22 @@ def index():
@app.route('/get_products') @app.route('/get_products')
@oidc.require_login @oidc.require_login
@oidc.require_keycloak_role('user')
def get_products(): def get_products():
conn = get_db_connection() try:
cursor = conn.cursor() conn = psycopg2.connect()
with conn.cursor() as cursor:
cursor.execute('SELECT name FROM nutrition_table') cursor.execute('SELECT name FROM nutrition_table')
products = cursor.fetchall() products = cursor.fetchall()
conn.close()
print("ter") print("ter")
return {'products': [product[0] for product in products]} return {'products': [product[0] for product in products]}
finally:
if conn:
conn.close()
# Route zum Hinzufügen und Berechnen von Lebensmitteln # Route zum Hinzufügen und Berechnen von Lebensmitteln
@app.route('/add_lm', methods=['GET']) @app.route('/add_lm', methods=['GET'])
@oidc.require_login @oidc.require_login
@oidc.require_keycloak_role('user')
def add_lm(): def add_lm():
food = request.args.get('food') food = request.args.get('food')
weight = float(request.args.get('weight')) weight = float(request.args.get('weight'))
@ -155,19 +112,20 @@ def add_nutrition():
print("test") print("test")
# Verbindung zur Datenbank herstellen und Daten einfügen # Verbindung zur Datenbank herstellen und Daten einfügen
conn = get_db_connection() try:
cursor = conn.cursor() conn = psycopg2.connect()
with conn.cursor() as cursor:
cursor.execute("INSERT INTO nutrition_table (name, kcal, ew, fett, kh, bst, ca) VALUES (?, ?, ?, ?, ?, ?, ?)", cursor.execute("INSERT INTO nutrition_table (name, kcal, ew, fett, kh, bst, ca) VALUES (?, ?, ?, ?, ?, ?, ?)",
(food, kcal, ew, fett, kh, bst, ca)) (food, kcal, ew, fett, kh, bst, ca))
conn.commit()
conn.close()
return redirect(url_for('nutrition')) return redirect(url_for('nutrition'))
finally:
if conn:
conn.close()
@app.route('/nutrition') @app.route('/nutrition')
@oidc.require_login @oidc.require_login
@oidc.require_keycloak_role('user')
def nutrition(): def nutrition():
return render_template('nutrition.html') return render_template('nutrition.html')

View File

@ -1,14 +1,13 @@
import csv import csv
import sqlite3 import psycopg2
# Pfad zur Ihrer CSV-Datei # Pfad zur Ihrer CSV-Datei
csv_file_path = 'nu.csv' csv_file_path = 'nu.csv'
# Pfad zur Ihrer SQLite-Datenbank # Pfad zur Ihrer SQLite-Datenbank
sqlite_db_path = 'nutrition.db'
# Verbindung zur SQLite-Datenbank herstellen # Verbindung zur SQLite-Datenbank herstellen
conn = sqlite3.connect(sqlite_db_path) conn = psycopg2.connect()
cursor = conn.cursor() cursor = conn.cursor()
# Erstellen der Tabelle (falls noch nicht vorhanden) # Erstellen der Tabelle (falls noch nicht vorhanden)
@ -29,8 +28,9 @@ with open(csv_file_path, newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile) reader = csv.reader(csvfile)
next(reader, None) # Überspringen der Kopfzeile next(reader, None) # Überspringen der Kopfzeile
for row in reader: for row in reader:
cursor.execute('INSERT INTO nutrition_table (name, kcal, EW, Fett, KH, BST, Ca) VALUES (?, ?, ?, ?, ?, ?, ?)', row) cursor.execute('INSERT INTO nutrition_table (name, kcal, EW, Fett, KH, BST, Ca) VALUES (%s, %s, %s, %s, %s, %s, %s)', row)
# Änderungen speichern und Verbindung schließen # Änderungen speichern und Verbindung schließen
conn.commit() conn.commit()
conn.close() conn.close()

View File

@ -2,4 +2,3 @@
gunicorn 'Run:app' --bind 0.0.0.0:8080 --log-level=info --workers=4 gunicorn 'Run:app' --bind 0.0.0.0:8080 --log-level=info --workers=4