diff --git a/dr_botzo/ircbot/admin.py b/dr_botzo/ircbot/admin.py index b06ff06..3f25dc6 100644 --- a/dr_botzo/ircbot/admin.py +++ b/dr_botzo/ircbot/admin.py @@ -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') diff --git a/dr_botzo/ircbot/forms.py b/dr_botzo/ircbot/forms.py new file mode 100644 index 0000000..f413b74 --- /dev/null +++ b/dr_botzo/ircbot/forms.py @@ -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() diff --git a/dr_botzo/ircbot/templates/privmsg.html b/dr_botzo/ircbot/templates/privmsg.html new file mode 100644 index 0000000..be86d3a --- /dev/null +++ b/dr_botzo/ircbot/templates/privmsg.html @@ -0,0 +1,15 @@ +{% extends 'adminplus/index.html' %} + +{% block title %}Ircbot - Privmsg{% endblock %} + +{% block content %} +
+
+ {% csrf_token %} + + {{ form }} +
+ +
+
+{% endblock %}