Nouvelles fonctionnalités : - Système de modération Twitch complet (bans, timeouts, avertissements) - Filtre de liens intelligent pour Twitch avec whitelist/blacklist - Notifications d'événements Twitch (follows, subs, raids, etc.) - Système Freeloot Discord avec flux RSS dédié - Salons automatiques Discord (création/suppression dynamique) - Authentification utilisateur pour l'interface web (login/register) - Gestion des utilisateurs et permissions - Interface de modération Twitch dans la webapp - Interface de gestion des événements Twitch - Configuration des paramètres utilisateur - Migration BDD pour les mots bannis Améliorations de l'interface : - Refonte complète des templates (configurations, commandes, humeurs, etc.) - Nouvelle page de settings utilisateur - Page de gestion des utilisateurs (admin) - Page d'erreur 403 personnalisée - Amélioration de la navigation et du design global - Intégration de nouvelles sections dans le menu principal Modifications techniques : - Ajout de nouveaux modèles en base de données - Extension des helpers database - Mise à jour des dépendances (requirements.txt) - Amélioration de la gestion des annonces Twitch - Refactorisation du code pour meilleure maintenabilité Co-authored-by: Cursor <cursoragent@cursor.com>
70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
from flask import render_template, request, redirect, url_for, flash
|
|
from webapp import webapp
|
|
from webapp.auth import require_page, can_write_page
|
|
from database import db
|
|
from database.models import Commande
|
|
|
|
@webapp.route("/commandes")
|
|
@require_page("commandes")
|
|
def commandes():
|
|
commandes_list = Commande.query.all()
|
|
return render_template("commandes.html", commandes=commandes_list, twitch_permissions=TWITCH_PERMISSIONS)
|
|
|
|
TWITCH_PERMISSIONS = {'viewer': 'Tous (viewers)', 'sub': 'Abonnés', 'vip': 'VIP', 'moderator': 'Modérateur'}
|
|
|
|
|
|
@webapp.route("/commandes/add", methods=['POST'])
|
|
@require_page("commandes")
|
|
def add_commande():
|
|
if not can_write_page("commandes"):
|
|
return render_template("403.html"), 403
|
|
trigger = request.form.get('trigger')
|
|
response = request.form.get('response')
|
|
discord_enable = request.form.get('discord_enable') != None
|
|
twitch_enable = request.form.get('twitch_enable') != None
|
|
twitch_permission = request.form.get('twitch_permission') or 'viewer'
|
|
if twitch_permission not in TWITCH_PERMISSIONS:
|
|
twitch_permission = 'viewer'
|
|
|
|
if trigger and response:
|
|
if not trigger.startswith('!'):
|
|
trigger = '!' + trigger
|
|
|
|
existing = Commande.query.filter_by(trigger=trigger).first()
|
|
if not existing:
|
|
commande = Commande(trigger=trigger, response=response, discord_enable=discord_enable, twitch_enable=twitch_enable, twitch_permission=twitch_permission)
|
|
db.session.add(commande)
|
|
db.session.commit()
|
|
|
|
return redirect(url_for('commandes'))
|
|
|
|
@webapp.route("/commandes/delete/<int:commande_id>")
|
|
@require_page("commandes")
|
|
def delete_commande(commande_id):
|
|
if not can_write_page("commandes"):
|
|
return render_template("403.html"), 403
|
|
commande = Commande.query.get_or_404(commande_id)
|
|
db.session.delete(commande)
|
|
db.session.commit()
|
|
return redirect(url_for('commandes'))
|
|
|
|
@webapp.route("/commandes/toggle-discord/<int:commande_id>")
|
|
@require_page("commandes")
|
|
def toggle_discord_commande(commande_id):
|
|
if not can_write_page("commandes"):
|
|
return render_template("403.html"), 403
|
|
commande = Commande.query.get_or_404(commande_id)
|
|
commande.discord_enable = not commande.discord_enable
|
|
db.session.commit()
|
|
return redirect(url_for('commandes'))
|
|
|
|
@webapp.route("/commandes/toggle-twitch/<int:commande_id>")
|
|
@require_page("commandes")
|
|
def toggle_twitch_commande(commande_id):
|
|
if not can_write_page("commandes"):
|
|
return render_template("403.html"), 403
|
|
commande = Commande.query.get_or_404(commande_id)
|
|
commande.twitch_enable = not commande.twitch_enable
|
|
db.session.commit()
|
|
return redirect(url_for('commandes'))
|