[UPDT] EMPLOYEE: Archive method updates
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user