[ADD] OFFBOARDING: Added notification for managers selection and updated the permission for task manager
This commit is contained in:
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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}}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user