Files
rezept_finder/backend/app/services/session_settings.py
T
2026-06-09 23:10:17 +02:00

63 lines
1.7 KiB
Python

from ..models import db
from ..models.session import SessionSettings
FIRST_MATCH_MODE = "first_match"
FINAL_ROUND_MODE = "final_round"
MATCH_MODES = {FIRST_MATCH_MODE, FINAL_ROUND_MODE}
def get_required_likes(session):
participant_count = max(2, len(session.participants))
if not session.settings:
return participant_count
return max(2, min(session.settings.required_likes, participant_count))
def set_required_likes(session, required_likes):
participant_count = max(2, len(session.participants))
required_likes = max(2, min(int(required_likes), participant_count))
if not session.settings:
session.settings = SessionSettings(required_likes=required_likes)
db.session.add(session.settings)
else:
session.settings.required_likes = required_likes
return required_likes
def get_match_mode(session):
if not session.settings:
return FIRST_MATCH_MODE
return session.settings.match_mode if session.settings.match_mode in MATCH_MODES else FIRST_MATCH_MODE
def get_voting_round(session):
if not session.settings:
return 1
return max(1, session.settings.voting_round)
def ensure_settings(session):
if not session.settings:
session.settings = SessionSettings()
db.session.add(session.settings)
return session.settings
def set_match_mode(session, match_mode):
settings = ensure_settings(session)
settings.match_mode = match_mode if match_mode in MATCH_MODES else FIRST_MATCH_MODE
settings.voting_round = 1
return settings.match_mode
def set_voting_round(session, voting_round):
settings = ensure_settings(session)
settings.voting_round = max(1, int(voting_round))
return settings.voting_round