# Generated by Django 4.2.19 on 2025-03-07 12:25

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone


class Migration(migrations.Migration):

    initial = True

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

    operations = [
        migrations.CreateModel(
            name='Event',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('description', models.TextField()),
                ('date_time', models.DateTimeField()),
                ('end_time', models.DateTimeField(blank=True, null=True)),
                ('venue', models.CharField(max_length=200)),
                ('status', models.CharField(choices=[('upcoming', 'Upcoming'), ('ongoing', 'Ongoing'), ('archived', 'Archived')], default='upcoming', max_length=10)),
                ('registration_link', models.URLField(blank=True)),
                ('banner_image', models.ImageField(blank=True, null=True, upload_to='event_banners/')),
            ],
        ),
        migrations.CreateModel(
            name='PublicationType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=50, unique=True)),
                ('icon', models.CharField(default='bi-file-earmark', help_text='Bootstrap icon class (e.g., bi-file-earmark-pdf)', max_length=50)),
                ('allowed_extensions', models.CharField(default='.pdf,.doc,.docx,.ppt,.pptx', help_text='Comma-separated list of allowed file extensions (e.g., .pdf,.doc,.ppt)', max_length=200)),
            ],
            options={
                'verbose_name': 'Publication Type',
                'verbose_name_plural': 'Publication Types',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='Role',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(choices=[('admin', 'Admin'), ('editor', 'Editor'), ('attendee', 'Attendee')], max_length=50, unique=True)),
                ('permissions', models.JSONField(blank=True, default=dict, help_text='Store role-specific permissions')),
            ],
            options={
                'verbose_name': 'Role',
                'verbose_name_plural': 'Roles',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='UserProfile',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('bio', models.TextField(blank=True)),
                ('organization', models.CharField(blank=True, max_length=200)),
                ('phone_number', models.CharField(blank=True, max_length=20)),
                ('profile_picture', models.ImageField(blank=True, upload_to='profile_pictures/')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.role')),
                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.CreateModel(
            name='Speaker',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('bio', models.TextField()),
                ('photo', models.ImageField(blank=True, upload_to='speaker_photos/')),
                ('organization', models.CharField(blank=True, max_length=200)),
                ('website', models.URLField(blank=True)),
                ('social_media', models.JSONField(blank=True, default=dict)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('events', models.ManyToManyField(related_name='speakers', to='events.event')),
            ],
        ),
        migrations.CreateModel(
            name='Publication',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=255)),
                ('abstract', models.TextField(help_text='Brief description of the publication')),
                ('file', models.FileField(help_text='Upload your publication file', upload_to='publications/')),
                ('published_at', models.DateTimeField(auto_now_add=True, help_text='When this publication was made available')),
                ('is_public', models.BooleanField(default=True, help_text='Make this publication visible to all users')),
                ('author', models.ForeignKey(help_text='Who authored/uploaded this publication', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
                ('event', models.ForeignKey(blank=True, help_text='Optional: Associate this publication with an event', null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.event')),
                ('publication_type', models.ForeignKey(help_text='Type of publication', on_delete=django.db.models.deletion.PROTECT, to='events.publicationtype')),
            ],
            options={
                'verbose_name': 'Publication',
                'verbose_name_plural': 'Publications',
                'ordering': ['-published_at'],
            },
        ),
        migrations.CreateModel(
            name='Gallery',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('image', models.ImageField(upload_to='gallery_images/')),
                ('caption', models.CharField(max_length=200)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='gallery', to='events.event')),
            ],
        ),
        migrations.CreateModel(
            name='CallForProposal',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('description', models.TextField()),
                ('submission_deadline', models.DateTimeField()),
                ('status', models.CharField(choices=[('open', 'Open'), ('closed', 'Closed'), ('under_review', 'Under Review')], default='open', max_length=15)),
                ('created_at', models.DateTimeField(default=django.utils.timezone.now)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_cfps', to=settings.AUTH_USER_MODEL)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cfps', to='events.event')),
            ],
        ),
        migrations.CreateModel(
            name='Agenda',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('session_title', models.CharField(max_length=200)),
                ('session_time', models.DateTimeField()),
                ('description', models.TextField()),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='agendas', to='events.event')),
                ('speaker', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='agendas', to='events.speaker')),
            ],
        ),
        migrations.CreateModel(
            name='Registration',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('status', models.CharField(choices=[('registered', 'Registered'), ('attended', 'Attended'), ('cancelled', 'Cancelled')], default='registered', max_length=10)),
                ('registration_date', models.DateTimeField(auto_now_add=True)),
                ('attendance_date', models.DateTimeField(blank=True, null=True)),
                ('notes', models.TextField(blank=True)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='registrations', to='events.event')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'unique_together': {('event', 'user')},
            },
        ),
        migrations.CreateModel(
            name='Proposal',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('abstract', models.TextField()),
                ('presentation_slides', models.FileField(blank=True, help_text='Upload your presentation slides (PDF, PPT, or PPTX)', null=True, upload_to='proposal_slides/')),
                ('supporting_document', models.FileField(blank=True, help_text='Additional supporting documents (PDF format)', null=True, upload_to='proposal_documents/')),
                ('presentation_type', models.CharField(choices=[('talk', 'Talk'), ('workshop', 'Workshop'), ('panel', 'Panel Discussion'), ('lightning', 'Lightning Talk')], max_length=10)),
                ('additional_notes', models.TextField(blank=True)),
                ('status', models.CharField(choices=[('submitted', 'Submitted'), ('under_review', 'Under Review'), ('accepted', 'Accepted'), ('rejected', 'Rejected')], default='submitted', max_length=15)),
                ('submitted_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('reviewer_notes', models.TextField(blank=True)),
                ('reviewed_at', models.DateTimeField(blank=True, null=True)),
                ('is_published', models.BooleanField(default=False, help_text='Make this document available in Publications')),
                ('publication_date', models.DateTimeField(blank=True, null=True)),
                ('cfp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='proposals', to='events.callforproposal')),
                ('reviewed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='reviewed_proposals', to=settings.AUTH_USER_MODEL)),
                ('submitter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='submitted_proposals', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'Proposal',
                'verbose_name_plural': 'Proposals',
                'ordering': ['-submitted_at'],
                'unique_together': {('title', 'submitter', 'cfp')},
            },
        ),
    ]
