"""Manage ircbot models and admin actions in the admin interface.""" import logging import xmlrpc.client from django.contrib import admin from django.shortcuts import render from ircbot.forms import PrivmsgForm from ircbot.models import Alias, BotUser, IrcChannel, IrcPlugin, IrcServer log = logging.getLogger('ircbot.admin') 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(form.cleaned_data['xmlrpc_host'], form.cleaned_data['xmlrpc_port']) bot = xmlrpc.client.ServerProxy(bot_url, allow_none=True) bot.reply(None, message, False, target) form = PrivmsgForm() else: form = PrivmsgForm() return render(request, 'privmsg.html', {'form': form}) admin.site.register(Alias) admin.site.register(BotUser) admin.site.register(IrcChannel) admin.site.register(IrcPlugin) admin.site.register(IrcServer) admin.site.register_view('ircbot/privmsg/', "Ircbot - privmsg", view=send_privmsg, urlname='ircbot_privmsg')