You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
5.4 KiB
82 lines
5.4 KiB
# 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'),
|
|
),
|
|
]
|