Files
ihrm/recruitment/sidebar.py

140 lines
4.2 KiB
Python

"""
recruitment/sidebar.py
To set Horilla sidebar for onboarding
"""
from django.contrib.auth.context_processors import PermWrapper
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from recruitment.models import InterviewSchedule
from recruitment.templatetags.recruitmentfilters import (
is_recruitmentmangers,
is_stagemanager,
)
MENU = _("Recruitment")
ACCESSIBILITY = "recruitment.sidebar.menu_accessibilty"
IMG_SRC = "images/ui/recruitment.svg"
SUBMENUS = [
{
"menu": _("Dashboard"),
"redirect": reverse("recruitment-dashboard"),
},
{
"menu": _("Recruitment Pipeline"),
"redirect": reverse("pipeline"),
"accessibility": "recruitment.sidebar.pipeline_accessibility",
},
{
"menu": _("Recruitment Survey"),
"redirect": reverse("recruitment-survey-question-template-view"),
"accessibility": "recruitment.sidebar.survey_accessibility",
},
{
"menu": _("Candidates"),
"redirect": reverse("candidate-view"),
"accessibility": "recruitment.sidebar.candidates_accessibility",
},
{
"menu": _("Interview"),
"redirect": reverse("interview-view"),
"accessibility": "recruitment.sidebar.interview_accessibility",
},
{
"menu": _("Recruitment"),
"redirect": reverse("recruitment-view"),
"accessibility": "recruitment.sidebar.recruitment_accessibility",
},
{
"menu": _("Open Jobs"),
"redirect": reverse("open-recruitments"),
"accessibility": "recruitment.sidebar.recruitment_accessibility",
},
{
"menu": _("Stages"),
"redirect": reverse("rec-stage-view"),
"accessibility": "recruitment.sidebar.stage_accessibility",
},
{
"menu": _("Skill Zone"),
"redirect": reverse("skill-zone-view"),
"accessibility": "recruitment.sidebar.skill_zone_accessibility",
},
]
def menu_accessibilty(
request, _menu: str = "", user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
return is_stagemanager(request.user) or "recruitment" in user_perms
def pipeline_accessibility(
request, _submenu: dict = {}, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
_submenu["redirect"] = _submenu["redirect"] + "?closed=false"
return is_stagemanager(request.user) or request.user.has_perm(
"recruitment.view_recruitment"
)
def candidates_accessibility(
request, _submenu: dict = {}, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
return request.user.has_perm("recruitment.view_candidate")
def survey_accessibility(
request, _submenu: dict = {}, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
_submenu["redirect"] = _submenu["redirect"] + "?closed=false"
return is_recruitmentmangers(request.user) or request.user.has_perm(
"recruitment.view_recruitmentsurvey"
)
def recruitment_accessibility(
request, _submenu: dict = {}, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
return request.user.has_perm("recruitment.view_recruitment")
def interview_accessibility(
request, _submenu: dict = {}, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
interviews = InterviewSchedule.objects.all()
interviewers = []
for interview in interviews:
for emp in interview.employee_id.all():
interviewers.append(emp)
if (
getattr(request.user, "employee_get", None)
and request.user.employee_get in interviewers
):
view_interview = True
else:
view_interview = False
return request.user.has_perm("recruitment.view_interviewschedule") or view_interview
def stage_accessibility(
request, _submenu: dict = {}, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
return request.user.has_perm("recruitment.view_stage")
def skill_zone_accessibility(
request, _submenu: dict = {}, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
return is_stagemanager(request.user) or request.user.has_perm(
"recruitment.view_skillzone"
)
def dashboard_accessibility(request, submenu, user_perms, *args, **kwargs):
return is_stagemanager(request.user) or "recruitment" in user_perms