[FIX] LEAVE : Empty page issues, Compensatory form issues, comment section fixes with employee without work information

This commit is contained in:
Horilla
2024-05-18 14:52:09 +05:30
parent 56cebcfdda
commit db9de587f7
5 changed files with 461 additions and 432 deletions

View File

@@ -1330,6 +1330,8 @@ class CompensatoryLeaveForm(ModelForm):
def clean(self):
cleaned_data = super().clean()
attendance_id = cleaned_data.get("attendance_id")
if attendance_id is None:
raise forms.ValidationError({"attendance_id": _("This field is required.")})
employee = cleaned_data.get("employee_id")
attendance_repeat = False
instance_id = None

View File

@@ -11,9 +11,9 @@
<div class="oh-modal__dialog-header">
<span class="oh-modal__dialog-title" id="editDialogDialog">
{% if form.instance.id %}
{% trans "Update Compensetory Leave Request" %}
{% trans "Update Compensatory Leave Request" %}
{% else %}
{% trans "Create Compensetory Leave Request" %}
{% trans "Create Compensatory Leave Request" %}
{% endif %}
</span>
<button class="oh-modal__close" aria-label="Close">

View File

@@ -35,155 +35,157 @@
</div>
<div class="oh-main__titlebar oh-main__titlebar--right">
<form
method="post"
hx-get="{% url 'filter-compensatory-leave' %}"
hx-target="#comp-leave-tabs"
id="filterForm"
class="d-flex"
onsubmit="event.preventDefault()"
>
<div
class="oh-input-group oh-input__search-group"
:class="searchShow ? 'oh-input__search-group--show' : ''"
{% if comp_leave_requests or my_comp_leave_requests %}
<form
method="post"
hx-get="{% url 'filter-compensatory-leave' %}"
hx-target="#comp-leave-tabs"
id="filterForm"
class="d-flex"
onsubmit="event.preventDefault()"
>
<ion-icon
name="search-outline"
class="oh-input-group__icon oh-input-group__icon--left"
></ion-icon>
<input
type="text"
class="oh-input oh-input__icon"
aria-label="Search Input"
placeholder="{% trans 'Search' %}"
name="search"
onkeyup="$('.filterButton')[0].click()"
/>
</div>
<div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn ml-2"
@click="open = !open"
onclick="event.preventDefault()"
>
<ion-icon name="filter" class="mr-1"></ion-icon>{% trans "Filter" %}
<div id="filterCount"></div>
</button>
<div
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
x-show="open"
style="display: none"
@click.outside="open = false"
class="oh-input-group oh-input__search-group"
:class="searchShow ? 'oh-input__search-group--show' : ''"
>
<div class="oh-dropdown__filter-body">
<div class="oh-accordion">
<div
class="oh-accordion-header"
onclick="event.stopImmediatePropagation();$(this).parent().toggleClass('oh-accordion--show');"
<ion-icon
name="search-outline"
class="oh-input-group__icon oh-input-group__icon--left"
></ion-icon>
<input
type="text"
class="oh-input oh-input__icon"
aria-label="Search Input"
placeholder="{% trans 'Search' %}"
name="search"
onkeyup="$('.filterButton')[0].click()"
/>
</div>
<div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn ml-2"
@click="open = !open"
onclick="event.preventDefault()"
>
<ion-icon name="filter" class="mr-1"></ion-icon>{% trans "Filter" %}
<div id="filterCount"></div>
</button>
<div
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
x-show="open"
style="display: none"
@click.outside="open = false"
>
<div class="oh-dropdown__filter-body">
<div class="oh-accordion">
<div
class="oh-accordion-header"
onclick="event.stopImmediatePropagation();$(this).parent().toggleClass('oh-accordion--show');"
>
{% trans "Compensatory Leave Request" %}
</div>
<div class="oh-accordion-body">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<div class="oh-input-group">
<label class="oh-label">{% trans "Leave Type" %}</label>
{{form.leave_type_id}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Employee" %}</label>
{{form.employee_id}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Created By" %}</label>
{{form.created_by__employee_get}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label"
>{% trans "Requested days Up To" %}</label
>
{{form.number_of_days_up_to}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label"
>{% trans "Requested days More Than " %}</label
>
{{form.number_of_days_more_than}}
</div>
</div>
<div class="col-sm-12 col-md-12">
<div class="oh-input-group">
<label class="oh-label">{% trans "Status" %}</label>
{{form.status}}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="oh-dropdown__filter-footer">
<button
class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton"
type="submit"
>
{% trans "Compensatory Leave Request" %}
</div>
<div class="oh-accordion-body">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<div class="oh-input-group">
<label class="oh-label">{% trans "Leave Type" %}</label>
{{form.leave_type_id}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Employee" %}</label>
{{form.employee_id}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Created By" %}</label>
{{form.created_by__employee_get}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label"
>{% trans "Requested days Up To" %}</label
>
{{form.number_of_days_up_to}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label"
>{% trans "Requested days More Than " %}</label
>
{{form.number_of_days_more_than}}
</div>
</div>
{% trans "Filter" %}
</button>
</div>
</div>
</div>
<div class="col-sm-12 col-md-12">
<div class="oh-input-group">
<label class="oh-label">{% trans "Status" %}</label>
{{form.status}}
</div>
{% comment %} <div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn ml-2"
@click="open = !open"
onclick="event.preventDefault()"
>
<ion-icon name="library-outline" class="mr-1"></ion-icon>
{% trans "Group By" %}
</button>
<div
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
x-show="open"
@click.outside="open = false"
style="display: none"
>
<div class="oh-accordion">
<label>{% trans "Group By" %}</label>
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Field" %}</label>
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<select
class="oh-select mt-1 w-100"
id="id_field"
name="field"
class="select2-selection select2-selection--single"
>
{% for field in gp_fields %}
<option value="{{ field.0 }}">{% trans field.1 %}</option>
{% endfor %}
</select>
</div>
</div>
</div>
</div>
</div>
<div class="oh-dropdown__filter-footer">
<button
class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton"
type="submit"
>
{% trans "Filter" %}
</button>
</div>
</div>
</div>
{% comment %} <div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn ml-2"
@click="open = !open"
onclick="event.preventDefault()"
>
<ion-icon name="library-outline" class="mr-1"></ion-icon>
{% trans "Group By" %}
</button>
<div
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
x-show="open"
@click.outside="open = false"
style="display: none"
>
<div class="oh-accordion">
<label>{% trans "Group By" %}</label>
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Field" %}</label>
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<select
class="oh-select mt-1 w-100"
id="id_field"
name="field"
class="select2-selection select2-selection--single"
>
{% for field in gp_fields %}
<option value="{{ field.0 }}">{% trans field.1 %}</option>
{% endfor %}
</select>
</div>
</div>
</div>
</div>
</div>
</div> {% endcomment %}
</form>
<!-- end of filter -->
</div> {% endcomment %}
</form>
<!-- end of filter -->
{% endif %}
<!-- start of create button -->
<div class="oh-btn-group ml-2">

View File

@@ -47,157 +47,159 @@
></ion-icon>
</a>
</div>
<div class="oh-main__titlebar oh-main__titlebar--right">
<form
method="post"
hx-get="{% url 'leave-allocation-request-filter' %}"
hx-target="#view-container"
id="filterForm"
class="d-flex"
onsubmit="event.preventDefault()"
>
<div
class="oh-input-group oh-input__search-group"
:class="searchShow ? 'oh-input__search-group--show' : ''"
{% if leave_allocation_requests or my_leave_allocation_requests %}
<form
method="post"
hx-get="{% url 'leave-allocation-request-filter' %}"
hx-target="#view-container"
id="filterForm"
class="d-flex"
onsubmit="event.preventDefault()"
>
<ion-icon
name="search-outline"
class="oh-input-group__icon oh-input-group__icon--left"
></ion-icon>
<input
type="text"
class="oh-input oh-input__icon"
aria-label="Search Input"
placeholder="{% trans 'Search' %}"
name="search"
onkeyup="$('.filterButton')[0].click()"
/>
</div>
<div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn ml-2"
@click="open = !open"
onclick="event.preventDefault()"
>
<ion-icon name="filter" class="mr-1"></ion-icon>{% trans "Filter" %}
<div id="filterCount"></div>
</button>
<div
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
x-show="open"
style="display: none"
@click.outside="open = false"
class="oh-input-group oh-input__search-group"
:class="searchShow ? 'oh-input__search-group--show' : ''"
>
<div class="oh-dropdown__filter-body">
<div class="oh-accordion">
<div
class="oh-accordion-header"
onclick="event.stopImmediatePropagation();$(this).parent().toggleClass('oh-accordion--show');"
<ion-icon
name="search-outline"
class="oh-input-group__icon oh-input-group__icon--left"
></ion-icon>
<input
type="text"
class="oh-input oh-input__icon"
aria-label="Search Input"
placeholder="{% trans 'Search' %}"
name="search"
onkeyup="$('.filterButton')[0].click()"
/>
</div>
<div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn ml-2"
@click="open = !open"
onclick="event.preventDefault()"
>
<ion-icon name="filter" class="mr-1"></ion-icon>{% trans "Filter" %}
<div id="filterCount"></div>
</button>
<div
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
x-show="open"
style="display: none"
@click.outside="open = false"
>
<div class="oh-dropdown__filter-body">
<div class="oh-accordion">
<div
class="oh-accordion-header"
onclick="event.stopImmediatePropagation();$(this).parent().toggleClass('oh-accordion--show');"
>
{% trans "Leave Allocation Request" %}
</div>
<div class="oh-accordion-body">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<div class="oh-input-group">
<label class="oh-label">{% trans "Leave Type" %}</label>
{{form.leave_type_id}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Employee" %}</label>
{{form.employee_id}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Created By" %}</label>
{{form.created_by}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label"
>{% trans "Requested days Up To" %}</label
>
{{form.number_of_days_up_to}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label"
>{% trans "Requested days More Than " %}</label
>
{{form.number_of_days_more_than}}
</div>
</div>
<div class="col-sm-12 col-md-12">
<div class="oh-input-group">
<label class="oh-label">{% trans "Status" %}</label>
{{form.status}}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="oh-dropdown__filter-footer">
<button
class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton"
type="submit"
>
{% trans "Leave Allocation Request" %}
</div>
<div class="oh-accordion-body">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<div class="oh-input-group">
<label class="oh-label">{% trans "Leave Type" %}</label>
{{form.leave_type_id}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Employee" %}</label>
{{form.employee_id}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Created By" %}</label>
{{form.created_by}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label"
>{% trans "Requested days Up To" %}</label
>
{{form.number_of_days_up_to}}
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label"
>{% trans "Requested days More Than " %}</label
>
{{form.number_of_days_more_than}}
</div>
</div>
{% trans "Filter" %}
</button>
</div>
</div>
</div>
<div class="col-sm-12 col-md-12">
<div class="oh-input-group">
<label class="oh-label">{% trans "Status" %}</label>
{{form.status}}
</div>
<div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn ml-2"
@click="open = !open"
onclick="event.preventDefault()"
>
<ion-icon name="library-outline" class="mr-1"></ion-icon>
{% trans "Group By" %}
</button>
<div
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
x-show="open"
@click.outside="open = false"
style="display: none"
>
<div class="oh-accordion">
<label>{% trans "Group By" %}</label>
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Field" %}</label>
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<select
class="oh-select mt-1 w-100"
id="id_field"
name="field"
class="select2-selection select2-selection--single"
>
{% for field in gp_fields %}
<option value="{{ field.0 }}">{% trans field.1 %}</option>
{% endfor %}
</select>
</div>
</div>
</div>
</div>
</div>
<div class="oh-dropdown__filter-footer">
<button
class="oh-btn oh-btn--secondary oh-btn--small w-100 filterButton"
type="submit"
>
{% trans "Filter" %}
</button>
</div>
</div>
</div>
<div class="oh-dropdown" x-data="{open: false}">
<button
class="oh-btn ml-2"
@click="open = !open"
onclick="event.preventDefault()"
>
<ion-icon name="library-outline" class="mr-1"></ion-icon>
{% trans "Group By" %}
</button>
<div
class="oh-dropdown__menu oh-dropdown__menu--right oh-dropdown__filter p-4"
x-show="open"
@click.outside="open = false"
style="display: none"
>
<div class="oh-accordion">
<label>{% trans "Group By" %}</label>
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<label class="oh-label">{% trans "Field" %}</label>
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="oh-input-group">
<select
class="oh-select mt-1 w-100"
id="id_field"
name="field"
class="select2-selection select2-selection--single"
>
{% for field in gp_fields %}
<option value="{{ field.0 }}">{% trans field.1 %}</option>
{% endfor %}
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<!-- end of filter -->
</form>
<!-- end of filter -->
{% endif %}
<!-- start of create button -->
<div class="oh-btn-group ml-2">

View File

@@ -3673,7 +3673,11 @@ def leave_allocation_request_delete(request, req_id):
hx_target = request.META.get("HTTP_HX_TARGET")
if hx_target and hx_target == "view-container":
previous_data = request.GET.urlencode()
return redirect(f"/leave/leave-allocation-request-filter?{previous_data}")
leave_allocations = LeaveAllocationRequest.objects.all()
if leave_allocations.exists():
return redirect(f"/leave/leave-allocation-request-filter?{previous_data}")
else:
return HttpResponse("<script>location.reload();</script>")
return redirect(leave_allocation_request_view)
@@ -4030,27 +4034,62 @@ def create_leaverequest_comment(request, leave_id):
initial={"employee_id": emp.id, "request_id": leave_id}
)
messages.success(request, _("Comment added successfully!"))
if leave.employee_id.employee_work_info.reporting_manager_id is not None:
if request.user.employee_get.id == leave.employee_id.id:
rec = (
leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id
)
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{leave.employee_id}'s leave request has received a comment.",
verb_ar=f"تلقت طلب إجازة {leave.employee_id} تعليقًا.",
verb_de=f"{leave.employee_id}s Urlaubsantrag hat einen Kommentar erhalten.",
verb_es=f"La solicitud de permiso de {leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande de congé de {leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/request-view?id={leave.id}",
icon="chatbox-ellipses",
)
elif (
request.user.employee_get.id
== leave.employee_id.employee_work_info.reporting_manager_id.id
work_info = EmployeeWorkInformation.objects.filter(
employee_id=leave.employee_id
)
if work_info.exists():
if (
leave.employee_id.employee_work_info.reporting_manager_id
is not None
):
if request.user.employee_get.id == leave.employee_id.id:
rec = (
leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id
)
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{leave.employee_id}'s leave request has received a comment.",
verb_ar=f"تلقت طلب إجازة {leave.employee_id} تعليقًا.",
verb_de=f"{leave.employee_id}s Urlaubsantrag hat einen Kommentar erhalten.",
verb_es=f"La solicitud de permiso de {leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande de congé de {leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/request-view?id={leave.id}",
icon="chatbox-ellipses",
)
elif (
request.user.employee_get.id
== leave.employee_id.employee_work_info.reporting_manager_id.id
):
rec = leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
recipient=rec,
verb="Your leave request has received a comment.",
verb_ar="تلقى طلب إجازتك تعليقًا.",
verb_de="Ihr Urlaubsantrag hat einen Kommentar erhalten.",
verb_es="Tu solicitud de permiso ha recibido un comentario.",
verb_fr="Votre demande de congé a reçu un commentaire.",
redirect=f"/leave/user-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
else:
rec = [
leave.employee_id.employee_user_id,
leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id,
]
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{leave.employee_id}'s leave request has received a comment.",
verb_ar=f"تلقت طلب إجازة {leave.employee_id} تعليقًا.",
verb_de=f"{leave.employee_id}s Urlaubsantrag hat einen Kommentar erhalten.",
verb_es=f"La solicitud de permiso de {leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande de congé de {leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/request-view?id={leave.id}",
icon="chatbox-ellipses",
)
else:
rec = leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
@@ -4063,35 +4102,6 @@ def create_leaverequest_comment(request, leave_id):
redirect=f"/leave/user-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
else:
rec = [
leave.employee_id.employee_user_id,
leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id,
]
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{leave.employee_id}'s leave request has received a comment.",
verb_ar=f"تلقت طلب إجازة {leave.employee_id} تعليقًا.",
verb_de=f"{leave.employee_id}s Urlaubsantrag hat einen Kommentar erhalten.",
verb_es=f"La solicitud de permiso de {leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande de congé de {leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/request-view?id={leave.id}",
icon="chatbox-ellipses",
)
else:
rec = leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
recipient=rec,
verb="Your leave request has received a comment.",
verb_ar="تلقى طلب إجازتك تعليقًا.",
verb_de="Ihr Urlaubsantrag hat einen Kommentar erhalten.",
verb_es="Tu solicitud de permiso ha recibido un comentario.",
verb_fr="Votre demande de congé a reçu un commentaire.",
redirect=f"/leave/user-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
return render(
request,
"leave/leave_request/leave_comment.html",
@@ -4221,27 +4231,62 @@ def create_allocationrequest_comment(request, leave_id):
initial={"employee_id": emp.id, "request_id": leave_id}
)
messages.success(request, _("Comment added successfully!"))
if leave.employee_id.employee_work_info.reporting_manager_id is not None:
if request.user.employee_get.id == leave.employee_id.id:
rec = (
leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id
)
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{leave.employee_id}'s leave allocation request has received a comment.",
verb_ar=f"تلقت طلب تخصيص الإجازة لـ {leave.employee_id} تعليقًا.",
verb_de=f"{leave.employee_id}s Anfrage zur Urlaubszuweisung hat einen Kommentar erhalten.",
verb_es=f"La solicitud de asignación de permisos de {leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande d'allocation de congé de {leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/leave-allocation-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
elif (
request.user.employee_get.id
== leave.employee_id.employee_work_info.reporting_manager_id.id
work_info = EmployeeWorkInformation.objects.filter(
employee_id=leave.employee_id
)
if work_info.exists():
if (
leave.employee_id.employee_work_info.reporting_manager_id
is not None
):
if request.user.employee_get.id == leave.employee_id.id:
rec = (
leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id
)
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{leave.employee_id}'s leave allocation request has received a comment.",
verb_ar=f"تلقت طلب تخصيص الإجازة لـ {leave.employee_id} تعليقًا.",
verb_de=f"{leave.employee_id}s Anfrage zur Urlaubszuweisung hat einen Kommentar erhalten.",
verb_es=f"La solicitud de asignación de permisos de {leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande d'allocation de congé de {leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/leave-allocation-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
elif (
request.user.employee_get.id
== leave.employee_id.employee_work_info.reporting_manager_id.id
):
rec = leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
recipient=rec,
verb="Your leave allocation request has received a comment.",
verb_ar="تلقى طلب تخصيص الإجازة الخاص بك تعليقًا.",
verb_de="Ihr Antrag auf Urlaubszuweisung hat einen Kommentar erhalten.",
verb_es="Tu solicitud de asignación de permisos ha recibido un comentario.",
verb_fr="Votre demande d'allocation de congé a reçu un commentaire.",
redirect=f"/leave/leave-allocation-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
else:
rec = [
leave.employee_id.employee_user_id,
leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id,
]
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{leave.employee_id}'s leave allocation request has received a comment.",
verb_ar=f"تلقت طلب تخصيص الإجازة لـ {leave.employee_id} تعليقًا.",
verb_de=f"{leave.employee_id}s Anfrage zur Urlaubszuweisung hat einen Kommentar erhalten.",
verb_es=f"La solicitud de asignación de permisos de {leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande d'allocation de congé de {leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/leave-allocation-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
else:
rec = leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
@@ -4254,35 +4299,6 @@ def create_allocationrequest_comment(request, leave_id):
redirect=f"/leave/leave-allocation-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
else:
rec = [
leave.employee_id.employee_user_id,
leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id,
]
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{leave.employee_id}'s leave allocation request has received a comment.",
verb_ar=f"تلقت طلب تخصيص الإجازة لـ {leave.employee_id} تعليقًا.",
verb_de=f"{leave.employee_id}s Anfrage zur Urlaubszuweisung hat einen Kommentar erhalten.",
verb_es=f"La solicitud de asignación de permisos de {leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande d'allocation de congé de {leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/leave-allocation-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
else:
rec = leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
recipient=rec,
verb="Your leave allocation request has received a comment.",
verb_ar="تلقى طلب تخصيص الإجازة الخاص بك تعليقًا.",
verb_de="Ihr Antrag auf Urlaubszuweisung hat einen Kommentar erhalten.",
verb_es="Tu solicitud de asignación de permisos ha recibido un comentario.",
verb_fr="Votre demande d'allocation de congé a reçu un commentaire.",
redirect=f"/leave/leave-allocation-request-view?id={leave.id}",
icon="chatbox-ellipses",
)
return render(
request,
"leave/leave_allocation_request/leave_allocation_comment.html",
@@ -4672,7 +4688,11 @@ def delete_compensatory_leave(request, comp_id):
except:
messages.error(request, _("Sorry, something went wrong!"))
return redirect(filter_compensatory_leave)
com_leave_requests = CompensatoryLeaveRequest.objects.all()
if com_leave_requests.exists():
return redirect(filter_compensatory_leave)
else:
return HttpResponse("<script>location.reload();</script>")
@login_required
@@ -4850,30 +4870,62 @@ def create_compensatory_leave_comment(request, comp_leave_id):
initial={"employee_id": emp.id, "request_id": comp_leave}
)
messages.success(request, _("Comment added successfully!"))
if (
comp_leave.employee_id.employee_work_info.reporting_manager_id
is not None
):
if request.user.employee_get.id == comp_leave.employee_id.id:
rec = (
comp_leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id
)
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{comp_leave.employee_id}'s Compensatory leave request has received a comment.",
verb_ar=f"تلقى طلب إجازة الاعتذار لـ {comp_leave.employee_id} تعليقًا.",
verb_de=f"Der Antrag auf Freizeitausgleich von {comp_leave.employee_id} hat einen Kommentar erhalten.",
verb_es=f"La solicitud de permiso compensatorio de {comp_leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande de congé compensatoire de {comp_leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/view-compensatory-leave?id={comp_leave.id}",
icon="chatbox-ellipses",
)
elif (
request.user.employee_get.id
== comp_leave.employee_id.employee_work_info.reporting_manager_id.id
work_info = EmployeeWorkInformation.objects.filter(
employee_id=comp_leave.employee_id
)
if work_info.exists():
if (
comp_leave.employee_id.employee_work_info.reporting_manager_id
is not None
):
if request.user.employee_get.id == comp_leave.employee_id.id:
rec = (
comp_leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id
)
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{comp_leave.employee_id}'s Compensatory leave request has received a comment.",
verb_ar=f"تلقى طلب إجازة الاعتذار لـ {comp_leave.employee_id} تعليقًا.",
verb_de=f"Der Antrag auf Freizeitausgleich von {comp_leave.employee_id} hat einen Kommentar erhalten.",
verb_es=f"La solicitud de permiso compensatorio de {comp_leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande de congé compensatoire de {comp_leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/view-compensatory-leave?id={comp_leave.id}",
icon="chatbox-ellipses",
)
elif (
request.user.employee_get.id
== comp_leave.employee_id.employee_work_info.reporting_manager_id.id
):
rec = comp_leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
recipient=rec,
verb="Your compensatory leave request has received a comment.",
verb_ar="تلقى طلب إجازة العوض الخاص بك تعليقًا.",
verb_de="Ihr Antrag auf Freizeitausgleich hat einen Kommentar erhalten.",
verb_es="Su solicitud de permiso compensatorio ha recibido un comentario.",
verb_fr="Votre demande de congé compensatoire a reçu un commentaire.",
redirect=f"/leave/view-compensatory-leave?id={comp_leave.id}",
icon="chatbox-ellipses",
)
else:
rec = [
comp_leave.employee_id.employee_user_id,
comp_leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id,
]
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{comp_leave.employee_id}'s compensatory leave request has received a comment.",
verb_ar=f"تلقى طلب إجازة التعويض لـ {comp_leave.employee_id} تعليقًا.",
verb_de=f"Der Antrag auf Freizeitausgleich von {comp_leave.employee_id} hat einen Kommentar erhalten.",
verb_es=f"El pedido de permiso compensatorio de {comp_leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande de congé compensatoire de {comp_leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/view-compensatory-leave?id={comp_leave.id}",
icon="chatbox-ellipses",
)
else:
rec = comp_leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
@@ -4886,35 +4938,6 @@ def create_compensatory_leave_comment(request, comp_leave_id):
redirect=f"/leave/view-compensatory-leave?id={comp_leave.id}",
icon="chatbox-ellipses",
)
else:
rec = [
comp_leave.employee_id.employee_user_id,
comp_leave.employee_id.employee_work_info.reporting_manager_id.employee_user_id,
]
notify.send(
request.user.employee_get,
recipient=rec,
verb=f"{comp_leave.employee_id}'s compensatory leave request has received a comment.",
verb_ar=f"تلقى طلب إجازة التعويض لـ {comp_leave.employee_id} تعليقًا.",
verb_de=f"Der Antrag auf Freizeitausgleich von {comp_leave.employee_id} hat einen Kommentar erhalten.",
verb_es=f"El pedido de permiso compensatorio de {comp_leave.employee_id} ha recibido un comentario.",
verb_fr=f"La demande de congé compensatoire de {comp_leave.employee_id} a reçu un commentaire.",
redirect=f"/leave/view-compensatory-leave?id={comp_leave.id}",
icon="chatbox-ellipses",
)
else:
rec = comp_leave.employee_id.employee_user_id
notify.send(
request.user.employee_get,
recipient=rec,
verb="Your compensatory leave request has received a comment.",
verb_ar="تلقى طلب إجازة العوض الخاص بك تعليقًا.",
verb_de="Ihr Antrag auf Freizeitausgleich hat einen Kommentar erhalten.",
verb_es="Su solicitud de permiso compensatorio ha recibido un comentario.",
verb_fr="Votre demande de congé compensatoire a reçu un commentaire.",
redirect=f"/leave/view-compensatory-leave?id={comp_leave.id}",
icon="chatbox-ellipses",
)
return render(
request,
"leave/compensatory_leave/compensatory_leave_comment.html",