diff --git a/app/app.py b/app/app.py index ab2997748b2277bf5cf43e7d5f0565d9fbd3c8cd..e6d3376393732653addbd01b7e7b41951de6b033 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 f42a20078243e095cf0ded7880df4cf6dd232575..2802f11742744e62a76b7c6d757b31bf0a12260e 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 2401e2f1e2e240f66ec04ff26c44f0bf46e358f2..92bfb3122a9607dc4b18c7ba522bd4414bf25bf6 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 c91e4b41067d23867bff192cd9a0d528c25e6df5..c9d870020cb048e705d365fd18cf0614ac27cf94 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 0ead1ce3de5c79baa37e1f902a5f673996b45cd3..573c82e2e6f680cf97cd89d50b6b8d035f06032b 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 0e75f09ad73ba9cb843d40c293c47358f272c4b2..4f4584f125d7ed72cf4648aa0036cd662caef88e 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 2eae1cf361afa76efefc89491f3fdfbf467f0344..07e7d941844a2f11eb2c0049810d117bf9ab0503 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)