[ADD] OFFBOARDING: Added notification for managers selection and updated the permission for task manager

This commit is contained in:
Horilla
2024-10-23 12:55:42 +05:30
parent 27aa2eba56
commit a935d58f44
5 changed files with 44 additions and 4 deletions

View File

@@ -117,7 +117,7 @@
</ul>
<div class="oh-tabs__contents">
{% for offboarding in offboardings %}
{% if perms.offboarding.view_offboarding or request.user.employee_get|is_in_offboarding:offboarding.offboarding %}
{% if perms.offboarding.view_offboarding or request.user.employee_get|is_in_offboarding:offboarding.offboarding or request.user.employee_get|any_manager %}
<div class="oh-tabs__content" id="Offboarding{{ offboarding.offboarding.id }}">
{% if perms.offboarding.add_offboardingstage or request.user.employee_get|is_offboarding_manager %}
<div class="d-flex flex-row-reverse">

View File

@@ -72,7 +72,7 @@
<div class="oh-sticky-table__th text-center">{% trans "Task Status" %}</div>
<div class="oh-sticky-table__th text-center" style="width: 250px;">{% trans "Actions" %}</div>
{% for task in stage.grouper.offboardingtask_set.all %}
{% if request.user.employee_get.offboardingemployee.employeetask_set.all|is_employee_tasks:task or perms.offboarding.add_offboardingtask or request.user.employee_get|any_manager %}
{% if request.user.employee_get.offboardingemployee.employeetask_set.all|is_employee_tasks:task or perms.offboarding.add_offboardingtask or request.user.employee_get|any_manager or request.user.employee_get|is_task_manager:task.title %}
<div class="oh-sticky-table__th" style="width: 200px;" >
<div class="d-flex justify-content-between align-items-center">
<span>

View File

@@ -7,7 +7,7 @@
</div>
{% endif %}
{% for employee in stage.list %}
{% if perms.offboarding.view_offboarding or request.user.employee_get|is_in_offboarding:offboarding.offboarding or request.user.employee_get|is_in_managers:offboarding.offboarding or request.user.employee_get|is_in_managers:stage.grouper or request.user.employee_get|is_in_managers:employee %}
{% if perms.offboarding.view_offboarding or request.user.employee_get|is_in_offboarding:offboarding.offboarding or request.user.employee_get|is_in_managers:offboarding.offboarding or request.user.employee_get|is_in_managers:stage.grouper or request.user.employee_get|is_in_managers:employee or request.user.employee_get|is_manager_for_any_task:stage.grouper.offboardingtask_set.all %}
<div
class="oh-sticky-table__tr oh-multiple-table-sort__movable"
data-employee="{{employee.employee_id.get_full_name}}"

View File

@@ -185,3 +185,16 @@ def is_employee_tasks(employee_tasks, task):
return False
except:
return False
@register.filter("is_manager_for_any_task")
def is_manager_for_any_task(employee, tasks):
"""
Returns True if the employee is a manager for any task in the list of tasks.
"""
for task in tasks:
if employee in task.managers.all():
is_manager = True
else:
is_manager = False
return is_manager

View File

@@ -186,8 +186,23 @@ def create_offboarding(request):
if request.method == "POST":
form = OffboardingForm(request.POST, instance=instance)
if form.is_valid():
form.save()
off_boarding = form.save()
messages.success(request, _("Offboarding saved"))
users = [
employee.employee_user_id for employee in off_boarding.managers.all()
]
notify.send(
request.user.employee_get,
recipient=users,
verb="You are chosen as an offboarding manager",
verb_ar="لقد تم اختيارك كمدير عملية المغادرة",
verb_de="Sie wurden als Offboarding-Manager ausgewählt",
verb_es="Has sido elegido como gerente de offboarding",
verb_fr="Vous avez été choisi comme responsable du processus de départ",
icon="people-circle",
redirect=reverse("offboarding-pipeline"),
)
return HttpResponse("<script>window.location.reload()</script>")
return render(
@@ -236,6 +251,18 @@ def create_stage(request):
instance.save()
instance.managers.set(form.data.getlist("managers"))
messages.success(request, _("Stage saved"))
users = [employee.employee_user_id for employee in instance.managers.all()]
notify.send(
request.user.employee_get,
recipient=users,
verb="You are chosen as offboarding stage manager",
verb_ar="لقد تم اختيارك كمدير لمرحلة عملية المغادرة",
verb_de="Sie wurden als Manager der Offboarding-Phase ausgewählt",
verb_es="Has sido elegido como gerente de la etapa de offboarding",
verb_fr="Vous avez été choisi comme responsable de l'étape de départ",
icon="people-circle",
redirect=reverse("offboarding-pipeline"),
)
return HttpResponse("<script>window.location.reload()</script>")
return render(request, "offboarding/stage/form.html", {"form": form})