one may want to set autojoin for a channel that hasn't yet had topic stuff logged, so don't require it in the form
79 lines
1.9 KiB
Python
79 lines
1.9 KiB
Python
"""Track basic IRC settings and similar."""
|
|
|
|
import logging
|
|
import re
|
|
|
|
from django.db import models
|
|
from django.utils import timezone
|
|
|
|
|
|
log = logging.getLogger('ircbot.models')
|
|
|
|
|
|
class Alias(models.Model):
|
|
|
|
"""Allow for aliasing of arbitrary regexes to normal supported commands."""
|
|
|
|
pattern = models.CharField(max_length=200, unique=True)
|
|
replacement = models.CharField(max_length=200)
|
|
|
|
class Meta:
|
|
verbose_name_plural = "aliases"
|
|
|
|
def __unicode__(self):
|
|
"""String representation."""
|
|
|
|
return u"{0:s} -> {1:s}".format(self.pattern, self.replacement)
|
|
|
|
def replace(self, what):
|
|
command = None
|
|
if re.search(self.pattern, what, flags=re.IGNORECASE):
|
|
command = re.sub(self.pattern, self.replacement, what, flags=re.IGNORECASE)
|
|
|
|
return command
|
|
|
|
|
|
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)
|
|
|
|
def __unicode__(self):
|
|
"""String representation."""
|
|
|
|
return u"{0:s}".format(self.nickmask)
|
|
|
|
|
|
class IrcChannel(models.Model):
|
|
|
|
"""Track channel settings."""
|
|
|
|
name = models.CharField(max_length=200, unique=True)
|
|
autojoin = models.BooleanField(default=False)
|
|
|
|
topic_msg = models.TextField(default='', blank=True)
|
|
topic_time = models.DateTimeField(default=timezone.now)
|
|
topic_by = models.CharField(max_length=200, default='', blank=True)
|
|
|
|
def __unicode__(self):
|
|
"""String representation."""
|
|
|
|
return u"{0:s}".format(self.name)
|
|
|
|
|
|
class IrcPlugin(models.Model):
|
|
|
|
"""Represent an IRC plugin and its loading settings."""
|
|
|
|
path = models.CharField(max_length=200, unique=True)
|
|
autoload = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
ordering = ['path']
|
|
|
|
def __unicode__(self):
|
|
"""String representation."""
|
|
|
|
return u"{0:s}".format(self.path)
|