66 lines
5.0 KiB
Python
66 lines
5.0 KiB
Python
# 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')],
|
|
},
|
|
),
|
|
]
|