2076 lines
74 KiB
Python
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",
|
||
|
|
},
|
||
|
|
),
|
||
|
|
]
|