CBV Updates: 31st May

This commit is contained in:
Horilla
2025-05-31 12:42:14 +05:30
parent 569a804bdc
commit 85f9eb64a9
3 changed files with 105 additions and 32 deletions

View File

@@ -15,11 +15,11 @@ def edit_accessibility(
"""
To access edit
"""
employee = Employee.objects.get(id=instance.pk)
# 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 == employee.employee_user_id
or request.user == instance.employee_user_id
):
return True
return False
@@ -31,11 +31,11 @@ def password_reset_accessibility(
"""
To password reset
"""
employee = Employee.objects.get(id=instance.pk)
# 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 == employee.employee_user_id
or request.user == instance.employee_user_id
):
return True
return False

View File

@@ -2,12 +2,11 @@
This page handles the cbv methods of employee individual view
"""
from audioop import reverse
from django.contrib import messages
from django.contrib.auth.models import Group
from django.http import HttpResponse
from django.shortcuts import redirect, render
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator
from django.utils.translation import gettext_lazy as _
from django.views import View
@@ -15,6 +14,7 @@ from django.views import View
from base import views as base_views
from base.cbv.mail_log_tab import MailLogTabList
from base.cbv.work_shift_tab import WorkAndShiftTabView
from base.context_processors import enable_profile_edit
from base.forms import AddToUserGroupForm
from employee import views
from employee.filters import EmployeeFilter
@@ -23,6 +23,8 @@ from horilla import settings
from horilla_views.cbv_methods import login_required, permission_required
from horilla_views.generic.cbv.views import HorillaProfileView
Employee.cbv_employee_profile_edi_url = reverse_lazy("edit-profile")
class EmployeeProfileView(HorillaProfileView):
"""
@@ -36,40 +38,66 @@ class EmployeeProfileView(HorillaProfileView):
push_url = "employee-view-individual"
key_name = "obj_id"
actions = [
{
"title": "Edit",
"src": f"/{settings.STATIC_URL}images/ui/editing.png",
"accessibility": "employee.cbv.accessibility.edit_accessibility",
"attrs": """
def __init__(self, **kwargs):
super().__init__(**kwargs)
employee = self.request.user.employee_get
if self.request.user.has_perm("employee.change_employee"):
self.actions = [
{
"title": "Edit",
"src": f"/{settings.STATIC_URL}images/ui/editing.png",
"accessibility": "employee.cbv.accessibility.edit_accessibility",
"attrs": """
onclick="window.location.href='{get_update_url}'"
""",
},
{
"title": "Block Account",
"src": f"/{settings.STATIC_URL}images/ui/block-user.png",
"accessibility": "employee.cbv.accessibility.block_account_accessibility",
"attrs": """
},
{
"title": "Block Account",
"src": f"/{settings.STATIC_URL}images/ui/block-user.png",
"accessibility": "employee.cbv.accessibility.block_account_accessibility",
"attrs": """
id="block-account"
""",
},
{
"title": "Un-Block Account",
"src": f"/{settings.STATIC_URL}images/ui/unlock.png",
"accessibility": "employee.cbv.accessibility.un_block_account_accessibility",
"attrs": """
},
{
"title": "Un-Block Account",
"src": f"/{settings.STATIC_URL}images/ui/unlock.png",
"accessibility": "employee.cbv.accessibility.un_block_account_accessibility",
"attrs": """
id="block-account"
""",
},
{
"title": "Send password reset link",
"src": f"/{settings.STATIC_URL}images/ui/key.png",
"accessibility": "employee.cbv.accessibility.password_reset_accessibility",
"attrs": """
},
{
"title": "Send password reset link",
"src": f"/{settings.STATIC_URL}images/ui/key.png",
"accessibility": "employee.cbv.accessibility.password_reset_accessibility",
"attrs": """
onclick="$('#reset-button').click();"
""",
},
]
},
]
elif employee.pk == kwargs["pk"] and enable_profile_edit(self.request).get(
"profile_edit_enabled"
):
self.actions = [
{
"title": "Edit Profile",
"src": f"/{settings.STATIC_URL}images/ui/editing.png",
"accessibility": "employee.cbv.accessibility.edit_accessibility",
"attrs": """
onclick="window.location.href='{cbv_employee_profile_edi_url}'"
""",
},
{
"title": "Send password reset link",
"src": f"/{settings.STATIC_URL}images/ui/key.png",
"accessibility": "employee.cbv.accessibility.password_reset_accessibility",
"attrs": """
onclick="$('#reset-button').click();"
""",
},
]
EmployeeProfileView.add_tab(

View File

@@ -11,11 +11,15 @@ from django.utils.decorators import method_decorator
from django.utils.translation import gettext_lazy as _
from accessibility.cbv_decorators import enter_if_accessible
from accessibility.models import DefaultAccessibility
from base.context_processors import enable_profile_edit
from base.methods import is_reportingmanager
from employee.filters import EmployeeFilter
from employee.forms import BulkUpdateFieldForm, EmployeeExportExcelForm
from employee.models import Employee, EmployeeBankDetails, EmployeeWorkInformation
from employee.templatetags.employee_filter import edit_accessibility
from employee.views import _check_reporting_manager
from horilla.horilla_middlewares import _thread_locals
from horilla.signals import post_generic_delete
from horilla_views.cbv_methods import login_required
from horilla_views.forms import DynamicBulkUpdateForm
@@ -27,6 +31,30 @@ from horilla_views.generic.cbv.views import (
)
def profile_edit_accessibility_display(self):
"""
Profile edit accessible
"""
request = _thread_locals.request
if self.pk in request.all_edit_accessible_employees:
return "Revoke Profile Edit Access"
return "Add Profile Edit Access"
def toggle_profile_edit_access_url(self):
"""
toggle profiel edit access url get method
"""
return (
reverse("profile-edit-access", kwargs={"emp_id": self.pk})
+ "?feature=profile_edit"
)
Employee.profile_edit_accessibility_display = profile_edit_accessibility_display
Employee.toggle_profile_edit_access_url = toggle_profile_edit_access_url
@method_decorator(login_required, name="dispatch")
@method_decorator(
enter_if_accessible(
@@ -467,6 +495,11 @@ class EmployeeCard(HorillaCardView):
def __init__(self, **kwargs: Any) -> None:
super().__init__(**kwargs)
self.search_url = reverse("employees-card")
self.request.all_edit_accessible_employees = (
DefaultAccessibility.objects.filter(feature="profile_edit").values_list(
"employees__pk", flat=True
)
)
if self.request.user.has_perm(
"employee.change_employee"
) or is_reportingmanager(self.request):
@@ -505,6 +538,18 @@ class EmployeeCard(HorillaCardView):
""",
},
]
if enable_profile_edit(self.request).get("profile_edit_enabled"):
self.actions.append(
{
"action": "profile_edit_accessibility_display",
"accessibility": "employee.cbv.accessibility.action_accessible",
"attrs": """
href="{toggle_profile_edit_access_url}"
class="oh-dropdown__link"
style="cursor: pointer;"
""",
}
)
else:
self.actions = None