From 123acbbd8d5083b14765ebf149e5636d5c1f3f34 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Sat, 20 Jun 2015 09:27:50 -0500 Subject: [PATCH] ircbot: tie bot users to django auth user, part 1 sets up the foreign key and changes how is_admin() works, though it will be going away pretty soon, i just need to do this migration in parts so as to not confuse django too much --- dr_botzo/ircbot/admin.py | 2 ++ dr_botzo/ircbot/lib.py | 15 ++++++++----- .../ircbot/migrations/0009_botadmin_user.py | 22 +++++++++++++++++++ dr_botzo/ircbot/models.py | 12 ++++++---- 4 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 dr_botzo/ircbot/migrations/0009_botadmin_user.py diff --git a/dr_botzo/ircbot/admin.py b/dr_botzo/ircbot/admin.py index 3f25dc6..886c6f4 100644 --- a/dr_botzo/ircbot/admin.py +++ b/dr_botzo/ircbot/admin.py @@ -1,5 +1,7 @@ """Manage ircbot models and admin actions in the admin interface.""" +from __future__ import unicode_literals + import logging import xmlrpclib diff --git a/dr_botzo/ircbot/lib.py b/dr_botzo/ircbot/lib.py index d5d9cda..c2457fd 100644 --- a/dr_botzo/ircbot/lib.py +++ b/dr_botzo/ircbot/lib.py @@ -1,5 +1,7 @@ """Library and convenience methods for the IRC bot and plugins.""" +from __future__ import unicode_literals + import logging import irc.client @@ -45,11 +47,14 @@ class Plugin(object): def is_admin(source): """Check if the provided event source is a bot admin.""" - if source in BotAdmin.objects.values_list('nickmask', flat=True): - log.debug(u"in is_admin; True") - return True - log.debug(u"in is_admin; False") - return False + try: + bot_user = BotAdmin.objects.get(nickmask=source) + log.debug("found bot user {0:s}".format(bot_user)) + except BotAdmin.DoesNotExist: + log.debug("could not find bot user for {0:s}".format(source)) + return False + + return True def reply_destination_for_event(event): diff --git a/dr_botzo/ircbot/migrations/0009_botadmin_user.py b/dr_botzo/ircbot/migrations/0009_botadmin_user.py new file mode 100644 index 0000000..b285fe4 --- /dev/null +++ b/dr_botzo/ircbot/migrations/0009_botadmin_user.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('ircbot', '0008_auto_20150521_2113'), + ] + + operations = [ + migrations.AddField( + model_name='botadmin', + name='user', + field=models.ForeignKey(default=1, to=settings.AUTH_USER_MODEL), + preserve_default=False, + ), + ] diff --git a/dr_botzo/ircbot/models.py b/dr_botzo/ircbot/models.py index 05fd28b..73a873f 100644 --- a/dr_botzo/ircbot/models.py +++ b/dr_botzo/ircbot/models.py @@ -1,8 +1,11 @@ """Track basic IRC settings and similar.""" +from __future__ import unicode_literals + import logging import re +from django.conf import settings from django.db import models from django.utils import timezone @@ -23,7 +26,7 @@ class Alias(models.Model): def __unicode__(self): """String representation.""" - return u"{0:s} -> {1:s}".format(self.pattern, self.replacement) + return "{0:s} -> {1:s}".format(self.pattern, self.replacement) def replace(self, what): command = None @@ -38,11 +41,12 @@ class BotAdmin(models.Model): """Configure admins, which can do things through the bot that others can't.""" nickmask = models.CharField(max_length=200, unique=True) + user = models.ForeignKey(settings.AUTH_USER_MODEL) def __unicode__(self): """String representation.""" - return u"{0:s}".format(self.nickmask) + return "{0:s} (Django user {1:s})".format(self.nickmask, self.user.username) class IrcChannel(models.Model): @@ -59,7 +63,7 @@ class IrcChannel(models.Model): def __unicode__(self): """String representation.""" - return u"{0:s}".format(self.name) + return "{0:s}".format(self.name) class IrcPlugin(models.Model): @@ -75,4 +79,4 @@ class IrcPlugin(models.Model): def __unicode__(self): """String representation.""" - return u"{0:s}".format(self.path) + return "{0:s}".format(self.path)