"""Manage ircbot models and admin actions in the admin interface."""

import logging
import xmlrpc.client

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, BotUser, IrcChannel, IrcPlugin


log = logging.getLogger('ircbot.admin')


admin.site.register(Alias)
admin.site.register(BotUser)
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 = 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_view('ircbot/privmsg/', "Ircbot - privmsg", view=send_privmsg, urlname='ircbot_privmsg')