826 lines
30 KiB
Python
826 lines
30 KiB
Python
# Generated by Django 5.2.7 on 2025-10-25 14:02
|
|
|
|
import django.db.models.deletion
|
|
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 = [
|
|
("base", "0001_initial"),
|
|
("employee", "0001_initial"),
|
|
("horilla_audit", "0001_initial"),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name="FAQCategory",
|
|
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)),
|
|
(
|
|
"description",
|
|
models.TextField(blank=True, max_length=255, null=True),
|
|
),
|
|
(
|
|
"company_id",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to="base.company",
|
|
verbose_name="Company",
|
|
),
|
|
),
|
|
(
|
|
"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",
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="%(class)s_modified_by",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "FAQ Category",
|
|
"verbose_name_plural": "FAQ Categories",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="FAQ",
|
|
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"),
|
|
),
|
|
("question", models.CharField(max_length=255)),
|
|
("answer", models.TextField()),
|
|
(
|
|
"company_id",
|
|
models.ForeignKey(
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
to="base.company",
|
|
),
|
|
),
|
|
(
|
|
"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",
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="%(class)s_modified_by",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
("tags", models.ManyToManyField(blank=True, to="base.tags")),
|
|
(
|
|
"category",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
to="helpdesk.faqcategory",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "FAQ",
|
|
"verbose_name_plural": "FAQs",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Ticket",
|
|
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=50)),
|
|
("description", models.TextField(max_length=255)),
|
|
(
|
|
"priority",
|
|
models.CharField(
|
|
choices=[
|
|
("low", "Low"),
|
|
("medium", "Medium"),
|
|
("high", "High"),
|
|
],
|
|
default="low",
|
|
max_length=100,
|
|
),
|
|
),
|
|
("created_date", models.DateField(auto_now_add=True)),
|
|
("resolved_date", models.DateField(blank=True, null=True)),
|
|
(
|
|
"assigning_type",
|
|
models.CharField(
|
|
choices=[
|
|
("department", "Department"),
|
|
("job_position", "Job Position"),
|
|
("individual", "Individual"),
|
|
],
|
|
max_length=100,
|
|
verbose_name="Assigning Type",
|
|
),
|
|
),
|
|
(
|
|
"raised_on",
|
|
models.CharField(max_length=100, verbose_name="Forward To"),
|
|
),
|
|
("deadline", models.DateField(blank=True, null=True)),
|
|
(
|
|
"status",
|
|
models.CharField(
|
|
choices=[
|
|
("new", "New"),
|
|
("in_progress", "In Progress"),
|
|
("on_hold", "On Hold"),
|
|
("resolved", "Resolved"),
|
|
("canceled", "Canceled"),
|
|
],
|
|
default="new",
|
|
max_length=50,
|
|
),
|
|
),
|
|
(
|
|
"assigned_to",
|
|
models.ManyToManyField(
|
|
blank=True,
|
|
related_name="ticket_assigned_to",
|
|
to="employee.employee",
|
|
),
|
|
),
|
|
(
|
|
"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",
|
|
),
|
|
),
|
|
(
|
|
"employee_id",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
related_name="ticket",
|
|
to="employee.employee",
|
|
verbose_name="Owner",
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="%(class)s_modified_by",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
(
|
|
"tags",
|
|
models.ManyToManyField(
|
|
blank=True, related_name="ticket_tags", to="base.tags"
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Ticket",
|
|
"verbose_name_plural": "Tickets",
|
|
"ordering": ["-created_date"],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Comment",
|
|
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(blank=True, null=True)),
|
|
("date", models.DateTimeField(auto_now_add=True)),
|
|
(
|
|
"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",
|
|
),
|
|
),
|
|
(
|
|
"employee_id",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
related_name="employee_comment",
|
|
to="employee.employee",
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="%(class)s_modified_by",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
(
|
|
"ticket",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="comment",
|
|
to="helpdesk.ticket",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"abstract": False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Attachment",
|
|
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"),
|
|
),
|
|
("file", models.FileField(upload_to=horilla.models.upload_path)),
|
|
(
|
|
"description",
|
|
models.CharField(blank=True, max_length=100, null=True),
|
|
),
|
|
("format", models.CharField(blank=True, max_length=50, null=True)),
|
|
(
|
|
"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",
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="%(class)s_modified_by",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
(
|
|
"comment",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="comment_attachment",
|
|
to="helpdesk.comment",
|
|
),
|
|
),
|
|
(
|
|
"ticket",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="ticket_attachment",
|
|
to="helpdesk.ticket",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"abstract": False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="TicketType",
|
|
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, verbose_name="Title"),
|
|
),
|
|
(
|
|
"type",
|
|
models.CharField(
|
|
choices=[
|
|
("suggestion", "Suggestion"),
|
|
("complaint", "Complaint"),
|
|
("service_request", "Service Request"),
|
|
("meeting_request", "Meeting Request"),
|
|
("anounymous_complaint", "Anonymous Complaint"),
|
|
("others", "Others"),
|
|
],
|
|
max_length=50,
|
|
verbose_name="Type",
|
|
),
|
|
),
|
|
(
|
|
"prefix",
|
|
models.CharField(max_length=3, unique=True, verbose_name="Prefix"),
|
|
),
|
|
(
|
|
"company_id",
|
|
models.ForeignKey(
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
to="base.company",
|
|
),
|
|
),
|
|
(
|
|
"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",
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="%(class)s_modified_by",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Ticket Type",
|
|
"verbose_name_plural": "Ticket Types",
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name="ticket",
|
|
name="ticket_type",
|
|
field=models.ForeignKey(
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
to="helpdesk.tickettype",
|
|
verbose_name="Ticket Type",
|
|
),
|
|
),
|
|
migrations.CreateModel(
|
|
name="HistoricalTicket",
|
|
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)),
|
|
("title", models.CharField(max_length=50)),
|
|
("description", models.TextField(max_length=255)),
|
|
(
|
|
"priority",
|
|
models.CharField(
|
|
choices=[
|
|
("low", "Low"),
|
|
("medium", "Medium"),
|
|
("high", "High"),
|
|
],
|
|
default="low",
|
|
max_length=100,
|
|
),
|
|
),
|
|
("created_date", models.DateField(blank=True, editable=False)),
|
|
("resolved_date", models.DateField(blank=True, null=True)),
|
|
(
|
|
"assigning_type",
|
|
models.CharField(
|
|
choices=[
|
|
("department", "Department"),
|
|
("job_position", "Job Position"),
|
|
("individual", "Individual"),
|
|
],
|
|
max_length=100,
|
|
verbose_name="Assigning Type",
|
|
),
|
|
),
|
|
(
|
|
"raised_on",
|
|
models.CharField(max_length=100, verbose_name="Forward To"),
|
|
),
|
|
("deadline", models.DateField(blank=True, null=True)),
|
|
(
|
|
"status",
|
|
models.CharField(
|
|
choices=[
|
|
("new", "New"),
|
|
("in_progress", "In Progress"),
|
|
("on_hold", "On Hold"),
|
|
("resolved", "Resolved"),
|
|
("canceled", "Canceled"),
|
|
],
|
|
default="new",
|
|
max_length=50,
|
|
),
|
|
),
|
|
("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,
|
|
),
|
|
),
|
|
(
|
|
"created_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
db_constraint=False,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
related_name="+",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Created By",
|
|
),
|
|
),
|
|
(
|
|
"employee_id",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
db_constraint=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
related_name="+",
|
|
to="employee.employee",
|
|
verbose_name="Owner",
|
|
),
|
|
),
|
|
("history_tags", models.ManyToManyField(to="horilla_audit.audittag")),
|
|
(
|
|
"history_user",
|
|
models.ForeignKey(
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="+",
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
db_constraint=False,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
related_name="+",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
(
|
|
"history_relation",
|
|
models.ForeignKey(
|
|
db_constraint=False,
|
|
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
related_name="history_set",
|
|
to="helpdesk.ticket",
|
|
),
|
|
),
|
|
(
|
|
"ticket_type",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
db_constraint=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
related_name="+",
|
|
to="helpdesk.tickettype",
|
|
verbose_name="Ticket Type",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "historical Ticket",
|
|
"verbose_name_plural": "historical Tickets",
|
|
"ordering": ("-history_date", "-history_id"),
|
|
"get_latest_by": ("history_date", "history_id"),
|
|
},
|
|
bases=(simple_history.models.HistoricalChanges, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name="DepartmentManager",
|
|
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_id",
|
|
models.ForeignKey(
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.PROTECT,
|
|
to="base.company",
|
|
),
|
|
),
|
|
(
|
|
"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",
|
|
),
|
|
),
|
|
(
|
|
"department",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="dept_manager",
|
|
to="base.department",
|
|
verbose_name="Department",
|
|
),
|
|
),
|
|
(
|
|
"manager",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="dep_manager",
|
|
to="employee.employee",
|
|
verbose_name="Manager",
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="%(class)s_modified_by",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Department Manager",
|
|
"verbose_name_plural": "Department Managers",
|
|
"unique_together": {("department", "manager")},
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="ClaimRequest",
|
|
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_approved", models.BooleanField(default=False)),
|
|
("is_rejected", models.BooleanField(default=False)),
|
|
(
|
|
"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",
|
|
),
|
|
),
|
|
(
|
|
"employee_id",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to="employee.employee",
|
|
),
|
|
),
|
|
(
|
|
"modified_by",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
editable=False,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.SET_NULL,
|
|
related_name="%(class)s_modified_by",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="Modified By",
|
|
),
|
|
),
|
|
(
|
|
"ticket_id",
|
|
models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to="helpdesk.ticket",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"unique_together": {("ticket_id", "employee_id")},
|
|
},
|
|
),
|
|
]
|