# Generated by Django 4.2.30 on 2026-09-15 12:32 from django.conf import settings from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [ ('profiles', '0001_initial'), 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=255, verbose_name='Event Title')), ('slug', models.SlugField(blank=True, max_length=280, unique=True, verbose_name='Slug')), ('description', models.TextField(verbose_name='Event Description')), ('category', models.CharField(choices=[('religious', 'Religious'), ('educational', 'Educational'), ('cultural', 'Cultural'), ('counseling', 'Counseling'), ('conference', 'Conference'), ('workshop', 'Workshop')], default='cultural', max_length=30, verbose_name='Category')), ('event_date', models.DateField(verbose_name='Event Date')), ('start_time', models.TimeField(verbose_name='Start Time')), ('end_time', models.TimeField(blank=True, null=True, verbose_name='End Time')), ('speaker_name', models.CharField(blank=True, max_length=255, verbose_name='Speaker Name')), ('speaker_title', models.CharField(blank=True, max_length=255, verbose_name='Speaker Title / Affiliation')), ('speaker_avatar', models.ImageField(blank=True, null=True, upload_to='events/speakers/', verbose_name='Speaker Avatar')), ('location_type', models.CharField(choices=[('in_person', 'In Person'), ('online', 'Online'), ('hybrid', 'Hybrid')], default='in_person', max_length=20, verbose_name='Location Type')), ('venue_address', models.CharField(blank=True, max_length=500, verbose_name='Venue Address')), ('online_meeting_url', models.URLField(blank=True, verbose_name='Online Meeting Link')), ('cover_image', models.ImageField(blank=True, null=True, upload_to='events/covers/', verbose_name='Cover Image')), ('capacity', models.PositiveIntegerField(default=100, verbose_name='Capacity Limit')), ('registration_count', models.PositiveIntegerField(default=0, verbose_name='Current Registrations')), ('is_active', models.BooleanField(default=True, verbose_name='Is Active')), ('is_featured', models.BooleanField(default=False, verbose_name='Is Featured')), ('tags', models.JSONField(blank=True, default=list, verbose_name='Tags')), ('language', models.CharField(choices=[('fa', 'Persian'), ('ar', 'Arabic'), ('en', 'English'), ('ur', 'Urdu'), ('fr', 'French')], default='fa', max_length=10, verbose_name='Language')), ('created_at', models.DateTimeField(auto_now_add=True)), ('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_events', to=settings.AUTH_USER_MODEL, verbose_name='Created By')), ('organizer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='events', to='profiles.institution', verbose_name='Organizer Institution')), ], options={ 'verbose_name': 'Event', 'verbose_name_plural': 'Events', 'ordering': ['event_date', 'start_time'], }, ), migrations.CreateModel( name='EventRegistration', 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=20, verbose_name='Status')), ('notes', models.TextField(blank=True, verbose_name='Participant Notes')), ('registered_at', models.DateTimeField(auto_now_add=True)), ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='registrations', to='events.event', verbose_name='Event')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_registrations', to=settings.AUTH_USER_MODEL, verbose_name='Participant')), ], options={ 'verbose_name': 'Event Registration', 'verbose_name_plural': 'Event Registrations', 'ordering': ['-registered_at'], 'unique_together': {('event', 'user')}, }, ), migrations.AddIndex( model_name='event', index=models.Index(fields=['event_date', 'is_active'], name='events_even_event_d_835174_idx'), ), migrations.AddIndex( model_name='event', index=models.Index(fields=['category', 'is_active'], name='events_even_categor_73067a_idx'), ), migrations.AddIndex( model_name='event', index=models.Index(fields=['organizer', 'is_active'], name='events_even_organiz_d3a1ac_idx'), ), ]