# Generated by Django 5.2.7 on 2026-05-14 17:19 import django.db.models.deletion import django.utils.timezone from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('core', '0013_add_site_report'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Absence', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateField(default=django.utils.timezone.now)), ('reason', models.CharField(choices=[('sick', 'Sick'), ('family', 'Family Responsibility'), ('annual', 'Annual Leave'), ('unpaid', 'Personal / Unpaid Leave'), ('iod', 'Injury on Duty'), ('suspension', 'Suspension'), ('absconded', 'Absconded'), ('other', 'Other')], max_length=20)), ('notes', models.TextField(blank=True, help_text='Free-form context (e.g. "flu, doctor\'s note", "bus broke down").')), ('is_paid', models.BooleanField(default=False, help_text='Tick to pay the worker their daily rate for this day.')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('logged_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='absences_logged', to=settings.AUTH_USER_MODEL)), ('payroll_adjustment', models.OneToOneField(blank=True, help_text='Auto-created when is_paid=True. Cleared if is_paid is unchecked.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='absence', to='core.payrolladjustment')), ('worker', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='absences', to='core.worker')), ], options={ 'ordering': ['-date', '-created_at'], 'unique_together': {('worker', 'date')}, }, ), ]