Files
ihrm/employee/sidebar.py
2026-01-13 14:45:17 +05:30

113 lines
3.5 KiB
Python

"""
employee/sidebar.py
To set Horilla sidebar for employee
"""
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
from accessibility.methods import check_is_accessible
from base.templatetags.basefilters import is_reportingmanager
from horilla.horilla_middlewares import _thread_locals
request = getattr(_thread_locals, "request", None)
MENU = _("Employee")
IMG_SRC = "images/ui/employees.svg"
SUBMENUS = [
{
"menu": _("Profile"),
"redirect": reverse_lazy("employee-profile"),
"accessibility": "employee.sidebar.profile_accessibility",
},
{
"menu": _("Employees"),
"redirect": reverse_lazy("employee-view"),
"accessibility": "employee.sidebar.employee_accessibility",
},
{
"menu": _("Document Requests"),
"redirect": reverse_lazy("document-request-view"),
"accessibility": "employee.sidebar.document_accessibility",
},
{
"menu": _("Shift Requests"),
"redirect": reverse_lazy("shift-request-view"),
},
{
"menu": _("Work Type Requests"),
"redirect": reverse_lazy("work-type-request-view"),
},
{
"menu": _("Rotating Shift Assign"),
"redirect": reverse_lazy("rotating-shift-assign"),
"accessibility": "employee.sidebar.rotating_shift_accessibility",
},
{
"menu": _("Rotating Work Type Assign"),
"redirect": reverse_lazy("rotating-work-type-assign"),
"accessibility": "employee.sidebar.rotating_work_type_accessibility",
},
{
"menu": _("Disciplinary Actions"),
"redirect": reverse_lazy("disciplinary-actions"),
},
{
"menu": _("Policies"),
"redirect": reverse_lazy("view-policies"),
},
{
"menu": _("Organization Chart"),
"redirect": reverse_lazy("organisation-chart"),
},
]
def profile_accessibility(request, submenu, user_perms, *args, **kwargs):
accessible = False
try:
accessible = request.session["selected_company"] == "all" or str(
request.user.employee_get.employee_work_info.company_id.id
) == str(request.session["selected_company"])
finally:
return accessible
# try:
# if accessible:
# submenu["redirect"] = reverse_lazy("employee-profile", kwargs={"obj_id": request.user.employee_get.id})
# except Exception:
# # If an exception occurs, do nothing
# pass
def document_accessibility(request, submenu, user_perms, *args, **kwargs):
return request.user.has_perm(
"horilla_documents.view_documentrequest"
) or is_reportingmanager(request.user)
def rotating_shift_accessibility(request, submenu, user_perms, *args, **kwargs):
return request.user.has_perm(
"base.view_rotatingshiftassign"
) or is_reportingmanager(request.user)
def rotating_work_type_accessibility(request, submenu, user_perms, *args, **kwargs):
return request.user.has_perm(
"base.view_rotatingworktypeassign"
) or is_reportingmanager(request.user)
def employee_accessibility(request, submenu, user_perms, *args, **kwargs):
"""
Employee accessibility method
"""
cache_key = request.session.session_key + "accessibility_filter"
employee = getattr(request.user, "employee_get", None)
return (
is_reportingmanager(request.user)
or request.user.has_perm("employee.view_employee")
or check_is_accessible("employee_view", cache_key, employee)
)