38086-vm/hr/migrations/0001_initial.py
2026-02-05 13:35:04 +00:00

90 lines
5.7 KiB
Python

# Generated by Django 5.2.7 on 2026-02-05 13:13
import django.db.models.deletion
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Department',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name_en', models.CharField(max_length=100, verbose_name='Name (English)')),
('name_ar', models.CharField(max_length=100, verbose_name='Name (Arabic)')),
('description', models.TextField(blank=True, verbose_name='Description')),
],
),
migrations.CreateModel(
name='Employee',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('first_name', models.CharField(max_length=100, verbose_name='First Name')),
('last_name', models.CharField(max_length=100, verbose_name='Last Name')),
('email', models.EmailField(max_length=254, unique=True, verbose_name='Email')),
('phone', models.CharField(max_length=20, verbose_name='Phone Number')),
('gender', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], default='M', max_length=1, verbose_name='Gender')),
('hire_date', models.DateField(default=django.utils.timezone.now, verbose_name='Hire Date')),
('salary', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Basic Salary')),
('status', models.CharField(choices=[('active', 'Active'), ('on_leave', 'On Leave'), ('terminated', 'Terminated'), ('resigned', 'Resigned')], default='active', max_length=20, verbose_name='Status')),
('address', models.TextField(blank=True, verbose_name='Address')),
('date_of_birth', models.DateField(blank=True, null=True, verbose_name='Date of Birth')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='employees', to='hr.department', verbose_name='Department')),
('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='employee_profile', to=settings.AUTH_USER_MODEL, verbose_name='User Account')),
],
),
migrations.CreateModel(
name='Attendance',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(default=django.utils.timezone.now, 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')),
('notes', models.TextField(blank=True, verbose_name='Notes')),
('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attendances', to='hr.employee', verbose_name='Employee')),
],
options={
'ordering': ['-date'],
},
),
migrations.CreateModel(
name='JobPosition',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title_en', models.CharField(max_length=100, verbose_name='Job Title (English)')),
('title_ar', models.CharField(max_length=100, verbose_name='Job Title (Arabic)')),
('department', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='positions', to='hr.department', verbose_name='Department')),
],
),
migrations.AddField(
model_name='employee',
name='job_position',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='employees', to='hr.jobposition', verbose_name='Job Position'),
),
migrations.CreateModel(
name='LeaveRequest',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('leave_type', models.CharField(choices=[('annual', 'Annual Leave'), ('sick', 'Sick Leave'), ('unpaid', 'Unpaid Leave'), ('maternity', 'Maternity Leave'), ('other', 'Other')], default='annual', max_length=20, verbose_name='Leave Type')),
('start_date', models.DateField(verbose_name='Start Date')),
('end_date', models.DateField(verbose_name='End Date')),
('reason', models.TextField(blank=True, verbose_name='Reason')),
('status', models.CharField(choices=[('pending', 'Pending'), ('approved', 'Approved'), ('rejected', 'Rejected')], default='pending', max_length=20, verbose_name='Status')),
('created_at', models.DateTimeField(auto_now_add=True)),
('approved_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='approved_leaves', to=settings.AUTH_USER_MODEL, verbose_name='Approved By')),
('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='leave_requests', to='hr.employee', verbose_name='Employee')),
],
),
]