# Generated by Django 5.2.3 on 2025-10-27 21:01 import django.db.models.deletion import uuid from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('core', '0004_historicaluser_bio_historicaluser_email_verified_and_more'), ('hr', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='LeaveBalance', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('year', models.PositiveIntegerField(verbose_name='Year')), ('leave_type', models.CharField(choices=[('ANNUAL', 'Annual Leave'), ('SICK', 'Sick Leave'), ('EMERGENCY', 'Emergency Leave'), ('UNPAID', 'Unpaid Leave'), ('MATERNITY', 'Maternity Leave'), ('PATERNITY', 'Paternity Leave'), ('STUDY', 'Study Leave'), ('OTHER', 'Other')], max_length=20, verbose_name='Leave Type')), ('total_days', models.DecimalField(decimal_places=1, default=0, max_digits=5, verbose_name='Total Days Allocated')), ('used_days', models.DecimalField(decimal_places=1, default=0, max_digits=5, verbose_name='Used Days')), ('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='leave_balances', to=settings.AUTH_USER_MODEL, verbose_name='Employee')), ('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_related', to='core.tenant', verbose_name='Tenant')), ], options={ 'verbose_name': 'Leave Balance', 'verbose_name_plural': 'Leave Balances', 'ordering': ['employee', 'year', 'leave_type'], 'indexes': [models.Index(fields=['employee', 'year'], name='hr_leavebal_employe_38d436_idx'), models.Index(fields=['tenant', 'year'], name='hr_leavebal_tenant__9c442c_idx')], 'unique_together': {('employee', 'year', 'leave_type', 'tenant')}, }, ), migrations.CreateModel( name='LeaveRequest', fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('leave_type', models.CharField(choices=[('ANNUAL', 'Annual Leave'), ('SICK', 'Sick Leave'), ('EMERGENCY', 'Emergency Leave'), ('UNPAID', 'Unpaid Leave'), ('MATERNITY', 'Maternity Leave'), ('PATERNITY', 'Paternity Leave'), ('STUDY', 'Study Leave'), ('OTHER', 'Other')], max_length=20, verbose_name='Leave Type')), ('start_date', models.DateField(verbose_name='Start Date')), ('end_date', models.DateField(verbose_name='End Date')), ('days_requested', models.PositiveIntegerField(default=1, verbose_name='Days Requested')), ('reason', models.TextField(verbose_name='Reason')), ('status', models.CharField(choices=[('PENDING', 'Pending'), ('APPROVED', 'Approved'), ('REJECTED', 'Rejected'), ('CANCELLED', 'Cancelled')], default='PENDING', max_length=20, verbose_name='Status')), ('reviewed_at', models.DateTimeField(blank=True, null=True, verbose_name='Reviewed At')), ('reviewer_comments', models.TextField(blank=True, verbose_name='Reviewer Comments')), ('attachment', models.FileField(blank=True, help_text='Medical certificate or supporting document', null=True, upload_to='leave_requests/%Y/%m/', verbose_name='Attachment')), ('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='leave_requests', to=settings.AUTH_USER_MODEL, verbose_name='Employee')), ('reviewed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='reviewed_leave_requests', to=settings.AUTH_USER_MODEL, verbose_name='Reviewed By')), ('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_related', to='core.tenant', verbose_name='Tenant')), ], options={ 'verbose_name': 'Leave Request', 'verbose_name_plural': 'Leave Requests', 'ordering': ['-created_at'], 'indexes': [models.Index(fields=['employee', 'status'], name='hr_leavereq_employe_1b7929_idx'), models.Index(fields=['start_date', 'end_date'], name='hr_leavereq_start_d_9e9e54_idx'), models.Index(fields=['tenant', 'status'], name='hr_leavereq_tenant__94948b_idx')], }, ), ]