Edition des pojos

This commit is contained in:
Kepka Ludovic
2025-08-29 13:44:00 +02:00
parent fc5697fc3f
commit 69edfd4771
10 changed files with 147 additions and 10 deletions

View File

@@ -2,4 +2,4 @@ from flask import Flask
webapp = Flask(__name__)
from webapp import commandes, configurations, index, humeurs, protondb
from webapp import commandes, configurations, index, humeurs, protondb, live_alert

View File

@@ -3,15 +3,10 @@ from webapp import webapp
from database import db
from database.helpers import ConfigurationHelper
from discordbot import bot
from discord import TextChannel
@webapp.route("/configurations")
def openConfigurations():
channels = []
for channel in bot.get_all_channels():
if isinstance(channel, TextChannel):
channels.append(channel)
return render_template("configurations.html", configuration = ConfigurationHelper(), channels = channels)
return render_template("configurations.html", configuration = ConfigurationHelper(), channels = bot.getAllTextChannel())
@webapp.route("/configurations/update", methods=['POST'])
def updateConfiguration():

54
webapp/live_alert.py Normal file
View File

@@ -0,0 +1,54 @@
from flask import render_template, request, redirect, url_for
from webapp import webapp
from database import db
from database.models import LiveAlert
from discordbot import bot
@webapp.route("/live-alert")
def openLiveAlert():
alerts : list[LiveAlert] = LiveAlert.query.all()
channels = bot.getAllTextChannel()
for alert in alerts :
for channel in channels:
if alert.notify_channel == channel.id :
alert.notify_channel_name = channel.name
return render_template("live-alert.html", alerts = alerts, channels = channels)
@webapp.route("/live-alert/add", methods=['POST'])
def addLiveAlert():
alert = LiveAlert(enable = True, login = request.form.get('login'), notify_channel = request.form.get('notify_channel'), message = request.form.get('message'))
db.session.add(alert)
db.session.commit()
return redirect(url_for("openLiveAlert"))
@webapp.route("/live-alert/toggle/<int:id>")
def toggleLiveAlert(id):
alert : LiveAlert = LiveAlert.query.get_or_404(id)
alert.enable = not alert.enable
db.session.commit()
return redirect(url_for("openLiveAlert"))
@webapp.route("/live-alert/edit/<int:id>")
def openEditLiveAlert(id):
alert = LiveAlert.query.get_or_404(id)
channels = bot.getAllTextChannel()
return render_template("live-alert.html", alert = alert, channels = channels)
@webapp.route("/live-alert/edit/<int:id>", methods=['POST'])
def submitEditLiveAlert(id):
alert : LiveAlert = LiveAlert.query.get_or_404(id)
alert.login = request.form.get('login')
alert.notify_channel = request.form.get('notify_channel')
alert.message = request.form.get('message')
db.session.commit()
return redirect(url_for("openLiveAlert"))
@webapp.route("/live-alert/del/<int:id>")
def delLiveAlert(id):
alert = LiveAlert.query.get_or_404(id)
db.session.delete(alert)
db.session.commit()
return redirect(url_for("openLiveAlert"))

View File

@@ -11,3 +11,7 @@ table td {
white-space: normal;
max-width: 250px;
}
a.icon {
text-decoration: none;
}

View File

@@ -19,12 +19,12 @@
<td>{{ commande.trigger }}</td>
<td>{{ commande.response }}</td>
<td>
<a href="{{ url_for('toggle_discord_commande', commande_id = commande.id) }}" style="text-decoration: none; font-size: 1.2em;">
<a href="{{ url_for('toggle_discord_commande', commande_id = commande.id) }}" class="icon">
{{ '✅' if commande.discord_enable else '❌' }}
</a>
</td>
<td>
<a href="{{ url_for('toggle_twitch_commande', commande_id = commande.id) }}" style="text-decoration: none; font-size: 1.2em;">
<a href="{{ url_for('toggle_twitch_commande', commande_id = commande.id) }}" class="icon">
{{ '✅' if commande.twitch_enable else '❌' }}
</a>
</td>

View File

@@ -0,0 +1,60 @@
{% extends "template.html" %}
{% block content %}
<h1>Alerte Live</h1>
{% if not alert %}
<h2>Alertes</h2>
<table>
<thead>
<tr>
<th>Chaine</th>
<th>Canal</th>
<th>Message</th>
<th>Actif</th>
<th>#</th>
</tr>
</thead>
<tbody>
{% for alert in alerts %}
<tr>
<td>{{alert.login}}</td>
<td>{{alert.notify_channel_name}}</td>
<td>{{alert.message}}</td>
<td>
<a href="{{ url_for('toggleLiveAlert', id = alert.id) }}" class="icon">{{ '✅' if alert.enable else '❌' }}</a>
</td>
<td>
<a href="{{ url_for('openEditLiveAlert', id = alert.id) }}" class="icon"></a>
<a href="{{ url_for('delLiveAlert', id = alert.id) }}"
onclick="return confirm('Êtes-vous sûr de vouloir supprimer cette alerte ?')" class="icon">🗑</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
<h2>{{ 'Editer une alerte' if alert else 'Ajouter une alerte de Live' }}</h2>
<form action="{{ url_for('submitEditLiveAlert', id = alert.id) if alert else url_for('addLiveAlert') }}" method="POST">
<label for="login">Chaine</label>
<input name="login" type="text" maxlength="32" required="required" value="{{alert.login if alert}}"/>
<label for="notify_channel">Canal de Notification</label>
<select name="notify_channel">
{% for channel in channels %}
<option value="{{channel.id}}"{% if alert and alert.notify_channel == channel.id %}
selected="selected" {% endif %}>{{channel.name}}</option>
{% endfor %}
</select>
<label for="message">Message</label>
<textarea name="message" rows="5" cols="50" required="required">{{alert.message if alert}}</textarea>
<input type="Submit" value="Ajouter">
<p>
La chaine est le login de la chaine, par exemple <strong>chainesteve</strong> pour <strong>https://www.twitch.tv/chainesteve</strong>.
</p>
<p>
Pour le message vous avez acces à ces variables : <strong>TODO</strong>
</p>
</form>
{% endblock %}

View File

@@ -18,6 +18,7 @@
<nav>
<a href="/"><img src="/static/ico/favicon.ico"></a>
<ul>
<li><a href="/live-alert">Alerte live</a></li>
<li><a href="/commandes">Commandes</a></li>
<li><a href="/humeurs">Humeurs</a></li>
<li><a href="/protondb">ProtonDB</a></li>