"""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='') topic_time = models.DateTimeField(default=timezone.now) topic_by = models.CharField(max_length=200, default='') 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)