[UPDT] EMPLOYEE: Archive method updates

This commit is contained in:
Horilla
2024-02-23 12:11:16 +05:30
parent 0481b3971b
commit a778775f17
5 changed files with 193 additions and 39 deletions

View File

@@ -278,18 +278,58 @@ class Employee(models.Model):
return False
else:
related_models = []
related_model_fields = []
if reporting_manager_query.exists():
related_models.append("Reporting manager")
related_models.append(
{
"verbose_name": _("Reporting manager"),
"field_name": "reporting_manager_id",
}
)
if recruitment_manager_query.exists():
related_models.append("Recruitment manager")
related_models.append(
{
"verbose_name": _("Recruitment manager"),
"field_name": "recruitment_managers",
}
)
if recruitment_stage_query.exists():
related_models.append("Recruitment stage manager")
related_models.append(
{
"verbose_name": _("Recruitment stage manager"),
"field_name": "recruitment_stage_managers",
}
)
if onboarding_stage_query.exists():
related_models.append("Onboarding stage manager")
related_models.append(
{
"verbose_name": _("Onboarding stage manager"),
"field_name": "onboarding_stage_manager",
}
)
if onboarding_task_query.exists():
related_models.append("Onboarding task manager")
related_models_dict = {"related_models": related_models}
related_models.append(
{
"verbose_name": _("Onboarding task manager"),
"field_name": "onboarding_task_manager",
}
)
related_models_dict = {
"related_models": related_models,
}
try:
REPLACE_EMPLOYEE_CHOICES = [("", _("---Choose employee---"))] + [
(
employee_id,
f"{first_name} {last_name}" if last_name else first_name,
)
for employee_id, first_name, last_name in Employee.objects.filter(
is_active=True
).values_list("id", "employee_first_name", "employee_last_name")
]
related_models_dict["employee_choices"] = REPLACE_EMPLOYEE_CHOICES
except:
pass
return related_models_dict
def __str__(self) -> str:
@@ -367,6 +407,10 @@ class Employee(models.Model):
# ...
# call the parent class's save method to save the object
super().save(*args, **kwargs)
request = getattr(thread_local_middleware._thread_locals,"request",None)
if request and not self.is_active and self.get_archive_condition() is not False:
self.is_active = True
super().save(*args, **kwargs)
employee = self
if employee.employee_user_id is None:
# Create user if no corresponding user exists
@@ -636,7 +680,7 @@ class Policy(models.Model):
is_visible_to_all = models.BooleanField(default=True)
specific_employees = models.ManyToManyField(Employee, blank=True, editable=False)
attachments = models.ManyToManyField(PolicyMultipleFile, blank=True)
company_id = models.ManyToManyField(Company, blank=True,verbose_name=_("Company"))
company_id = models.ManyToManyField(Company, blank=True, verbose_name=_("Company"))
objects = HorillaCompanyManager()
@@ -649,6 +693,7 @@ class BonusPoint(models.Model):
"""
Model representing bonus points for employees with associated conditions.
"""
CONDITIONS = [
("==", _("equals")),
(">", _("grater than")),
@@ -691,13 +736,13 @@ class BonusPoint(models.Model):
@receiver(post_save, sender=Employee)
def bonus_post_save(sender, instance, **_kwargs):
"""
Creates a BonusPoint instance for a newly created Employee if one doesn't already exist.
Creates a BonusPoint instance for a newly created Employee if one doesn't already exist.
Args:
sender (Employee): The model class (Employee) sending the signal.
instance (Employee): The instance of the Employee model triggering the
post-save signal.
**_kwargs: Additional keyword arguments passed by the signal.
Args:
sender (Employee): The model class (Employee) sending the signal.
instance (Employee): The instance of the Employee model triggering the
post-save signal.
**_kwargs: Additional keyword arguments passed by the signal.
"""
if not BonusPoint.objects.filter(employee_id__id=instance.id).exists():
BonusPoint.objects.create(employee_id=instance)

View File

@@ -84,8 +84,8 @@
<div class="modal-footer d-flex flex-row-reverse">
<input
type="submit"
class="oh-btn oh-btn--secondary"
value='{% trans "Upload" %}'
class="oh-btn oh-btn--small oh-btn--secondary w-100 mt-3"
value="{% trans 'Upload' %}"
/>
</div>
</form>

View File

@@ -6,28 +6,136 @@
aria-labelledby="confirmModalLabel"
aria-hidden="true"
>
<div class="oh-modal__dialog oh-modal__dialog--confirm">
<div
class="oh-modal__dialog-header"
style="display: flex; justify-content: center"
<div
class="oh-modal__dialog oh-modal__dialog--confirm"
style="max-width: 510px"
>
<p class="swal2-close"></p>
<ul class="swal2-progress-steps" style="display: none"></ul>
<div class="swal2-icon swal2-warning swal2-icon-show" style="display: flex">
<div class="swal2-icon-content">!</div>
</div>
<h2 class="swal2-title" id="swal2-title">{{title}}</h2>
<form
action="{% url 'replace-employee' employee.id %}"
method="post"
id="replaceEmployeeForm"
data-id="{{employee.id}}"
>
<span class="oh-modal__dialog-title" id="confirmModalLabel"
>{{title}}
</span>
</div>
<div class="oh-modal__dialog-body" id="confirmModalBody">
<p>{{employee}} {% trans "assigned as" %} :</p>
{% for related_model in related_models %}
<p style="margin-left: 24px">{{forloop.counter}}.{{related_model}}</p>
{% endfor %}
</div>
<div
class="oh-modal__dialog-footer"
style="display: flex; justify-content: center"
>
<button class="oh-btn oh-btn--info oh-modal__cancel" id="cancel">
{% trans "Close" %}
</button>
</div>
{% csrf_token %}
<div
class="swal2-html-container"
id="swal2-html-container"
style="display: block"
>
{{employee}} {% trans "assigned as" %}.
<p style="margin-left: 24px"></p>
<div class="oh-sticky-table">
<div class="oh-sticky-table__table oh-table--sortable">
<div class="oh-sticky-table__thead">
<div class="oh-sticky-table__tr">
<div class="oh-sticky-table__th">{% trans "Assigned As" %}</div>
<div class="oh-sticky-table__th">
{% trans "Replace Employee" %}
</div>
</div>
</div>
<div class="oh-sticky-table__tbody">
{% for related_model in related_models %}
<div class="oh-sticky-table__tr">
<div class="oh-sticky-table__td">
{{related_model.verbose_name}}
</div>
<div class="oh-sticky-table__td">
<select
name="{{related_model.field_name}}"
id="select{{forloop.counter}}"
class="oh-table__editable-input w-100 oh-select oh-select-2 manager-select"
data-error = "{{related_model.field_name}}_error"
>
{% for option in employee_choices %}
<option value="{{option.0}}" {% if option.0 == employee.id%}selected{% endif %}>{{option.1}}</option>
{% endfor %}
</select>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
<div
class="swal2-validation-message"
id="reporting_manager_id_error"
style="display: none"
>
<p>Replace {{employee}} from Reporting manager</p>
</div>
<div
class="swal2-validation-message"
id="recruitment_managers_error"
style="display: none"
>
<p>Replace {{employee}} from Recruitment manager</p>
</div>
<div
class="swal2-validation-message"
id="recruitment_stage_managers_error"
style="display: none"
>
<p>Replace {{employee}} from Recruitment stage manager</p>
</div>
<div
class="swal2-validation-message"
id="onboarding_stage_manager_error"
style="display: none"
>
<p>Replace {{employee}} from Onboarding stage manager</p>
</div>
<div
class="swal2-validation-message"
id="onboarding_task_manager_error"
style="display: none"
>
<p>Replace {{employee}} from Onboarding task manager</p>
</div>
<div class="swal2-actions" style="display: flex">
<div class="swal2-loader"></div>
<button
type="button"
class="swal2-confirm swal2-styled oh-modal__cancel mb-4"
aria-label=""
style="display: inline-block"
>
{% trans "Cancel" %}
</button>
<button
type="submit"
class="swal2-deny swal2-styled mb-4"
aria-label=""
style="display: inline-block"
>
{% trans "Submit" %}
</button>
</div>
</div>
</form>
</div>
</div>
<script>
$(document).ready(function (e) {
$("#replaceEmployeeForm").submit(function (e) {
var empId = $("#replaceEmployeeForm").attr("data-id");
$(".manager-select").each(function () {
var selectElement = $(this);
var managerId = selectElement.val();
var errorElementId = selectElement.data("error");
if (empId === managerId) {
$("#" + errorElementId).css("display", "inline-flex");
event.preventDefault();
} else {
$("#" + errorElementId).css("display", "none");
}
});
});
});
</script>

View File

@@ -3,7 +3,7 @@
<form action="{% url 'encashment-condition-create' %}" class="settings-label mb-1" method="post">
{% csrf_token %}
<div class="oh-inner-sidebar-content__header mt-4">
<h2 class="oh-inner-sidebar-content__title">{% trans 'Encashment redeem condition' %}</h2>
<h2 class="oh-inner-sidebar-content__title">{% trans 'Encashment Redeem Condition' %}</h2>
</div>
<div>
<div class="row">

View File

@@ -123,6 +123,7 @@ urlpatterns = [
views.employee_archive,
name="employee-archive",
),
path("replace-employee/<int:emp_id>/",views.replace_employee,name="replace-employee"),
path(
"employee-user-group-assign-delete/<int:obj_id>/",
views.employee_user_group_assign_delete,