Esempio n. 1
0
class Migration(migrations.Migration):

    dependencies = [
        ('money', '0002_income_incomecategory_incomegroup'),
    ]

    operations = [
        migrations.CreateModel(
            name='ExpenseGroup',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('create_time', common.models.IntDateTimeField()),
                ('update_time', common.models.IntDateTimeField()),
                ('name', models.CharField(max_length=50, unique=True)),
            ],
            options={
                'db_table': 'expense_group_tab',
            },
        ),
        migrations.AlterField(
            model_name='income',
            name='receive_time',
            field=common.models.IntDateTimeField(default=portfolio.time_util.now),
        ),
        migrations.CreateModel(
            name='ExpenseCategory',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('create_time', common.models.IntDateTimeField()),
                ('update_time', common.models.IntDateTimeField()),
                ('name', models.CharField(max_length=50, unique=True)),
                ('group', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='money.expensegroup')),
            ],
            options={
                'verbose_name_plural': 'expense categories',
                'db_table': 'expense_category_tab',
            },
        ),
        migrations.CreateModel(
            name='Expense',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('create_time', common.models.IntDateTimeField()),
                ('update_time', common.models.IntDateTimeField()),
                ('name', models.CharField(blank=True, max_length=500)),
                ('value', models.PositiveIntegerField()),
                ('receive_time', common.models.IntDateTimeField(default=portfolio.time_util.now)),
                ('category', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='money.expensecategory')),
                ('wallet', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='money.wallet')),
            ],
            options={
                'db_table': 'expense_tab',
            },
        ),
    ]
Esempio n. 2
0
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='GCalShow',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('gcal_id', common.models.TruncatingCharField(max_length=256, unique=True)),
                ('title', common.models.TruncatingCharField(max_length=1024, verbose_name='title')),
                ('start', models.DateTimeField(verbose_name='start time')),
                ('end', models.DateTimeField(verbose_name='end time')),
                ('users', models.ManyToManyField(related_name='gcal_shows', to=settings.AUTH_USER_MODEL, verbose_name='users')),
            ],
            options={
                'verbose_name': 'Google Calendar show',
                'verbose_name_plural': 'Google Calendar shows',
                'ordering': ('start', 'id'),
            },
        ),
    ]
Esempio n. 3
0
class Migration(migrations.Migration):

    dependencies = [
        ('money', '0004_auto_20210527_2007'),
    ]

    operations = [
        migrations.CreateModel(
            name='Budget',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('create_time', common.models.IntDateTimeField()),
                ('update_time', common.models.IntDateTimeField()),
                ('limit', models.PositiveIntegerField()),
                ('expense_group',
                 models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
                                   to='money.expensegroup')),
            ],
            options={
                'db_table': 'budget_tab',
            },
        ),
    ]
Esempio n. 4
0
class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name='Wallet',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('name', models.CharField(max_length=50, unique=True)),
                ('create_time', common.models.IntDateTimeField()),
                ('update_time', common.models.IntDateTimeField()),
            ],
            options={
                'db_table': 'wallet_tab',
            },
        ),
    ]
Esempio n. 5
0
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('autodj', '0001_initial'),
        ('broadcast', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='UpstreamServer',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('name',
                 models.SlugField(
                     help_text=
                     'Unique codename to identify this upstream server.',
                     max_length=20,
                     unique=True,
                     verbose_name='name')),
                ('hostname',
                 models.CharField(
                     help_text='Hostname for the server, eg. example.com',
                     max_length=255,
                     verbose_name='hostname')),
                ('protocol',
                 models.CharField(
                     choices=[('http', 'http'), ('https', 'https (secure)')],
                     default='http',
                     help_text=
                     "The protocol for the server, if unsure it's likely http",
                     max_length=5,
                     verbose_name='protocol')),
                ('port',
                 models.PositiveSmallIntegerField(
                     help_text='Port for this server, eg. 8000',
                     verbose_name='port')),
                ('telnet_port', models.PositiveIntegerField()),
                ('username',
                 models.CharField(default='source',
                                  max_length=255,
                                  verbose_name='username')),
                ('password',
                 models.CharField(max_length=255, verbose_name='password')),
                ('mount',
                 models.CharField(
                     help_text=
                     'Mount point for the upstream server, eg. /stream',
                     max_length=255,
                     verbose_name='mount point')),
                ('encoding',
                 models.CharField(choices=[
                     ('mp3', 'MP3'), ('fdkaac', 'AAC'),
                     ('vorbis.cbr', 'OGG Vorbis'),
                     ('ffmpeg', 'ffmpeg (custom additional arguments needed)')
                 ],
                                  default='mp3',
                                  max_length=20,
                                  verbose_name='encoding format')),
                ('bitrate',
                 models.PositiveSmallIntegerField(
                     blank=True,
                     help_text=
                     'Encoding bitrate (kbits), blank for a sane default or ffmpeg.',
                     null=True,
                     verbose_name='bitrate')),
                ('mime',
                 models.CharField(
                     blank=True,
                     help_text=
                     'MIME format, ie audio/mpeg, leave blank for Liquidsoap to guess. (Needed for ffmpeg.)',
                     max_length=50,
                     verbose_name='MIME format')),
                ('encoding_args',
                 models.JSONField(
                     blank=True,
                     default=None,
                     help_text=
                     'Enter any additional arguments for the encoder here. Advanced use cases only, see the <a href="https://www.liquidsoap.info/doc-1.4.3/encoding_formats.html" target="_blank">Liquidsoap docs here</a> for more info. Leave empty or <code>null</code> for none.',
                     null=True,
                     verbose_name='additional arguments for encoding')),
            ],
            options={
                'ordering': ('name', ),
                'unique_together': {('hostname', 'port', 'mount')},
            },
        ),
        migrations.CreateModel(
            name='PlayoutLogEntry',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('created',
                 models.DateTimeField(db_index=True,
                                      default=django.utils.timezone.now,
                                      verbose_name='Date')),
                ('event_type',
                 models.CharField(choices=[('track', 'Track'),
                                           ('dj', 'Live DJ'),
                                           ('general', 'General'),
                                           ('source', 'Source Transition')],
                                  default='general',
                                  max_length=10,
                                  verbose_name='Type')),
                ('description',
                 common.models.TruncatingCharField(max_length=500,
                                                   verbose_name='Entry')),
                ('active_source',
                 common.models.TruncatingCharField(
                     default='N/A',
                     max_length=50,
                     verbose_name='Active Source')),
                ('audio_asset',
                 models.ForeignKey(
                     blank=True,
                     null=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     to='autodj.audioasset')),
                ('broadcast_asset',
                 models.ForeignKey(
                     blank=True,
                     null=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     to='broadcast.broadcastasset')),
                ('rotator_asset',
                 models.ForeignKey(
                     blank=True,
                     null=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     to='autodj.rotatorasset')),
                ('user',
                 models.ForeignKey(
                     blank=True,
                     null=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'playout log entry',
                'verbose_name_plural': 'playout logs',
                'ordering': ('-created', ),
            },
        ),
    ]
Esempio n. 6
0
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='BroadcastAsset',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('created',
                 models.DateTimeField(auto_now_add=True,
                                      verbose_name='created')),
                ('modified',
                 models.DateTimeField(auto_now=True,
                                      verbose_name='last modified')),
                ('title',
                 common.models.TruncatingCharField(
                     blank=True,
                     db_index=True,
                     help_text=
                     "If left empty, a title will be generated from the file's metadata.",
                     max_length=255,
                     verbose_name='title')),
                ('file_basename', models.CharField(max_length=512)),
                ('file',
                 models.FileField(
                     blank=True,
                     help_text=
                     'You can provide either an uploaded audio file or a URL to an external asset.',
                     max_length=512,
                     upload_to=common.models.audio_asset_file_upload_to,
                     verbose_name='audio file')),
                ('duration',
                 models.DurationField(default=datetime.timedelta(0),
                                      verbose_name='Audio duration')),
                ('fingerprint', models.UUIDField(db_index=True, null=True)),
                ('status',
                 models.CharField(
                     choices=[('-', 'processing queued'), ('p', 'processing'),
                              ('f', 'processing failed'),
                              ('r', 'ready for play')],
                     db_index=True,
                     default='-',
                     help_text=
                     'You will be able to edit this asset when status is "ready for play."',
                     max_length=1,
                     verbose_name='status')),
                ('task_id', models.UUIDField(null=True)),
                ('uploader',
                 models.ForeignKey(
                     null=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     to=settings.AUTH_USER_MODEL,
                     verbose_name='uploader')),
            ],
            options={
                'verbose_name': 'scheduled broadcast asset',
                'verbose_name_plural': 'scheduled broadcast assets',
                'ordering': ('title', 'id'),
            },
            bases=(dirtyfields.dirtyfields.DirtyFieldsMixin, models.Model),
        ),
        migrations.CreateModel(
            name='Broadcast',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('created',
                 models.DateTimeField(auto_now_add=True,
                                      verbose_name='created')),
                ('modified',
                 models.DateTimeField(auto_now=True,
                                      verbose_name='last modified')),
                ('scheduled_time', models.DateTimeField()),
                ('status',
                 models.CharField(choices=[('-', 'to be queued'),
                                           ('q', 'queued for play'),
                                           ('p', 'played'),
                                           ('f', 'failed to play')],
                                  default='-',
                                  max_length=1)),
                ('task_id', models.UUIDField(null=True)),
                ('asset',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='broadcasts',
                                   to='broadcast.broadcastasset',
                                   verbose_name='broadcast asset')),
                ('creator',
                 models.ForeignKey(
                     null=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     to=settings.AUTH_USER_MODEL,
                     verbose_name='creator')),
            ],
            options={
                'verbose_name': 'scheduled broadcast',
                'verbose_name_plural': 'scheduled broadcasts',
                'ordering': ('-scheduled_time', ),
            },
        ),
    ]
Esempio n. 7
0
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('auth', '0009_alter_user_last_name_max_length'),
    ]

    operations = [
        migrations.CreateModel(
            name='User',
            fields=[
                ('password',
                 models.CharField(max_length=128, verbose_name='password')),
                ('last_login',
                 models.DateTimeField(blank=True,
                                      null=True,
                                      verbose_name='last login')),
                ('is_superuser',
                 models.BooleanField(
                     default=False,
                     help_text=
                     'Designates that this user has all permissions without explicitly assigning them.',
                     verbose_name='superuser status')),
                ('username',
                 models.CharField(
                     error_messages={
                         'unique': 'A user with that username already exists.'
                     },
                     help_text=
                     'Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.',
                     max_length=150,
                     unique=True,
                     validators=[
                         django.contrib.auth.validators.
                         UnicodeUsernameValidator()
                     ],
                     verbose_name='username')),
                ('first_name',
                 models.CharField(blank=True,
                                  max_length=30,
                                  verbose_name='first name')),
                ('last_name',
                 models.CharField(blank=True,
                                  max_length=150,
                                  verbose_name='last name')),
                ('email',
                 models.EmailField(blank=True,
                                   max_length=254,
                                   verbose_name='email address')),
                ('is_staff',
                 models.BooleanField(
                     default=False,
                     help_text=
                     'Designates whether the user can log into this admin site.',
                     verbose_name='staff status')),
                ('is_active',
                 models.BooleanField(
                     default=True,
                     help_text=
                     'Designates whether this user should be treated as active. Unselect this instead of deleting accounts.',
                     verbose_name='active')),
                ('date_joined',
                 models.DateTimeField(default=django.utils.timezone.now,
                                      verbose_name='date joined')),
                ('id', models.BigAutoField(primary_key=True, serialize=False)),
                ('created',
                 models.DateTimeField(default=django.utils.timezone.now)),
                ('updated',
                 models.DateTimeField(default=django.utils.timezone.now)),
                ('enabled', models.BooleanField(default=True)),
                ('groups',
                 models.ManyToManyField(
                     blank=True,
                     help_text=
                     'The groups this user belongs to. A user will get all permissions granted to each of their groups.',
                     related_name='user_set',
                     related_query_name='user',
                     to='auth.Group',
                     verbose_name='groups')),
                ('user_permissions',
                 models.ManyToManyField(
                     blank=True,
                     help_text='Specific permissions for this user.',
                     related_name='user_set',
                     related_query_name='user',
                     to='auth.Permission',
                     verbose_name='user permissions')),
            ],
            options={
                'abstract': False,
            },
            managers=[
                ('objects', django.contrib.auth.models.UserManager()),
            ],
        ),
        migrations.CreateModel(
            name='Application',
            fields=[
                ('id', models.BigAutoField(primary_key=True, serialize=False)),
                ('created',
                 models.DateTimeField(default=django.utils.timezone.now)),
                ('updated',
                 models.DateTimeField(default=django.utils.timezone.now)),
                ('enabled', models.BooleanField(default=True)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Token',
            fields=[
                ('id', models.BigAutoField(primary_key=True, serialize=False)),
                ('created',
                 models.DateTimeField(default=django.utils.timezone.now)),
                ('updated',
                 models.DateTimeField(default=django.utils.timezone.now)),
                ('enabled', models.BooleanField(default=True)),
                ('expires',
                 models.DateTimeField(default=common.models.get_expiration)),
                ('value', models.CharField(max_length=255)),
                ('application',
                 models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
                                   to='common.Application')),
                ('owner',
                 models.ForeignKey(on_delete=django.db.models.deletion.PROTECT,
                                   to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'abstract': False,
            },
        ),
    ]
Esempio n. 8
0
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='AudioAsset',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('created',
                 models.DateTimeField(auto_now_add=True,
                                      verbose_name='created')),
                ('modified',
                 models.DateTimeField(auto_now=True,
                                      verbose_name='last modified')),
                ('title',
                 common.models.TruncatingCharField(
                     blank=True,
                     db_index=True,
                     help_text=
                     "If left empty, a title will be generated from the file's metadata.",
                     max_length=255,
                     verbose_name='title')),
                ('file_basename', models.CharField(max_length=512)),
                ('file',
                 models.FileField(
                     blank=True,
                     help_text=
                     'You can provide either an uploaded audio file or a URL to an external asset.',
                     max_length=512,
                     upload_to=common.models.audio_asset_file_upload_to,
                     verbose_name='audio file')),
                ('duration',
                 models.DurationField(default=datetime.timedelta(0),
                                      verbose_name='Audio duration')),
                ('fingerprint', models.UUIDField(db_index=True, null=True)),
                ('status',
                 models.CharField(
                     choices=[('-', 'processing queued'), ('p', 'processing'),
                              ('f', 'processing failed'),
                              ('r', 'ready for play')],
                     db_index=True,
                     default='-',
                     help_text=
                     'You will be able to edit this asset when status is "ready for play."',
                     max_length=1,
                     verbose_name='status')),
                ('task_id', models.UUIDField(null=True)),
                ('artist',
                 common.models.TruncatingCharField(
                     blank=True,
                     help_text=
                     "If left empty, an artist will be generated from the file's metadata.",
                     max_length=255,
                     verbose_name='artist')),
                ('album',
                 common.models.TruncatingCharField(
                     blank=True,
                     help_text=
                     "If left empty, an album will be generated from the file's metadata.",
                     max_length=255,
                     verbose_name='album')),
                ('title_normalized',
                 common.models.TruncatingCharField(db_index=True,
                                                   max_length=255)),
                ('artist_normalized',
                 common.models.TruncatingCharField(db_index=True,
                                                   max_length=255)),
                ('album_normalized',
                 common.models.TruncatingCharField(db_index=True,
                                                   max_length=255)),
                ('uploader',
                 models.ForeignKey(
                     null=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     to=settings.AUTH_USER_MODEL,
                     verbose_name='uploader')),
            ],
            options={
                'verbose_name': 'audio asset',
                'verbose_name_plural': 'audio assets',
                'ordering': ('title', 'artist', 'album', 'id'),
            },
            bases=(dirtyfields.dirtyfields.DirtyFieldsMixin, models.Model),
        ),
        migrations.CreateModel(
            name='Rotator',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('name',
                 models.CharField(max_length=100,
                                  unique=True,
                                  verbose_name='name')),
            ],
            options={
                'ordering': ('name', ),
            },
        ),
        migrations.CreateModel(
            name='Stopset',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('name',
                 models.CharField(max_length=100,
                                  unique=True,
                                  verbose_name='name')),
                ('weight',
                 models.FloatField(
                     default=1.0,
                     help_text=
                     "The weight (ie selection bias) for how likely random selection from this playlist/stopset occurs, eg '1.0' is just as likely as all others, '2.0' is 2x as likely, '3.0' is 3x as likely, '0.5' half as likely, and so on. If unsure, leave as '1.0'.",
                     validators=[
                         django.core.validators.MinValueValidator(0.0)
                     ],
                     verbose_name='random weight')),
                ('is_active',
                 models.BooleanField(
                     default=True,
                     help_text=
                     'Whether tracks from this playlist/stopset will be selected. You may want to enable special playlists/stopsets at certain times, for example during the holidays.',
                     verbose_name='currently active')),
            ],
            options={
                'ordering': ('name', ),
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='StopsetRotator',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('rotator',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='stopset_rotators',
                                   to='autodj.rotator')),
                ('stopset',
                 models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
                                   related_name='stopset_rotators',
                                   to='autodj.stopset')),
            ],
            options={
                'verbose_name': 'rotator in stop set relationship',
                'verbose_name_plural': 'rotator in stop set relationships',
                'ordering': ('id', ),
            },
        ),
        migrations.CreateModel(
            name='RotatorAsset',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('created',
                 models.DateTimeField(auto_now_add=True,
                                      verbose_name='created')),
                ('modified',
                 models.DateTimeField(auto_now=True,
                                      verbose_name='last modified')),
                ('title',
                 common.models.TruncatingCharField(
                     blank=True,
                     db_index=True,
                     help_text=
                     "If left empty, a title will be generated from the file's metadata.",
                     max_length=255,
                     verbose_name='title')),
                ('file_basename', models.CharField(max_length=512)),
                ('file',
                 models.FileField(
                     blank=True,
                     help_text=
                     'You can provide either an uploaded audio file or a URL to an external asset.',
                     max_length=512,
                     upload_to=common.models.audio_asset_file_upload_to,
                     verbose_name='audio file')),
                ('duration',
                 models.DurationField(default=datetime.timedelta(0),
                                      verbose_name='Audio duration')),
                ('fingerprint', models.UUIDField(db_index=True, null=True)),
                ('status',
                 models.CharField(
                     choices=[('-', 'processing queued'), ('p', 'processing'),
                              ('f', 'processing failed'),
                              ('r', 'ready for play')],
                     db_index=True,
                     default='-',
                     help_text=
                     'You will be able to edit this asset when status is "ready for play."',
                     max_length=1,
                     verbose_name='status')),
                ('task_id', models.UUIDField(null=True)),
                ('uploader',
                 models.ForeignKey(
                     null=True,
                     on_delete=django.db.models.deletion.SET_NULL,
                     to=settings.AUTH_USER_MODEL,
                     verbose_name='uploader')),
            ],
            options={
                'verbose_name': 'rotator asset',
                'verbose_name_plural': 'rotator assets',
                'ordering': ('title', 'id'),
            },
            bases=(dirtyfields.dirtyfields.DirtyFieldsMixin, models.Model),
        ),
        migrations.AddField(
            model_name='rotator',
            name='rotator_assets',
            field=models.ManyToManyField(blank=True,
                                         db_index=True,
                                         related_name='rotators',
                                         to='autodj.RotatorAsset',
                                         verbose_name='rotator assets'),
        ),
        migrations.CreateModel(
            name='Playlist',
            fields=[
                ('id',
                 models.BigAutoField(auto_created=True,
                                     primary_key=True,
                                     serialize=False,
                                     verbose_name='ID')),
                ('name',
                 models.CharField(max_length=100,
                                  unique=True,
                                  verbose_name='name')),
                ('weight',
                 models.FloatField(
                     default=1.0,
                     help_text=
                     "The weight (ie selection bias) for how likely random selection from this playlist/stopset occurs, eg '1.0' is just as likely as all others, '2.0' is 2x as likely, '3.0' is 3x as likely, '0.5' half as likely, and so on. If unsure, leave as '1.0'.",
                     validators=[
                         django.core.validators.MinValueValidator(0.0)
                     ],
                     verbose_name='random weight')),
                ('is_active',
                 models.BooleanField(
                     default=True,
                     help_text=
                     'Whether tracks from this playlist/stopset will be selected. You may want to enable special playlists/stopsets at certain times, for example during the holidays.',
                     verbose_name='currently active')),
                ('audio_assets',
                 models.ManyToManyField(blank=True,
                                        db_index=True,
                                        related_name='playlists',
                                        to='autodj.AudioAsset',
                                        verbose_name='audio assets')),
            ],
            options={
                'ordering': ('name', ),
                'abstract': False,
            },
        ),
    ]