52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
|
from django.db import models
|
||
|
from django.utils.translation import ugettext_lazy as _
|
||
|
|
||
|
from authtools.models import AbstractNamedUser
|
||
|
|
||
|
|
||
|
class RadioUser(AbstractNamedUser):
|
||
|
"""
|
||
|
Custom user model which uses email as the main identifier and adds a flag
|
||
|
for whether the user is the radio DJ.
|
||
|
"""
|
||
|
is_dj = models.BooleanField(_('dj status'),
|
||
|
default=False,
|
||
|
help_text=_('Designates whether this user is '
|
||
|
'the automated dj account or is a '
|
||
|
'real person account.'))
|
||
|
|
||
|
|
||
|
class Setting(models.Model):
|
||
|
"""
|
||
|
A model for keeping track of dynamic settings while the site is online and
|
||
|
the radio is running.
|
||
|
"""
|
||
|
INTEGER = 0
|
||
|
FLOAT = 1
|
||
|
STRING = 2
|
||
|
BOOL = 3
|
||
|
TYPE_CHOICES = (
|
||
|
(INTEGER, 'Integer'),
|
||
|
(FLOAT, 'Float'),
|
||
|
(STRING, 'String'),
|
||
|
(BOOL, 'Bool'),
|
||
|
)
|
||
|
name = models.CharField(max_length=64, unique=True)
|
||
|
description = models.TextField(blank=True)
|
||
|
setting_type = models.PositiveIntegerField(choices=TYPE_CHOICES,
|
||
|
default=INTEGER)
|
||
|
data = models.TextField()
|
||
|
|
||
|
def get(self):
|
||
|
if self.setting_type == self.INTEGER:
|
||
|
return int(self.data)
|
||
|
elif self.setting_type == self.FLOAT:
|
||
|
return float(self.data)
|
||
|
elif self.setting_type == self.BOOL:
|
||
|
return self.data == 'True'
|
||
|
else:
|
||
|
return self.data
|
||
|
|
||
|
def __str__(self):
|
||
|
return '{}: {}'.format(self.name, self.data)
|