Files
ihrm/employee/cbv/accessibility.py

192 lines
5.1 KiB
Python

"""
Accessiblility
"""
from django.contrib.auth.context_processors import PermWrapper
from base.methods import check_manager
from employee.models import Employee
from horilla_audit.models import AccountBlockUnblock
def edit_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
To access edit
"""
# employee = Employee.objects.get(id=instance.pk)
if (
(request.user.has_perm("employee.change_employee"))
or check_manager(request.user.employee_get, instance)
or request.user == instance.employee_user_id
):
return True
return False
def password_reset_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
To password reset
"""
# employee = Employee.objects.get(id=instance.pk)
if (
(request.user.has_perm("employee.add_employee"))
or check_manager(request.user.employee_get, instance)
or request.user == instance.employee_user_id
):
return True
return False
def block_account_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
To block account
"""
enabled_block_unblock = (
AccountBlockUnblock.objects.exists()
and AccountBlockUnblock.objects.first().is_enabled
)
if (
enabled_block_unblock
and request.user.has_perm("employee.change_employee")
and instance.employee_user_id.is_active
):
return True
return False
def un_block_account_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
To block account
"""
enabled_block_unblock = (
AccountBlockUnblock.objects.exists()
and AccountBlockUnblock.objects.first().is_enabled
)
if (
enabled_block_unblock
and request.user.has_perm("employee.change_employee")
and not instance.employee_user_id.is_active
):
return True
return False
def action_accessible(request, instance, user_perms):
"""
To access archive and delete functionalities
"""
if request.user.has_perm("employee.change_employee"):
return True
def permission_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
accessibility for permissions tab in employee profile and individual view
"""
if request.user.has_perm("auth.view_permissions") or request.user.has_perm(
"auth.view_group"
):
return True
return False
def note_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
accessibility for note tab
"""
if instance.employee_user_id != request.user or request.user.is_superuser:
if request.user.has_perm("employee.view_employeenote") or check_manager(
request.user.employee_get, instance
):
return True
return False
def document_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
accessibility for document tab
"""
employee = Employee.objects.get(id=instance.pk)
if (
request.user.has_perm("horilla_documents.view_document")
or request.user == employee.employee_user_id
):
return True
return False
def workshift_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
permission for work type and shift tab in employee profile
"""
employee = Employee.objects.get(id=instance.pk)
check_manages = check_manager(request.user.employee_get, instance)
if (
request.user == employee.employee_user_id
or check_manages
or request.user.has_perm("base.view_worktyperequest")
or request.user.has_perm("base.view_shiftrequest")
):
return True
return False
def mail_log_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
permission for mail log tab
"""
if request.user.has_perm("employee.view_employee"):
return True
return False
def history_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
accessibility for history tab
"""
if request.user.has_perm(
"employee.view_historicalemployeeworkinformation"
) or check_manager(request.user.employee_get, instance):
return True
return False
def project_accessibility(
request, instance: object = None, user_perms: PermWrapper = [], *args, **kwargs
) -> bool:
"""
permission for work type and shift tab in employee profile
"""
employee = Employee.objects.get(id=instance.pk)
check_manages = check_manager(request.user.employee_get, instance)
if (
request.user == employee.employee_user_id
or check_manages
or request.user.has_perm("project.view_project")
):
return True
return False