[ADD] PROJECT: Project management module for Horilla (beta)

This commit is contained in:
Horilla
2025-02-13 17:15:29 +05:30
parent 0913ff131a
commit 509aceeacd
73 changed files with 9020 additions and 0 deletions

105
project/sidebar.py Normal file
View 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