forked from val-lop20/Pagina-de-Asistencia-MAC
67 lines
4.4 KiB
Python
67 lines
4.4 KiB
Python
# Generated by Django 5.2.6 on 2025-09-24 00:32
|
|
|
|
import django.db.models.deletion
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('authentication', '0001_initial'),
|
|
]
|
|
|
|
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, verbose_name='Título de la ponencia')),
|
|
('description', models.TextField(verbose_name='Descripción')),
|
|
('event_type', models.CharField(choices=[('conference', 'Conferencia'), ('workshop', 'Taller'), ('panel', 'Mesa Redonda'), ('seminar', 'Seminario')], default='conference', max_length=20, verbose_name='Tipo de evento')),
|
|
('modality', models.CharField(choices=[('presencial', 'Presencial'), ('online', 'En línea'), ('hybrid', 'Híbrido')], default='presencial', max_length=15, verbose_name='Modalidad')),
|
|
('speaker', models.CharField(max_length=200, verbose_name='Ponente')),
|
|
('date', models.DateField(verbose_name='Fecha')),
|
|
('start_time', models.TimeField(verbose_name='Hora de inicio')),
|
|
('end_time', models.TimeField(verbose_name='Hora de fin')),
|
|
('location', models.CharField(help_text='Para eventos presenciales: aula/salón. Para eventos en línea: enlace o plataforma', max_length=200, verbose_name='Ubicación/Plataforma')),
|
|
('max_capacity', models.IntegerField(default=100, verbose_name='Capacidad máxima')),
|
|
('is_active', models.BooleanField(default=True, verbose_name='Evento activo')),
|
|
('requires_registration', models.BooleanField(default=False, verbose_name='Requiere registro previo')),
|
|
('meeting_link', models.URLField(blank=True, help_text='Para eventos en línea o híbridos', null=True, verbose_name='Enlace de reunión')),
|
|
('meeting_id', models.CharField(blank=True, help_text='Código de sala/reunión', max_length=50, null=True, verbose_name='ID de reunión')),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('created_by', models.ForeignKey(limit_choices_to={'user_type': 'teacher'}, on_delete=django.db.models.deletion.CASCADE, to='authentication.userprofile', verbose_name='Creado por')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Evento/Ponencia',
|
|
'verbose_name_plural': 'Eventos/Ponencias',
|
|
'ordering': ['date', 'start_time'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ExternalUser',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('full_name', models.CharField(max_length=200, verbose_name='Nombre completo')),
|
|
('email', models.EmailField(max_length=254, verbose_name='Correo electrónico')),
|
|
('phone', models.CharField(blank=True, max_length=15, null=True, verbose_name='Teléfono')),
|
|
('institution', models.CharField(max_length=200, verbose_name='Institución de procedencia')),
|
|
('position', models.CharField(blank=True, max_length=100, null=True, verbose_name='Cargo/Posición')),
|
|
('reason', models.TextField(verbose_name='Motivo de asistencia')),
|
|
('temporary_id', models.CharField(max_length=20, unique=True, verbose_name='ID temporal')),
|
|
('status', models.CharField(choices=[('pending', 'Pendiente'), ('approved', 'Aprobado'), ('rejected', 'Rechazado')], default='pending', max_length=10, verbose_name='Estado de aprobación')),
|
|
('rejection_reason', models.TextField(blank=True, null=True, verbose_name='Motivo de rechazo')),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('processed_at', models.DateTimeField(blank=True, null=True)),
|
|
('approved_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='authentication.userprofile', verbose_name='Aprobado por')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Usuario Externo',
|
|
'verbose_name_plural': 'Usuarios Externos',
|
|
'ordering': ['-created_at'],
|
|
},
|
|
),
|
|
]
|