""" 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) )