Files
ihrm/base/migrations/0001_initial.py

2076 lines
74 KiB
Python

# Generated by Django 5.2.7 on 2025-10-25 14:02
import base.models
import django.core.validators
import django.db.models.deletion
import django.utils.timezone
import horilla.models
import simple_history.models
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="AnnouncementComment",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"comment",
models.TextField(max_length=255, null=True, verbose_name="Comment"),
),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="AnnouncementExpire",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("days", models.IntegerField(blank=True, default=30, null=True)),
],
),
migrations.CreateModel(
name="AnnouncementView",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("viewed", models.BooleanField(default=False)),
("created_at", models.DateTimeField(auto_now_add=True, null=True)),
],
),
migrations.CreateModel(
name="Attachment",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("file", models.FileField(upload_to=horilla.models.upload_path)),
],
),
migrations.CreateModel(
name="AttendanceAllowedIP",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("is_enabled", models.BooleanField(default=False)),
(
"additional_data",
models.JSONField(
blank=True,
default=base.models.default_additional_data,
null=True,
),
),
],
),
migrations.CreateModel(
name="BaserequestFile",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("file", models.FileField(upload_to=horilla.models.upload_path)),
],
),
migrations.CreateModel(
name="BiometricAttendance",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("is_installed", models.BooleanField(default=False)),
],
),
migrations.CreateModel(
name="Company",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("company", models.CharField(max_length=50, verbose_name="Name")),
("hq", models.BooleanField(default=False)),
("address", models.TextField(max_length=255)),
("country", models.CharField(max_length=50)),
("state", models.CharField(max_length=50)),
("city", models.CharField(max_length=50)),
("zip", models.CharField(max_length=20)),
(
"icon",
models.FileField(null=True, upload_to=horilla.models.upload_path),
),
("date_format", models.CharField(blank=True, max_length=30, null=True)),
("time_format", models.CharField(blank=True, max_length=20, null=True)),
],
options={
"verbose_name": "Company",
"verbose_name_plural": "Companies",
},
),
migrations.CreateModel(
name="CompanyLeaves",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"based_on_week",
models.CharField(
blank=True,
choices=[
("0", "First Week"),
("1", "Second Week"),
("2", "Third Week"),
("3", "Fourth Week"),
("4", "Fifth Week"),
],
max_length=100,
null=True,
verbose_name="Based On Week",
),
),
(
"based_on_week_day",
models.CharField(
choices=[
("0", "Monday"),
("1", "Tuesday"),
("2", "Wednesday"),
("3", "Thursday"),
("4", "Friday"),
("5", "Saturday"),
("6", "Sunday"),
],
max_length=100,
verbose_name="Based On Week Day",
),
),
],
options={
"verbose_name": "Company Leave",
"verbose_name_plural": "Company Leaves",
},
),
migrations.CreateModel(
name="DashboardEmployeeCharts",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"charts",
models.JSONField(
blank=True,
default=list,
null=True,
verbose_name="Excluded Charts",
),
),
],
options={
"verbose_name": "Dashboard Employee Charts",
"verbose_name_plural": "Dashboard Employee Charts",
},
),
migrations.CreateModel(
name="Department",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"department",
models.CharField(max_length=50, verbose_name="Department"),
),
],
options={
"verbose_name": "Department",
"verbose_name_plural": "Departments",
},
),
migrations.CreateModel(
name="DriverViewed",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"viewed",
models.CharField(
choices=[
("dashboard", "dashboard"),
("pipeline", "pipeline"),
("settings", "settings"),
],
max_length=10,
),
),
],
),
migrations.CreateModel(
name="DynamicEmailConfiguration",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"host",
models.CharField(
max_length=256, null=True, verbose_name="Email Host"
),
),
(
"port",
models.SmallIntegerField(null=True, verbose_name="Email Port"),
),
(
"from_email",
models.EmailField(
max_length=256, null=True, verbose_name="Default From Email"
),
),
(
"username",
models.CharField(
max_length=256, null=True, verbose_name="Email Host Username"
),
),
(
"display_name",
models.CharField(
max_length=256, null=True, verbose_name="Display Name"
),
),
(
"password",
models.CharField(
max_length=256,
null=True,
verbose_name="Email Authentication Password",
),
),
("use_tls", models.BooleanField(default=True, verbose_name="Use TLS")),
("use_ssl", models.BooleanField(default=False, verbose_name="Use SSL")),
(
"fail_silently",
models.BooleanField(default=False, verbose_name="Fail Silently"),
),
(
"is_primary",
models.BooleanField(
default=False, verbose_name="Primary Mail Server"
),
),
(
"use_dynamic_display_name",
models.BooleanField(
default=True,
help_text="By enabling this the display name will take from who triggered the mail",
),
),
(
"timeout",
models.SmallIntegerField(
null=True, verbose_name="Email Send Timeout (seconds)"
),
),
],
options={
"verbose_name": "Email Configuration",
},
),
migrations.CreateModel(
name="DynamicPagination",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"pagination",
models.IntegerField(
default=50,
validators=[django.core.validators.MinValueValidator(1)],
),
),
],
),
migrations.CreateModel(
name="EmailLog",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("subject", models.CharField(max_length=255)),
("body", models.TextField(max_length=255)),
("from_email", models.EmailField(max_length=254)),
("to", models.EmailField(max_length=254)),
(
"status",
models.CharField(
choices=[("sent", "Sent"), ("failed", "Failed")], max_length=6
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
],
),
migrations.CreateModel(
name="EmployeeShift",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("employee_shift", models.CharField(max_length=50)),
(
"weekly_full_time",
models.CharField(
blank=True,
default="40:00",
max_length=6,
null=True,
validators=[base.models.validate_time_format],
),
),
(
"full_time",
models.CharField(
default="200:00",
max_length=6,
validators=[base.models.validate_time_format],
),
),
],
options={
"verbose_name": "Employee Shift",
"verbose_name_plural": "Employee Shifts",
},
),
migrations.CreateModel(
name="EmployeeShiftDay",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"day",
models.CharField(
choices=[
("monday", "Monday"),
("tuesday", "Tuesday"),
("wednesday", "Wednesday"),
("thursday", "Thursday"),
("friday", "Friday"),
("saturday", "Saturday"),
("sunday", "Sunday"),
],
max_length=20,
),
),
],
options={
"verbose_name": "Employee Shift Day",
"verbose_name_plural": "Employee Shift Days",
},
),
migrations.CreateModel(
name="EmployeeShiftSchedule",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"minimum_working_hour",
models.CharField(
default="08:15",
max_length=5,
validators=[base.models.validate_time_format],
verbose_name="Minimum Working Hours",
),
),
("start_time", models.TimeField(null=True, verbose_name="Start Time")),
("end_time", models.TimeField(null=True, verbose_name="End Time")),
(
"is_night_shift",
models.BooleanField(default=False, verbose_name="Night Shift"),
),
(
"is_auto_punch_out_enabled",
models.BooleanField(
default=False,
help_text="Enable this to trigger automatic check out.",
verbose_name="Enable Automatic Check Out",
),
),
(
"auto_punch_out_time",
models.TimeField(
blank=True,
help_text="Time at which the horilla will automatically check out the employee attendance if they forget.",
null=True,
verbose_name="Automatic Check Out Time",
),
),
],
options={
"verbose_name": "Employee Shift Schedule",
"verbose_name_plural": "Employee Shift Schedules",
"ordering": [
models.Case(
models.When(day__day="monday", then=0),
models.When(day__day="tuesday", then=1),
models.When(day__day="wednesday", then=2),
models.When(day__day="thursday", then=3),
models.When(day__day="friday", then=4),
models.When(day__day="saturday", then=5),
models.When(day__day="sunday", then=6),
default=7,
)
],
},
),
migrations.CreateModel(
name="EmployeeType",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("employee_type", models.CharField(max_length=50)),
],
options={
"verbose_name": "Employee Type",
"verbose_name_plural": "Employee Types",
},
),
migrations.CreateModel(
name="HistoricalRotatingShiftAssign",
fields=[
(
"id",
models.BigIntegerField(
auto_created=True, blank=True, db_index=True, verbose_name="ID"
),
),
(
"created_at",
models.DateTimeField(
blank=True, editable=False, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"history_title",
models.CharField(blank=True, max_length=20, null=True),
),
("history_description", models.TextField(null=True)),
("history_highlight", models.BooleanField(default=False, null=True)),
(
"start_date",
models.DateField(
default=django.utils.timezone.now, verbose_name="Start Date"
),
),
(
"next_change_date",
models.DateField(null=True, verbose_name="Next Switch"),
),
(
"based_on",
models.CharField(
choices=[
("after", "After"),
("weekly", "Weekend"),
("monthly", "Monthly"),
],
max_length=10,
verbose_name="Based On",
),
),
(
"rotate_after_day",
models.IntegerField(
blank=True,
default=7,
null=True,
verbose_name="Rotate After Day",
),
),
(
"rotate_every_weekend",
models.CharField(
blank=True,
choices=[
("monday", "Monday"),
("tuesday", "Tuesday"),
("wednesday", "Wednesday"),
("thursday", "Thursday"),
("friday", "Friday"),
("saturday", "Saturday"),
("sunday", "Sunday"),
],
default="monday",
max_length=10,
null=True,
verbose_name="Rotate Every Weekend",
),
),
(
"rotate_every",
models.CharField(
blank=True,
choices=[
("1", "1"),
("2", "2"),
("3", "3"),
("4", "4"),
("5", "5"),
("6", "6"),
("7", "7"),
("8", "8"),
("9", "9"),
("10", "10"),
("11", "11"),
("12", "12"),
("13", "13"),
("14", "14"),
("15", "15"),
("16", "16"),
("17", "17"),
("18", "18"),
("19", "19"),
("20", "20"),
("21", "21"),
("22", "22"),
("23", "23"),
("24", "24"),
("25", "25"),
("26", "26"),
("27", "27"),
("28", "28"),
("29", "29"),
("30", "30"),
("31", "31"),
("last", "Last Day"),
],
default="1",
max_length=10,
null=True,
verbose_name="Rotate Every Month",
),
),
(
"additional_data",
models.JSONField(blank=True, default=dict, null=True),
),
("history_id", models.AutoField(primary_key=True, serialize=False)),
("history_date", models.DateTimeField(db_index=True)),
("history_change_reason", models.CharField(max_length=100, null=True)),
(
"history_type",
models.CharField(
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
max_length=1,
),
),
],
options={
"verbose_name": "historical Rotating Shift Assign",
"verbose_name_plural": "historical Rotating Shift Assigns",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="HistoricalRotatingWorkTypeAssign",
fields=[
(
"id",
models.BigIntegerField(
auto_created=True, blank=True, db_index=True, verbose_name="ID"
),
),
(
"created_at",
models.DateTimeField(
blank=True, editable=False, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"history_title",
models.CharField(blank=True, max_length=20, null=True),
),
("history_description", models.TextField(null=True)),
("history_highlight", models.BooleanField(default=False, null=True)),
(
"start_date",
models.DateField(
default=django.utils.timezone.now, verbose_name="Start Date"
),
),
(
"next_change_date",
models.DateField(null=True, verbose_name="Next Switch"),
),
(
"based_on",
models.CharField(
choices=[
("after", "After"),
("weekly", "Weekend"),
("monthly", "Monthly"),
],
max_length=10,
verbose_name="Based On",
),
),
(
"rotate_after_day",
models.IntegerField(default=7, verbose_name="Rotate After Day"),
),
(
"rotate_every_weekend",
models.CharField(
blank=True,
choices=[
("monday", "Monday"),
("tuesday", "Tuesday"),
("wednesday", "Wednesday"),
("thursday", "Thursday"),
("friday", "Friday"),
("saturday", "Saturday"),
("sunday", "Sunday"),
],
default="monday",
max_length=10,
null=True,
verbose_name="Rotate Every Weekend",
),
),
(
"rotate_every",
models.CharField(
choices=[
("1", "1"),
("2", "2"),
("3", "3"),
("4", "4"),
("5", "5"),
("6", "6"),
("7", "7"),
("8", "8"),
("9", "9"),
("10", "10"),
("11", "11"),
("12", "12"),
("13", "13"),
("14", "14"),
("15", "15"),
("16", "16"),
("17", "17"),
("18", "18"),
("19", "19"),
("20", "20"),
("21", "21"),
("22", "22"),
("23", "23"),
("24", "24"),
("25", "25"),
("26", "26"),
("27", "27"),
("28", "28"),
("29", "29"),
("30", "30"),
("31", "31"),
("last", "Last Day"),
],
default="1",
max_length=10,
verbose_name="Rotate Every Month",
),
),
(
"additional_data",
models.JSONField(blank=True, default=dict, null=True),
),
("history_id", models.AutoField(primary_key=True, serialize=False)),
("history_date", models.DateTimeField(db_index=True)),
("history_change_reason", models.CharField(max_length=100, null=True)),
(
"history_type",
models.CharField(
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
max_length=1,
),
),
],
options={
"verbose_name": "historical Rotating Work Type Assign",
"verbose_name_plural": "historical Rotating Work Type Assigns",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="HistoricalShiftRequest",
fields=[
(
"id",
models.BigIntegerField(
auto_created=True, blank=True, db_index=True, verbose_name="ID"
),
),
(
"created_at",
models.DateTimeField(
blank=True, editable=False, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"history_title",
models.CharField(blank=True, max_length=20, null=True),
),
("history_description", models.TextField(null=True)),
("history_highlight", models.BooleanField(default=False, null=True)),
(
"requested_date",
models.DateField(
default=django.utils.timezone.now,
null=True,
verbose_name="Requested Date",
),
),
(
"reallocate_approved",
models.BooleanField(default=False, verbose_name="Approved"),
),
(
"reallocate_canceled",
models.BooleanField(default=False, verbose_name="Canceled"),
),
(
"requested_till",
models.DateField(
blank=True, null=True, verbose_name="Requested Till"
),
),
(
"description",
models.TextField(null=True, verbose_name="Description"),
),
(
"is_permanent_shift",
models.BooleanField(
default=False, verbose_name="Permanent Request"
),
),
(
"approved",
models.BooleanField(default=False, verbose_name="Approved"),
),
(
"canceled",
models.BooleanField(default=False, verbose_name="Canceled"),
),
("shift_changed", models.BooleanField(default=False)),
("history_id", models.AutoField(primary_key=True, serialize=False)),
("history_date", models.DateTimeField(db_index=True)),
("history_change_reason", models.CharField(max_length=100, null=True)),
(
"history_type",
models.CharField(
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
max_length=1,
),
),
],
options={
"verbose_name": "historical Shift Request",
"verbose_name_plural": "historical Shift Requests",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="HistoricalWorkTypeRequest",
fields=[
(
"id",
models.BigIntegerField(
auto_created=True, blank=True, db_index=True, verbose_name="ID"
),
),
(
"created_at",
models.DateTimeField(
blank=True, editable=False, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"history_title",
models.CharField(blank=True, max_length=20, null=True),
),
("history_description", models.TextField(null=True)),
("history_highlight", models.BooleanField(default=False, null=True)),
(
"requested_date",
models.DateField(
default=django.utils.timezone.now,
null=True,
verbose_name="Requested Date",
),
),
(
"requested_till",
models.DateField(
blank=True, null=True, verbose_name="Requested Till"
),
),
(
"description",
models.TextField(null=True, verbose_name="Description"),
),
(
"is_permanent_work_type",
models.BooleanField(
default=False, verbose_name="Permanent Request"
),
),
(
"approved",
models.BooleanField(default=False, verbose_name="Approved"),
),
(
"canceled",
models.BooleanField(default=False, verbose_name="Canceled"),
),
("work_type_changed", models.BooleanField(default=False)),
("history_id", models.AutoField(primary_key=True, serialize=False)),
("history_date", models.DateTimeField(db_index=True)),
("history_change_reason", models.CharField(max_length=100, null=True)),
(
"history_type",
models.CharField(
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
max_length=1,
),
),
],
options={
"verbose_name": "historical Work Type Request",
"verbose_name_plural": "historical Work Type Requests",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="Holidays",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("name", models.CharField(max_length=30, verbose_name="Name")),
("start_date", models.DateField(verbose_name="Start Date")),
(
"end_date",
models.DateField(blank=True, null=True, verbose_name="End Date"),
),
(
"recurring",
models.BooleanField(default=False, verbose_name="Recurring"),
),
],
options={
"verbose_name": "Holiday",
"verbose_name_plural": "Holidays",
},
),
migrations.CreateModel(
name="HorillaMailTemplate",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("title", models.CharField(max_length=100, unique=True)),
("body", models.TextField()),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="IntegrationApps",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("app_label", models.CharField(max_length=255, unique=True)),
("is_enabled", models.BooleanField(default=False)),
],
options={
"abstract": False,
},
bases=(models.Model, horilla.models.NoPermissionModel),
),
migrations.CreateModel(
name="JobPosition",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"job_position",
models.CharField(max_length=50, verbose_name="Job Position"),
),
],
options={
"verbose_name": "Job Position",
"verbose_name_plural": "Job Positions",
},
),
migrations.CreateModel(
name="JobRole",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"job_role",
models.CharField(max_length=50, null=True, verbose_name="Job Role"),
),
],
options={
"verbose_name": "Job Role",
"verbose_name_plural": "Job Roles",
},
),
migrations.CreateModel(
name="MultipleApprovalCondition",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"condition_field",
models.CharField(
choices=[
("", "---------"),
("requested_days", "Leave Requested Days"),
],
max_length=255,
),
),
(
"condition_operator",
models.CharField(
blank=True,
choices=[
("equal", "Equal (==)"),
("notequal", "Not Equal (!=)"),
("range", "Range"),
("lt", "Less Than (<)"),
("gt", "Greater Than (>)"),
("le", "Less Than or Equal To (<=)"),
("ge", "Greater Than or Equal To (>=)"),
("icontains", "Contains"),
],
max_length=255,
null=True,
),
),
(
"condition_value",
models.CharField(
blank=True,
max_length=100,
null=True,
verbose_name="Condition Value",
),
),
(
"condition_start_value",
models.CharField(
blank=True,
max_length=100,
null=True,
verbose_name="Starting Value",
),
),
(
"condition_end_value",
models.CharField(
blank=True,
max_length=100,
null=True,
verbose_name="Ending Value",
),
),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="MultipleApprovalManagers",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("sequence", models.IntegerField()),
("employee_id", models.IntegerField(blank=True, null=True)),
(
"reporting_manager",
models.CharField(blank=True, max_length=100, null=True),
),
],
options={
"verbose_name": "Multiple Approval Managers",
"verbose_name_plural": "Multiple Approval Managers",
},
),
migrations.CreateModel(
name="NotificationSound",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("sound_enabled", models.BooleanField(default=False)),
],
),
migrations.CreateModel(
name="PenaltyAccounts",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("minus_leaves", models.FloatField(default=0.0, null=True)),
("deduct_from_carry_forward", models.BooleanField(default=False)),
("penalty_amount", models.FloatField(default=0.0, null=True)),
],
options={
"verbose_name": "Penalty Account",
"verbose_name_plural": "Penalty Accounts",
"ordering": ["-created_at"],
},
),
migrations.CreateModel(
name="RotatingShift",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("name", models.CharField(max_length=50)),
(
"additional_data",
models.JSONField(blank=True, default=dict, null=True),
),
],
options={
"verbose_name": "Rotating Shift",
"verbose_name_plural": "Rotating Shifts",
},
),
migrations.CreateModel(
name="RotatingShiftAssign",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"start_date",
models.DateField(
default=django.utils.timezone.now, verbose_name="Start Date"
),
),
(
"next_change_date",
models.DateField(null=True, verbose_name="Next Switch"),
),
(
"based_on",
models.CharField(
choices=[
("after", "After"),
("weekly", "Weekend"),
("monthly", "Monthly"),
],
max_length=10,
verbose_name="Based On",
),
),
(
"rotate_after_day",
models.IntegerField(
blank=True,
default=7,
null=True,
verbose_name="Rotate After Day",
),
),
(
"rotate_every_weekend",
models.CharField(
blank=True,
choices=[
("monday", "Monday"),
("tuesday", "Tuesday"),
("wednesday", "Wednesday"),
("thursday", "Thursday"),
("friday", "Friday"),
("saturday", "Saturday"),
("sunday", "Sunday"),
],
default="monday",
max_length=10,
null=True,
verbose_name="Rotate Every Weekend",
),
),
(
"rotate_every",
models.CharField(
blank=True,
choices=[
("1", "1"),
("2", "2"),
("3", "3"),
("4", "4"),
("5", "5"),
("6", "6"),
("7", "7"),
("8", "8"),
("9", "9"),
("10", "10"),
("11", "11"),
("12", "12"),
("13", "13"),
("14", "14"),
("15", "15"),
("16", "16"),
("17", "17"),
("18", "18"),
("19", "19"),
("20", "20"),
("21", "21"),
("22", "22"),
("23", "23"),
("24", "24"),
("25", "25"),
("26", "26"),
("27", "27"),
("28", "28"),
("29", "29"),
("30", "30"),
("31", "31"),
("last", "Last Day"),
],
default="1",
max_length=10,
null=True,
verbose_name="Rotate Every Month",
),
),
(
"additional_data",
models.JSONField(blank=True, default=dict, null=True),
),
],
options={
"verbose_name": "Rotating Shift Assign",
"verbose_name_plural": "Rotating Shift Assigns",
"ordering": ["-next_change_date", "-employee_id__employee_first_name"],
},
),
migrations.CreateModel(
name="RotatingWorkType",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("name", models.CharField(max_length=50)),
(
"additional_data",
models.JSONField(blank=True, default=dict, null=True),
),
],
options={
"verbose_name": "Rotating Work Type",
"verbose_name_plural": "Rotating Work Types",
},
),
migrations.CreateModel(
name="RotatingWorkTypeAssign",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"start_date",
models.DateField(
default=django.utils.timezone.now, verbose_name="Start Date"
),
),
(
"next_change_date",
models.DateField(null=True, verbose_name="Next Switch"),
),
(
"based_on",
models.CharField(
choices=[
("after", "After"),
("weekly", "Weekend"),
("monthly", "Monthly"),
],
max_length=10,
verbose_name="Based On",
),
),
(
"rotate_after_day",
models.IntegerField(default=7, verbose_name="Rotate After Day"),
),
(
"rotate_every_weekend",
models.CharField(
blank=True,
choices=[
("monday", "Monday"),
("tuesday", "Tuesday"),
("wednesday", "Wednesday"),
("thursday", "Thursday"),
("friday", "Friday"),
("saturday", "Saturday"),
("sunday", "Sunday"),
],
default="monday",
max_length=10,
null=True,
verbose_name="Rotate Every Weekend",
),
),
(
"rotate_every",
models.CharField(
choices=[
("1", "1"),
("2", "2"),
("3", "3"),
("4", "4"),
("5", "5"),
("6", "6"),
("7", "7"),
("8", "8"),
("9", "9"),
("10", "10"),
("11", "11"),
("12", "12"),
("13", "13"),
("14", "14"),
("15", "15"),
("16", "16"),
("17", "17"),
("18", "18"),
("19", "19"),
("20", "20"),
("21", "21"),
("22", "22"),
("23", "23"),
("24", "24"),
("25", "25"),
("26", "26"),
("27", "27"),
("28", "28"),
("29", "29"),
("30", "30"),
("31", "31"),
("last", "Last Day"),
],
default="1",
max_length=10,
verbose_name="Rotate Every Month",
),
),
(
"additional_data",
models.JSONField(blank=True, default=dict, null=True),
),
],
options={
"verbose_name": "Rotating Work Type Assign",
"verbose_name_plural": "Rotating Work Type Assigns",
"ordering": ["-next_change_date", "-employee_id__employee_first_name"],
},
),
migrations.CreateModel(
name="ShiftRequest",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"requested_date",
models.DateField(
default=django.utils.timezone.now,
null=True,
verbose_name="Requested Date",
),
),
(
"reallocate_approved",
models.BooleanField(default=False, verbose_name="Approved"),
),
(
"reallocate_canceled",
models.BooleanField(default=False, verbose_name="Canceled"),
),
(
"requested_till",
models.DateField(
blank=True, null=True, verbose_name="Requested Till"
),
),
(
"description",
models.TextField(null=True, verbose_name="Description"),
),
(
"is_permanent_shift",
models.BooleanField(
default=False, verbose_name="Permanent Request"
),
),
(
"approved",
models.BooleanField(default=False, verbose_name="Approved"),
),
(
"canceled",
models.BooleanField(default=False, verbose_name="Canceled"),
),
("shift_changed", models.BooleanField(default=False)),
],
options={
"verbose_name": "Shift Request",
"verbose_name_plural": "Shift Requests",
"ordering": ["-id"],
"permissions": (
("approve_shiftrequest", "Approve Shift Request"),
("cancel_shiftrequest", "Cancel Shift Request"),
),
},
),
migrations.CreateModel(
name="ShiftRequestComment",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("comment", models.TextField(null=True, verbose_name="Comment")),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="Tags",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("title", models.CharField(max_length=30)),
("color", models.CharField(max_length=30)),
],
options={
"verbose_name": "Tag",
"verbose_name_plural": "Tags",
},
),
migrations.CreateModel(
name="TrackLateComeEarlyOut",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"is_enable",
models.BooleanField(
default=True,
help_text="By enabling this, you track the late comes and early outs of employees in their attendance.",
verbose_name="Enable",
),
),
],
options={
"verbose_name": "Track Late Come Early Out",
"verbose_name_plural": "Track Late Come Early Outs",
},
),
migrations.CreateModel(
name="WorkType",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"work_type",
models.CharField(max_length=50, verbose_name="Work Type"),
),
],
options={
"verbose_name": "Work Type",
"verbose_name_plural": "Work Types",
},
),
migrations.CreateModel(
name="WorkTypeRequest",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
(
"requested_date",
models.DateField(
default=django.utils.timezone.now,
null=True,
verbose_name="Requested Date",
),
),
(
"requested_till",
models.DateField(
blank=True, null=True, verbose_name="Requested Till"
),
),
(
"description",
models.TextField(null=True, verbose_name="Description"),
),
(
"is_permanent_work_type",
models.BooleanField(
default=False, verbose_name="Permanent Request"
),
),
(
"approved",
models.BooleanField(default=False, verbose_name="Approved"),
),
(
"canceled",
models.BooleanField(default=False, verbose_name="Canceled"),
),
("work_type_changed", models.BooleanField(default=False)),
],
options={
"verbose_name": "Work Type Request",
"verbose_name_plural": "Work Type Requests",
"ordering": ["-id"],
"permissions": (
("approve_worktyperequest", "Approve Work Type Request"),
("cancel_worktyperequest", "Cancel Work Type Request"),
),
},
),
migrations.CreateModel(
name="WorkTypeRequestComment",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("comment", models.TextField(null=True, verbose_name="Comment")),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="Announcement",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, null=True, verbose_name="Created At"
),
),
(
"is_active",
models.BooleanField(default=True, verbose_name="Is Active"),
),
("title", models.CharField(max_length=100)),
("description", models.TextField(null=True)),
("expire_date", models.DateField(blank=True, null=True)),
(
"disable_comments",
models.BooleanField(default=False, verbose_name="Disable Comments"),
),
(
"public_comments",
models.BooleanField(
default=True,
help_text="If enabled, all employees can view each other's comments.",
verbose_name="Show Comments to All",
),
),
(
"created_by",
models.ForeignKey(
blank=True,
editable=False,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
verbose_name="Created By",
),
),
],
options={
"verbose_name": "Announcement",
"verbose_name_plural": "Announcements",
},
),
]