From 1e4ac603651da6f0c232728399337e74d5c1c0f2 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 3 Feb 2021 09:12:50 +0100 Subject: [PATCH] Added ChannelPlugin menu for debugging --- butterrobot/admin/blueprint.py | 43 +++++++++++-------- butterrobot/admin/templates/_base.j2 | 20 ++++++++- .../admin/templates/channel_plugins_list.j2 | 41 ++++++++++++++++++ butterrobot/app.py | 16 ++----- 4 files changed, 87 insertions(+), 33 deletions(-) create mode 100644 butterrobot/admin/templates/channel_plugins_list.j2 diff --git a/butterrobot/admin/blueprint.py b/butterrobot/admin/blueprint.py index 1471822..b9442fd 100644 --- a/butterrobot/admin/blueprint.py +++ b/butterrobot/admin/blueprint.py @@ -1,24 +1,21 @@ -import json import os.path from functools import wraps import structlog from flask import ( Blueprint, - render_template, + g, + flash, request, session, - redirect, url_for, - flash, - g, + redirect, + render_template, ) -from butterrobot.config import HOSTNAME from butterrobot.db import UserQuery, ChannelQuery, ChannelPluginQuery from butterrobot.plugins import get_available_plugins - admin = Blueprint("admin", __name__, url_prefix="/admin") admin.template_folder = os.path.join(os.path.dirname(__name__), "templates") logger = structlog.get_logger(__name__) @@ -99,7 +96,8 @@ def channel_list_view(): def channel_detail_view(channel_id): if request.method == "POST": ChannelQuery.update( - channel_id, enabled=request.form["enabled"] == "true", + channel_id, + enabled=request.form["enabled"] == "true", ) flash("Channel updated", "success") @@ -117,18 +115,24 @@ def channel_delete_view(channel_id): return redirect(url_for("admin.channel_list_view")) -@admin.route("/channelplugins", methods=["POST"]) +@admin.route("/channelplugins", methods=["GET", "POST"]) @login_required def channel_plugin_list_view(): - data = request.form - try: - ChannelPluginQuery.create( - data["channel_id"], data["plugin_id"], enabled=data["enabled"] == "y" - ) - flash(f"Plugin {data['plugin_id']} added to the channel", "success") - except ChannelPluginQuery.Duplicated: - flash(f"Plugin {data['plugin_id']} is already present on the channel", "error") - return redirect(request.headers.get("Referer")) + if request.method == "POST": + data = request.form + try: + ChannelPluginQuery.create( + data["channel_id"], data["plugin_id"], enabled=data["enabled"] == "y" + ) + flash(f"Plugin {data['plugin_id']} added to the channel", "success") + except ChannelPluginQuery.Duplicated: + flash( + f"Plugin {data['plugin_id']} is already present on the channel", "error" + ) + return redirect(request.headers.get("Referer")) + + channel_plugins = ChannelPluginQuery.all() + return render_template("channel_plugins_list.j2", channel_plugins=channel_plugins) @admin.route("/channelplugins/", methods=["GET", "POST"]) @@ -136,7 +140,8 @@ def channel_plugin_list_view(): def channel_plugin_detail_view(channel_plugin_id): if request.method == "POST": ChannelPluginQuery.update( - channel_plugin_id, enabled=request.form["enabled"] == "true", + channel_plugin_id, + enabled=request.form["enabled"] == "true", ) flash("Plugin updated", category="success") diff --git a/butterrobot/admin/templates/_base.j2 b/butterrobot/admin/templates/_base.j2 index 95ab53b..d1db800 100644 --- a/butterrobot/admin/templates/_base.j2 +++ b/butterrobot/admin/templates/_base.j2 @@ -43,7 +43,7 @@ diff --git a/butterrobot/admin/templates/channel_plugins_list.j2 b/butterrobot/admin/templates/channel_plugins_list.j2 new file mode 100644 index 0000000..2ee69bb --- /dev/null +++ b/butterrobot/admin/templates/channel_plugins_list.j2 @@ -0,0 +1,41 @@ +{% extends "_base.j2" %} + +{% block content %} + + +
+
+ + + + + + + + + + + + {% for channel_plugin in channel_plugins %} + + + + + + + {% endfor %} + +
IDChannel IDPlugin IDEnabled
{{ channel_plugin.id }}{{ channel_plugin.channel_id }} + {{ channel_plugin.plugin_id }} + {{ channel_plugin.enabled }}
+
+
+{% endblock %} diff --git a/butterrobot/app.py b/butterrobot/app.py index 8301a5d..22344c0 100644 --- a/butterrobot/app.py +++ b/butterrobot/app.py @@ -1,23 +1,15 @@ import asyncio -import traceback -from dataclasses import asdict -from functools import lru_cache -from flask import Flask, request, jsonify import structlog +from flask import Flask, request import butterrobot.logging # noqa -from butterrobot.queue import q -from butterrobot.db import ChannelQuery -from butterrobot.config import SECRET_KEY, HOSTNAME -from butterrobot.objects import Message, Channel from butterrobot.http import ExternalProxyFix -from butterrobot.plugins import get_available_plugins -from butterrobot.platforms import PLATFORMS, get_available_platforms -from butterrobot.platforms.base import Platform +from butterrobot.queue import q +from butterrobot.config import SECRET_KEY +from butterrobot.platforms import get_available_platforms from butterrobot.admin.blueprint import admin as admin_bp - loop = asyncio.get_event_loop() logger = structlog.get_logger(__name__) app = Flask(__name__)