From 367975f5a04b5c73c00cf4d4ffe7f52b9e838aeb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Szenes=20M=C3=A1rton=20Mikl=C3=B3s?=
 <szenesmarton@sch.bme.hu>
Date: Thu, 15 May 2025 01:22:28 +0200
Subject: [PATCH] Config.py reqork, minor fX-es

---
 app/app.py                 |  1 +
 app/authsch.py             | 17 ++++++++++++
 app/config.py              | 50 +--------------------------------
 app/models.py              | 57 +++++++++++++++++++++++++++++++++++---
 app/routes.py              |  6 ++--
 app/templates/history.html |  4 ++-
 app/user_requests.py       |  4 +--
 7 files changed, 80 insertions(+), 59 deletions(-)

diff --git a/app/app.py b/app/app.py
index ab29977..e6d3376 100644
--- a/app/app.py
+++ b/app/app.py
@@ -104,6 +104,7 @@ app.register_blueprint(users, url_prefix= API_PREFIX + users.url_prefix)
 app.register_blueprint(items, url_prefix= API_PREFIX + items.url_prefix) 
 app.register_blueprint(transactions, url_prefix= API_PREFIX + transactions.url_prefix) 
 
+from .models import BECSKASSZA_BOT, DEFAULT_ICON, TOPUP_ICON, TOPUP_ITEM, BUY_ITEM
 
 # === Adatbázis inizializálása ===
 with app.app_context():  # Kontextus beállítása
diff --git a/app/authsch.py b/app/authsch.py
index f42a200..2802f11 100644
--- a/app/authsch.py
+++ b/app/authsch.py
@@ -34,6 +34,23 @@ ALLOWED_ACCESS_DIRECTORY_GROUPS = [KSZK_MEMBER, KSZK_ROOKIES]
 # Endpoint handeler blueprint létrehozása
 auth_requests = Blueprint('auth', __name__)
 
+# AuthSCH hitelesítéshez szükséges környezeti változók ellenőrzése
+def check_authsch_env_vars():
+    """
+    Ellenőrzi, hogy az AuthSCH hitelesítéshez szükséges környezeti változók meg vannak-e adva.
+    Ha nincsenek megadva, akkor hibát dob.
+    """
+    if AUTH_SCH_CLIENT_ID == '' or AUTH_SCH_CLIENT_SECRET == '':
+        raise ValueError("Nincsenek megadva az AuthSCH autentikációhoz szükséges környezeti változók!")
+    if AUTH_SCH_REDIRECT_URI == '':
+        raise ValueError("Nincsen megadva az AuthSCH redirect URI környezeti változó!")
+
+# AuthSCH hitelesítéshez szükséges környezeti változók ellenőrzése
+try:
+    check_authsch_env_vars()
+except ValueError as e:
+    print(f"Error: AuthSCH környezeti változók ellenőrzésekor: {e}")
+
 
 # Bejelentkezési kérés átirányítás AuthSCH-ra
 @auth_requests.route('/login')
diff --git a/app/config.py b/app/config.py
index 2401e2f..92bfb31 100644
--- a/app/config.py
+++ b/app/config.py
@@ -1,6 +1,5 @@
 # === Konstansok ===
 import os
-from app.models import *
 from dotenv import load_dotenv
 from enum import Enum
 
@@ -49,54 +48,7 @@ USER_CREDIT = 0 #5_000
 ADMIN_CREDIT = 0 #15_000
 TRANSACTION_AMOUNT_LIMIT = 100_000
 DEFAULT_UNIT = 'db' # Az alapvető mértékenysége a terméknek
+DEFAULT_ICON_ID = 1
 
 # Ez az ID szám alatt nem lesznek kilistázva a dolgok
 NON_DISPLAY_BELLOW_ID = 0
-
-# Becskassza dummy Felhasználó
-
-BECSKASSZA_BOT = User(
-    uuid='B3C5K4SS24-B0T-M452T3R',
-    name='BecskasszaBot',
-    balance=0,
-    credit=0,
-    role=Roles.Bot.value
-)
-
-# Pénz Feltöltés ikon
-TOPUP_ICON_URL = 'imgs/kszkoin.svg'
-TOPUP_ICON = Icon (
-    id=0,
-    name='Feltöltés',
-    url=TOPUP_ICON_URL,
-    data=open(DEFAULT_STATIC_FOLDER + TOPUP_ICON_URL, "rb").read()
-)
-
-# Alap ikon a termékekhez ha nem adnak meg ikont
-DEFAULT_ICON_URL = 'imgs/drink.png'
-DEFAULT_ICON = Icon (
-    id=1,
-    name='Alap ikon',
-    url=DEFAULT_ICON_URL,
-    data=open(DEFAULT_STATIC_FOLDER + DEFAULT_ICON_URL, "rb").read()
-)
-
-# Feltöltés termék
-TOPUP_ITEM = Item (
-    id=0,
-    name='Feltöltés',
-    price=1,
-    unit='',
-    icon_id=TOPUP_ICON.id,
-    stock=ItemStates.INACTIVE.value
-)
-
-# Ha törlődnik egy termék, akkor minden ahhoz kapcsolódó tranzakció ehhez a default vásárlás termékre fog átállni
-BUY_ITEM = Item (
-    id=-1,
-    name='Vásárlás',
-    price=1,
-    unit='',
-    icon_id=DEFAULT_ICON.id,
-    stock=ItemStates.INACTIVE.value
-)
\ No newline at end of file
diff --git a/app/models.py b/app/models.py
index c91e4b4..c9d8700 100644
--- a/app/models.py
+++ b/app/models.py
@@ -3,7 +3,7 @@ from flask_login import UserMixin
 from sqlalchemy.sql import func
 
 from .database import db
-from .config import *
+from .config import DEFAULT_ICON_ID, DEFAULT_STATIC_FOLDER, USER_CREDIT, ItemStates, Roles
 
 # Ikon osztály
 class Icon(db.Model):
@@ -33,8 +33,8 @@ class Item(db.Model):
     id = db.Column(db.Integer, primary_key=True) # Automatikusan generált id
     name = db.Column(db.String(150), nullable=False) # Termék neve
     price = db.Column(db.Integer, nullable=False) # Termék ára
-    unit = db.Column(db.String(10), nullable=False, default=DEFAULT_UNIT) # Termék mértékegysége
-    stock = db.Column(db.Integer, default=ItemStates.SOLD_OUT) # Termék készlete (alapból nincs készleten)
+    unit = db.Column(db.String(10), nullable=False) # Termék mértékegysége
+    stock = db.Column(db.Integer, default=ItemStates.SOLD_OUT.value) # Termék készlete (alapból nincs készleten)
     icon_id = db.Column(db.Integer, db.ForeignKey('icons.id'), default=DEFAULT_ICON_ID) # Termék ikon-ra hivatkozó id-ja
     # Kapcsolt mező
     icon = db.relationship('Icon') # Referencia az ikonra (Adatbázisban nem jelenik meg)
@@ -113,4 +113,53 @@ class Transaction(db.Model):
             "item_name": self.item.name,
             "amount": self.amount,
             "quantity": self.quantity
-        }
\ No newline at end of file
+        }
+    
+# === Alap objektumok ===
+TOPUP_ICON_URL = 'imgs/kszkoin.svg'
+DEFAULT_ICON_URL = 'imgs/drink.png'
+
+# Becskassza dummy Felhasználó
+BECSKASSZA_BOT = User(
+    uuid='B3C5K4SS24-B0T-M452T3R',
+    name='BecskasszaBot',
+    balance=0,
+    credit=0,
+    role=Roles.Bot.value
+)
+
+# Pénz Feltöltés ikon
+TOPUP_ICON = Icon (
+    id=0,
+    name='Feltöltés',
+    url=TOPUP_ICON_URL,
+    data=open(DEFAULT_STATIC_FOLDER + TOPUP_ICON_URL, "rb").read()
+)
+
+# Alap ikon a termékekhez ha nem adnak meg ikont
+DEFAULT_ICON = Icon (
+    id=1,
+    name='Alap ikon',
+    url=DEFAULT_ICON_URL,
+    data=open(DEFAULT_STATIC_FOLDER + DEFAULT_ICON_URL, "rb").read()
+)
+
+# Feltöltés termék
+TOPUP_ITEM = Item (
+    id=0,
+    name='Feltöltés',
+    price=1,
+    unit='',
+    icon_id=TOPUP_ICON.id,
+    stock=ItemStates.INACTIVE.value
+)
+
+# Ha törlődnik egy termék, akkor minden ahhoz kapcsolódó tranzakció ehhez a default vásárlás termékre fog átállni
+BUY_ITEM = Item (
+    id=-1,
+    name='Vásárlás',
+    price=1,
+    unit='',
+    icon_id=DEFAULT_ICON.id,
+    stock=ItemStates.INACTIVE.value
+)
\ No newline at end of file
diff --git a/app/routes.py b/app/routes.py
index 0ead1ce..573c82e 100644
--- a/app/routes.py
+++ b/app/routes.py
@@ -10,7 +10,7 @@ from sqlalchemy.orm import aliased
 
 from .token import *
 
-from .models import Icon, User, Item, Transaction
+from .models import BECSKASSZA_BOT, Icon, User, Item, Transaction
 from .role import *
 from .database import db
 from .config import *
@@ -132,7 +132,7 @@ def admin():
       - jwtCookieAuth: []
     """
     current_user = get_current_user()
-    user_list = User.query.filter(User.uuid != BOT_USER_UUID).all()
+    user_list = User.query.filter(User.uuid != BECSKASSZA_BOT.uuid).all()
     
     users = user_list
     count_users = len(users)
@@ -210,7 +210,7 @@ def users():
     # A keresett felhasználók nevének kiolvasása a kérésből
     search_field = request.args.get('search-field', '').lower()
 
-    users = User.query.filter(User.uuid != BOT_USER_UUID)
+    users = User.query.filter(User.uuid != BECSKASSZA_BOT.uuid)
     users_results = [u for u in users if search_field in u.name.lower()]
     # A keresett felhasználók rendezése név szerint
     users_ordered = sorted(users_results if search_field else users,  key=lambda u: u.name)
diff --git a/app/templates/history.html b/app/templates/history.html
index 0e75f09..4f4584f 100644
--- a/app/templates/history.html
+++ b/app/templates/history.html
@@ -29,7 +29,9 @@
                             <div class="d-block ms-2 text-start">
                                 <h4>{{ transaction.item.name }}</h4>
                                 {% if transaction.to_user_uuid != transaction.by_user_uuid %} 
-                                <span class="small">(by: {{ transaction.by_user.name }})</span> <br> {% endif %}
+                                <span class="small"> -> {{ transaction.by_user.name }} </span> <br>
+                                {% endif %}
+                                <span class="small"> Note: {{ transaction.note }}</span> <br> 
                                 <span>Összeg: {{ transaction.amount }} JMF</span> <br>
                                 <span>Időbélyeg: {{ transaction.date.strftime('%Y.%m.%d. %H:%M') }}</span>
                             </div>
diff --git a/app/user_requests.py b/app/user_requests.py
index 2eae1cf..07e7d94 100644
--- a/app/user_requests.py
+++ b/app/user_requests.py
@@ -6,7 +6,7 @@ from flask import Blueprint, request, jsonify, Response, redirect, url_for
 from .functions import validate_json_fields
 from .token import get_current_user, token_required
 from .database import db
-from .models import User, Item, Transaction
+from .models import TOPUP_ITEM, User, Item, Transaction
 from .config import *
 
 USER_DOES_NOT_EXISTS_MESSAGE = 'Nem létezik ilyen felhasználó!'
@@ -41,7 +41,7 @@ def topup_to_user(selected_user_uuid, amount):
         topup_transaction = Transaction(
             by_user_uuid = admin_user.uuid,
             to_user_uuid = selected_user_uuid,
-            item_id = TOPUP_ITEM_ID,
+            item_id = TOPUP_ITEM.id,
             amount = amount,
             quantity = 1
         ) # quantity=1 (default)
-- 
GitLab