# Generated by Django 5.2.7 on 2025-10-27 10:50 import django.core.validators import django.db.models.deletion import uuid from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("core", "0001_initial"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="Attendance", 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")), ("date", models.DateField(verbose_name="Date")), ("check_in", models.TimeField(blank=True, null=True, verbose_name="Check In")), ("check_out", models.TimeField(blank=True, null=True, verbose_name="Check Out")), ( "hours_worked", models.DecimalField( blank=True, decimal_places=2, max_digits=4, null=True, validators=[ django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(24), ], verbose_name="Hours Worked", ), ), ( "status", models.CharField( choices=[ ("PRESENT", "Present"), ("LATE", "Late"), ("ABSENT", "Absent"), ("HALF_DAY", "Half Day"), ("LEAVE", "On Leave"), ], default="PRESENT", max_length=20, verbose_name="Status", ), ), ("notes", models.TextField(blank=True, verbose_name="Notes")), ( "employee", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="attendances", 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": "Attendance", "verbose_name_plural": "Attendance Records", "ordering": ["-date", "employee"], "indexes": [ models.Index( fields=["employee", "date"], name="hr_attendan_employe_c63029_idx" ), models.Index(fields=["date", "status"], name="hr_attendan_date_36f853_idx"), models.Index(fields=["tenant", "date"], name="hr_attendan_tenant__8c7267_idx"), ], "unique_together": {("employee", "date", "tenant")}, }, ), migrations.CreateModel( name="Holiday", 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")), ("name", models.CharField(max_length=200, verbose_name="Name")), ("date", models.DateField(verbose_name="Date")), ( "is_recurring", models.BooleanField( default=False, help_text="If true, this holiday repeats annually", verbose_name="Is Recurring", ), ), ("description", models.TextField(blank=True, verbose_name="Description")), ( "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": "Holiday", "verbose_name_plural": "Holidays", "ordering": ["date"], "indexes": [ models.Index(fields=["date", "tenant"], name="hr_holiday_date_90f95f_idx"), models.Index( fields=["is_recurring", "tenant"], name="hr_holiday_is_recu_b8ceb6_idx" ), ], }, ), migrations.CreateModel( name="Schedule", 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")), ( "day_of_week", models.CharField( choices=[ ("MON", "Monday"), ("TUE", "Tuesday"), ("WED", "Wednesday"), ("THU", "Thursday"), ("FRI", "Friday"), ("SAT", "Saturday"), ("SUN", "Sunday"), ], max_length=3, verbose_name="Day of Week", ), ), ("start_time", models.TimeField(verbose_name="Start Time")), ("end_time", models.TimeField(verbose_name="End Time")), ("is_active", models.BooleanField(default=True, verbose_name="Is Active")), ( "employee", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="schedules", 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": "Schedule", "verbose_name_plural": "Schedules", "ordering": ["employee", "day_of_week"], "indexes": [ models.Index( fields=["employee", "is_active"], name="hr_schedule_employe_acd604_idx" ), models.Index( fields=["day_of_week", "is_active"], name="hr_schedule_day_of__8d9b7e_idx" ), models.Index( fields=["tenant", "is_active"], name="hr_schedule_tenant__73191b_idx" ), ], "unique_together": {("employee", "day_of_week", "tenant")}, }, ), ]