[ADD] PROJECT: Project management module for Horilla (beta)
This commit is contained in:
105
project/sidebar.py
Normal file
105
project/sidebar.py
Normal file
@@ -0,0 +1,105 @@
|
||||
"""
|
||||
project/sidebar.py
|
||||
"""
|
||||
|
||||
from django.urls import reverse
|
||||
from base.templatetags.basefilters import is_reportingmanager
|
||||
from django.utils.translation import gettext_lazy as trans
|
||||
from django.contrib.auth.context_processors import PermWrapper
|
||||
|
||||
|
||||
from project.methods import any_project_manager, any_project_member, any_task_manager, any_task_member
|
||||
|
||||
MENU = trans("Project")
|
||||
IMG_SRC = "images/ui/project.png"
|
||||
ACCESSIBILITY = "project.sidebar.menu_accessibilty"
|
||||
|
||||
SUBMENUS = [
|
||||
{
|
||||
"menu": trans("Dashboard"),
|
||||
"redirect": reverse("project-dashboard-view"),
|
||||
"accessibility": "project.sidebar.dashboard_accessibility"
|
||||
},
|
||||
{
|
||||
"menu": trans("Projects"),
|
||||
"redirect": reverse("project-view"),
|
||||
"accessibility": "project.sidebar.project_accessibility",
|
||||
},
|
||||
{
|
||||
"menu": trans("Tasks"),
|
||||
"redirect": reverse("task-all"),
|
||||
"accessibility": "project.sidebar.task_accessibility",
|
||||
},
|
||||
{
|
||||
"menu": trans("Timesheet"),
|
||||
"redirect": reverse("view-time-sheet"),
|
||||
"accessibility": "project.sidebar.timesheet_accessibility",
|
||||
},
|
||||
]
|
||||
|
||||
def menu_accessibilty(
|
||||
request, _menu: str = "", user_perms: PermWrapper = [], *args, **kwargs
|
||||
) -> bool:
|
||||
user = request.user
|
||||
return (
|
||||
"project" in user_perms or
|
||||
is_reportingmanager(user) or
|
||||
any_project_manager(user) or
|
||||
any_project_member(user) or
|
||||
any_task_manager(user) or
|
||||
any_task_member(user)
|
||||
)
|
||||
|
||||
def dashboard_accessibility(request, submenu, user_perms, *args, **kwargs):
|
||||
user = request.user
|
||||
if (
|
||||
user.has_perm("project.view_project") or
|
||||
is_reportingmanager(user) or
|
||||
any_project_manager(user) or
|
||||
any_task_manager(user)
|
||||
):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def project_accessibility(request, submenu, user_perms, *args, **kwargs):
|
||||
user = request.user
|
||||
if (
|
||||
user.has_perm("project.view_project") or
|
||||
is_reportingmanager(user) or
|
||||
any_project_manager(user) or
|
||||
any_project_member(user) or
|
||||
any_task_manager(user) or
|
||||
any_task_member(user)
|
||||
):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def task_accessibility(request, submenu, user_perms, *args, **kwargs):
|
||||
user = request.user
|
||||
if (
|
||||
user.has_perm("project.view_task") or
|
||||
is_reportingmanager(user) or
|
||||
any_project_manager(user) or
|
||||
any_project_member(user) or
|
||||
any_task_manager(user) or
|
||||
any_task_member(user)
|
||||
):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def timesheet_accessibility(request, submenu, user_perms, *args, **kwargs):
|
||||
user = request.user
|
||||
if (
|
||||
user.has_perm("project.view_timesheet") or
|
||||
is_reportingmanager(user) or
|
||||
any_project_manager(user) or
|
||||
any_project_member(user) or
|
||||
any_task_manager(user) or
|
||||
any_task_member(user)
|
||||
):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
Reference in New Issue
Block a user