Files
pagasis/backend/attendance/migrations/0001_initial.py
T
2025-10-15 23:45:32 -06:00

52 lines
3.0 KiB
Python

# Generated by Django 5.2.6 on 2025-09-24 00:40
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('authentication', '0001_initial'),
('events', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Attendance',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('timestamp', models.DateTimeField(auto_now_add=True, verbose_name='Hora de registro')),
('registration_method', models.CharField(choices=[('manual', 'Registro Manual'), ('barcode', 'Código de Barras'), ('external', 'Usuario Externo')], default='manual', max_length=10, verbose_name='Método de registro')),
('notes', models.TextField(blank=True, null=True, verbose_name='Notas adicionales')),
('is_valid', models.BooleanField(default=True, verbose_name='Asistencia válida')),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.event', verbose_name='Evento')),
('external_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='events.externaluser', verbose_name='Usuario Externo')),
('registered_by', models.ForeignKey(limit_choices_to={'user_type': 'teacher'}, on_delete=django.db.models.deletion.CASCADE, related_name='registered_attendances', to='authentication.userprofile', verbose_name='Registrado por')),
('student', models.ForeignKey(blank=True, limit_choices_to={'user_type': 'student'}, null=True, on_delete=django.db.models.deletion.CASCADE, to='authentication.userprofile', verbose_name='Estudiante')),
],
options={
'verbose_name': 'Asistencia',
'verbose_name_plural': 'Asistencias',
'ordering': ['-timestamp'],
},
),
migrations.CreateModel(
name='AttendanceStats',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('total_events', models.IntegerField(default=0, verbose_name='Total de eventos')),
('attended_events', models.IntegerField(default=0, verbose_name='Eventos asistidos')),
('attendance_percentage', models.FloatField(default=0.0, verbose_name='Porcentaje de asistencia')),
('last_updated', models.DateTimeField(auto_now=True, verbose_name='Última actualización')),
('student', models.OneToOneField(limit_choices_to={'user_type': 'student'}, on_delete=django.db.models.deletion.CASCADE, to='authentication.userprofile', verbose_name='Estudiante')),
],
options={
'verbose_name': 'Estadísticas de asistencia',
'verbose_name_plural': 'Estadísticas de asistencia',
},
),
]