from django.db import models from django.core.validators import validate_unicode_slug, MaxLengthValidator, MaxValueValidator, URLValidator # Create your models here. class Network(models.Model): name = models.CharField( max_length=40, unique=True, validators=[MaxLengthValidator(40)], ) slug = models.SlugField( db_index=True, unique=True, validators=[validate_unicode_slug], ) nickname = models.CharField( max_length=31, default='RotBot', validators=[MaxLengthValidator(31)], ) username = models.CharField( max_length=31, default='pyRot', validators=[MaxLengthValidator(31)], ) password = models.CharField( null=True, blank=True, max_length=31, validators=[MaxLengthValidator(31)], ) home_channel = models.CharField( max_length=64, default='#RotBot', validators=[MaxLengthValidator(64)], ) command_character = models.CharField( max_length=1, default='!', validators=[MaxLengthValidator(1)], ) help_character = models.CharField( max_length=1, default='@', validators=[MaxLengthValidator(1)], ) enabled = models.BooleanField( default=True, ) class Meta: ordering = ['name'] def get_absolute_url(self): from django.urls import reverse return reverse('rotbot.views.network', args=[str(self.id)]) # Try this in the template: {{ object.name }} def __str__(self): return self.name class Host(models.Model): network = models.ForeignKey( 'Network', on_delete=models.CASCADE, related_name="host", related_query_name="hosts", ) address = models.CharField( max_length=200, unique=True, validators=[MaxLengthValidator(200)], ) port = models.PositiveSmallIntegerField( default = 6697, validators=[MaxValueValidator(65535)], ) ssl = models.BooleanField( default=True, ) class Meta: order_with_respect_to = 'network' unique_together = ['address', 'port'] @property def connect_string(self): return '%s:%s' % (self.address, self.port) def __str__(self): return '%s:%s' % (self.address, self.port)