# Generated by Django 6.0.6 on 2026-08-03 16:22 import django.db.models.deletion import news.models import uuid from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ('club', '0017_club_season_duration_months_club_season_start'), ('members', '0003_family_created_family_modified_member_created_and_more'), ('teams', '0006_alter_position_ordering'), ] operations = [ migrations.CreateModel( name='News', fields=[ ('created', models.DateTimeField(auto_now_add=True, verbose_name='created')), ('modified', models.DateTimeField(auto_now=True, verbose_name='modified')), ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('title', models.CharField(max_length=255, verbose_name='title')), ('slug', models.SlugField(blank=True, max_length=255, verbose_name='slug')), ('body', models.TextField(verbose_name='body')), ('visibility', models.CharField(choices=[('internal', 'internal'), ('external', 'external'), ('both', 'both')], default='internal', max_length=10, verbose_name='visibility')), ('status', models.CharField(choices=[('draft', 'draft'), ('published', 'published')], default='draft', max_length=10, verbose_name='status')), ('published_at', models.DateTimeField(blank=True, help_text='When this goes live. In the future to schedule it ahead of time.', null=True, verbose_name='publish date')), ('club', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)ss', to='club.club')), ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='news_items', to='members.member', verbose_name='created by')), ('teams', models.ManyToManyField(blank=True, help_text='Leave empty for club-wide news.', related_name='news_items', to='teams.team', verbose_name='teams')), ], options={ 'verbose_name': 'news item', 'verbose_name_plural': 'news items', 'ordering': ['-created'], }, ), migrations.CreateModel( name='NewsPhoto', fields=[ ('created', models.DateTimeField(auto_now_add=True, verbose_name='created')), ('modified', models.DateTimeField(auto_now=True, verbose_name='modified')), ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('image', models.ImageField(upload_to=news.models.news_photo_path, verbose_name='image')), ('is_main', models.BooleanField(default=False, verbose_name='main picture')), ('ordering', models.PositiveSmallIntegerField(default=0, verbose_name='ordering')), ('news_item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='photos', to='news.news', verbose_name='news item')), ], options={ 'verbose_name': 'news photo', 'verbose_name_plural': 'news photos', 'ordering': ['ordering', 'created'], }, ), migrations.AddConstraint( model_name='news', constraint=models.UniqueConstraint(fields=('club', 'slug'), name='unique_news_slug_per_club'), ), migrations.AddConstraint( model_name='newsphoto', constraint=models.UniqueConstraint(condition=models.Q(('is_main', True)), fields=('news_item',), name='unique_main_photo_per_news_item'), ), ]