privmsg interface to ircbot in django admin

fill out the form, send a privmsg
This commit is contained in:
Brian S. Stephan 2015-06-13 13:07:52 -05:00
parent 56b495e8fb
commit d9f905c691
3 changed files with 61 additions and 1 deletions

View File

@ -1,11 +1,41 @@
"""Manage ircbot models in the admin interface."""
"""Manage ircbot models and admin actions in the admin interface."""
import logging
import xmlrpclib
from django.conf import settings
from django.contrib import admin
from django.shortcuts import render
from ircbot.forms import PrivmsgForm
from ircbot.models import Alias, BotAdmin, IrcChannel, IrcPlugin
log = logging.getLogger('ircbot.admin')
admin.site.register(Alias)
admin.site.register(BotAdmin)
admin.site.register(IrcChannel)
admin.site.register(IrcPlugin)
def send_privmsg(request):
"""Send a privmsg over XML-RPC to the IRC bot."""
if request.method == 'POST':
form = PrivmsgForm(request.POST)
if form.is_valid():
target = form.cleaned_data['target']
message = form.cleaned_data['message']
bot_url = 'http://{0:s}:{1:d}/'.format(settings.IRCBOT_XMLRPC_HOST, settings.IRCBOT_XMLRPC_PORT)
bot = xmlrpclib.ServerProxy(bot_url)
bot.privmsg(target, message)
form = PrivmsgForm()
else:
form = PrivmsgForm()
return render(request, 'privmsg.html', {'form': form})
admin.site.register_view('ircbot/privmsg/', "Ircbot - privmsg", view=send_privmsg, urlname='ircbot_privmsg')

15
dr_botzo/ircbot/forms.py Normal file
View File

@ -0,0 +1,15 @@
"""Forms for doing ircbot stuff."""
import logging
from django.forms import Form, CharField
log = logging.getLogger('markov.forms')
class PrivmsgForm(Form):
"""Accept a privmsg to send to the ircbot."""
target = CharField()
message = CharField()

View File

@ -0,0 +1,15 @@
{% extends 'adminplus/index.html' %}
{% block title %}Ircbot - Privmsg{% endblock %}
{% block content %}
<div id="content-main">
<form id="ircbot_privmsg_form" action="{% url 'admin:ircbot_privmsg' %}" method="post">
{% csrf_token %}
<table>
{{ form }}
</table>
<input class="submit-button" type="submit" value="Privmsg"/>
</form>
</div>
{% endblock %}