Merge master
This commit is contained in:
@@ -80,7 +80,7 @@ class AssetBatchNoNav(HorillaNavView):
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("asset-batch-list")
|
||||
|
||||
if self.request.user.has_perm("asset.view_assetlot"):
|
||||
if self.request.user.has_perm("asset.add_assetlot"):
|
||||
self.create_attrs = f"""
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
|
||||
@@ -224,14 +224,14 @@ class AssetCategoryNav(HorillaNavView):
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("asset-category-view-search-filter")
|
||||
self.actions = []
|
||||
if self.request.user.has_perm("add_assetcategory"):
|
||||
if self.request.user.has_perm("asset.add_assetcategory"):
|
||||
self.create_attrs = f"""
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
hx-get="{reverse('asset-category-creation')}"
|
||||
hx-target="#genericModalBody"
|
||||
"""
|
||||
if self.request.user.has_perm("add_assetcategory"):
|
||||
if self.request.user.has_perm("asset.add_assetcategory"):
|
||||
self.actions.append(
|
||||
{
|
||||
"action": _("Import"),
|
||||
@@ -246,7 +246,7 @@ class AssetCategoryNav(HorillaNavView):
|
||||
},
|
||||
)
|
||||
|
||||
if self.request.user.has_perm("view_asset"):
|
||||
if self.request.user.has_perm("asset.view_asset"):
|
||||
self.actions.append(
|
||||
{
|
||||
"action": _("Export"),
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
{% load i18n %}
|
||||
{% load i18n %} {% load basefilters %}
|
||||
<div class="oh-btn-group">
|
||||
<a data-toggle="oh-modal-toggle"
|
||||
data-target="#validateAttendanceRequest"
|
||||
hx-get="{% url 'validate-attendance-request' instance.id %}" hx-trigger="click" hx-target="#validateAttendanceRequestModalBody"
|
||||
class="oh-btn oh-btn--light-bkg w-100"
|
||||
title="{% trans 'View' %}"><ion-icon name="eye-outline" role="img"></ion-icon></a>
|
||||
|
||||
<a
|
||||
type="submit"
|
||||
class="oh-btn oh-btn--danger-outline oh-btn--light-bkg w-100"
|
||||
title="{% trans 'Cancel / Reject' %}"
|
||||
onclick="event.stopPropagation();return confirm('{% trans "Are you sure want to cancel the request?" %}');"
|
||||
href="{% url 'cancel-validate-attendance-request' instance.id %}"
|
||||
>
|
||||
<ion-icon name="close-circle-outline"></ion-icon>
|
||||
</a>
|
||||
{% if request.user.is_superuser or perms.attendance.change_attendance or request.user|is_reportingmanager %}
|
||||
<a
|
||||
type="submit"
|
||||
class="oh-btn oh-btn--danger-outline oh-btn--light-bkg w-100"
|
||||
title="{% trans 'Cancel / Reject' %}"
|
||||
onclick="event.stopPropagation();return confirm('{% trans "Are you sure want to cancel the request?" %}');"
|
||||
href="{% url 'cancel-validate-attendance-request' instance.id %}"
|
||||
>
|
||||
<ion-icon name="close-circle-outline"></ion-icon>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -89,11 +89,13 @@
|
||||
</table>
|
||||
<div class="oh-modal__button-container text-center">
|
||||
<div class="oh-btn-group d-flex flex-row-reverse">
|
||||
<a href="{% url 'cancel-validate-attendance-request' attendance.id %}" data-toggle="oh-modal-toggle"
|
||||
class="oh-btn oh-btn--secondary w-100">
|
||||
<ion-icon name="close-circle-outline"></ion-icon>
|
||||
{% trans "Reject" %}
|
||||
</a>
|
||||
{% if request.user.is_superuser or perms.attendance.change_attendance %}
|
||||
<a href="{% url 'cancel-validate-attendance-request' attendance.id %}" data-toggle="oh-modal-toggle"
|
||||
class="oh-btn oh-btn--secondary w-100">
|
||||
<ion-icon name="close-circle-outline"></ion-icon>
|
||||
{% trans "Reject" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if request.user|is_reportingmanager or perms.attendance.change_attendance %}
|
||||
{% comment %} <a href="{% url 'approve-validate-attendance-request' attendance.id %}" class="oh-btn oh-btn--success w-100">
|
||||
<ion-icon name="checkmark-outline"></ion-icon>
|
||||
@@ -111,7 +113,7 @@
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if request.user|is_reportingmanager or perms.attendance.change_attendance %}
|
||||
{% if request.user|is_reportingmanager or perms.attendance.change_attendance or attendance.employee_id == request.user.employee_get%}
|
||||
<a hx-get="{% url 'update-attendance-request' attendance.id %}?detail_view=true"
|
||||
hx-target="#genericModalEditBody" data-target="#genericModalEdit"
|
||||
data-toggle="oh-modal-toggle" class="oh-btn oh-btn--info w-100">
|
||||
|
||||
@@ -84,7 +84,7 @@ class CompanyLeaveNavView(HorillaNavView):
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("company-leave-filter")
|
||||
if self.request.user.has_perm("add_companyleave"):
|
||||
if self.request.user.has_perm("base.add_companyleave"):
|
||||
self.create_attrs = f"""
|
||||
hx-get="{reverse_lazy('company-leave-creation')}"
|
||||
hx-target="#genericModalBody"
|
||||
@@ -117,7 +117,7 @@ class CompanyLeaveDetailView(HorillaDetailedView):
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
@method_decorator(permission_required("leave.add_companyleave"), name="dispatch")
|
||||
@method_decorator(permission_required("base.add_companyleave"), name="dispatch")
|
||||
class CompanyleaveFormView(HorillaFormView):
|
||||
"""
|
||||
form view for create button
|
||||
|
||||
@@ -47,7 +47,7 @@ class HolidayListView(HorillaListView):
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("holiday-filter")
|
||||
self.view_id = "holidaydelete"
|
||||
if self.request.user.has_perm("add_holiday"):
|
||||
if self.request.user.has_perm("base.add_holiday"):
|
||||
self.action_method = "holidays_actions"
|
||||
|
||||
columns = [
|
||||
@@ -84,7 +84,7 @@ class HolidayNavView(HorillaNavView):
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("holiday-filter")
|
||||
if self.request.user.has_perm("add_holiday"):
|
||||
if self.request.user.has_perm("base.add_holiday"):
|
||||
self.create_attrs = f"""
|
||||
hx-get="{reverse_lazy('holiday-creation')}"
|
||||
hx-target="#genericModalBody"
|
||||
|
||||
@@ -43,13 +43,13 @@ class BiometricNavBar(HorillaNavView):
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("biometric-card-view")
|
||||
|
||||
self.create_attrs = f"""
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
hx-target="#genericModalBody"
|
||||
hx-get="{reverse('biometric-device-add')}"
|
||||
"""
|
||||
if self.request.user.has_perm("biometric.add_biometricdevices"):
|
||||
self.create_attrs = f"""
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
hx-target="#genericModalBody"
|
||||
hx-get="{reverse('biometric-device-add')}"
|
||||
"""
|
||||
|
||||
nav_title = _("Biometric Devices")
|
||||
filter_body_template = "cbv/biometric_filter.html"
|
||||
|
||||
@@ -141,8 +141,8 @@ def workshift_accessibility(
|
||||
if (
|
||||
request.user == employee.employee_user_id
|
||||
or check_manages
|
||||
or request.user.has_perm("attendance.view_worktyperequest")
|
||||
or request.user.has_perm("attendance.view_shiftrequest")
|
||||
or request.user.has_perm("base.view_worktyperequest")
|
||||
or request.user.has_perm("base.view_shiftrequest")
|
||||
):
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -82,6 +82,7 @@ class DocumentRequestCreateForm(HorillaFormView):
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class DocumentCreateForm(HorillaFormView):
|
||||
"""
|
||||
form view for upload document
|
||||
@@ -135,6 +136,7 @@ class DocumentRejectCbvForm(HorillaFormView):
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class DocumentUploadForm(HorillaFormView):
|
||||
"""
|
||||
form view for upload documents on document request and employee individual view
|
||||
|
||||
@@ -14,6 +14,8 @@ from horilla_views.cbv_methods import login_required, permission_required
|
||||
from horilla_views.generic.cbv.views import HorillaFormView
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
@method_decorator(permission_required(perm="employee.add_policy"), name="dispatch")
|
||||
class PolicyFormView(HorillaFormView):
|
||||
"""
|
||||
form view for create policy
|
||||
|
||||
@@ -63,7 +63,7 @@ class MailAutomation(HorillaModel):
|
||||
default="email",
|
||||
max_length=50,
|
||||
choices=SEND_OPTIONS,
|
||||
verbose_name=_("Choose Delivary Channel"),
|
||||
verbose_name=_("Choose Delivery Channel"),
|
||||
)
|
||||
template_attachments = models.ManyToManyField(
|
||||
HorillaMailTemplate,
|
||||
|
||||
@@ -124,12 +124,13 @@ class AssignedLeaveNavView(HorillaNavView):
|
||||
},
|
||||
]
|
||||
|
||||
self.create_attrs = f"""
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#objectCreateModal"
|
||||
hx-target="#objectCreateModalTarget"
|
||||
hx-get="{reverse_lazy('assign')}"
|
||||
"""
|
||||
if self.request.user.has_perm("leave.add_availableleave"):
|
||||
self.create_attrs = f"""
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#objectCreateModal"
|
||||
hx-target="#objectCreateModalTarget"
|
||||
hx-get="{reverse_lazy('assign')}"
|
||||
"""
|
||||
|
||||
nav_title = _("All Assigned Leaves")
|
||||
filter_instance = AssignedLeaveFilter()
|
||||
|
||||
@@ -243,12 +243,13 @@ class LeaveRequestsNavView(HorillaNavView):
|
||||
},
|
||||
]
|
||||
|
||||
self.create_attrs = f"""
|
||||
hx-get="{reverse_lazy("request-creation")}"
|
||||
hx-target="#genericModalBody"
|
||||
data-target="#genericModal"
|
||||
data-toggle="oh-modal-toggle"
|
||||
"""
|
||||
if self.request.user.has_perm("leave.add_leaverequest"):
|
||||
self.create_attrs = f"""
|
||||
hx-get="{reverse_lazy("request-creation")}"
|
||||
hx-target="#genericModalBody"
|
||||
data-target="#genericModal"
|
||||
data-toggle="oh-modal-toggle"
|
||||
"""
|
||||
|
||||
nav_title = _("Leave Requests")
|
||||
filter_instance = LeaveRequestFilter()
|
||||
|
||||
@@ -173,9 +173,10 @@ class AllowanceNavView(HorillaNavView):
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("allowances-list-view")
|
||||
|
||||
self.create_attrs = f"""
|
||||
href="{reverse_lazy('create-allowance')}"
|
||||
"""
|
||||
if self.request.user.has_perm("payroll.add_allowance"):
|
||||
self.create_attrs = f"""
|
||||
href="{reverse_lazy('create-allowance')}"
|
||||
"""
|
||||
|
||||
self.view_types = [
|
||||
{
|
||||
|
||||
@@ -148,9 +148,10 @@ class ContractsNav(HorillaNavView):
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("contract-filter")
|
||||
self.create_attrs = f"""
|
||||
href={reverse('contract-create')}
|
||||
"""
|
||||
if self.request.user.has_perm("payroll.add_contract"):
|
||||
self.create_attrs = f"""
|
||||
href={reverse('contract-create')}
|
||||
"""
|
||||
self.actions = [
|
||||
{
|
||||
"action": _("Export"),
|
||||
|
||||
@@ -32,9 +32,10 @@ class DeductionNav(HorillaNavView):
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("deduction-view-list")
|
||||
self.create_attrs = f"""
|
||||
href={reverse('create-deduction')}
|
||||
"""
|
||||
if self.request.user.has_perm("payroll.add_deduction"):
|
||||
self.create_attrs = f"""
|
||||
href={reverse('create-deduction')}
|
||||
"""
|
||||
self.view_types = [
|
||||
{
|
||||
"type": "list",
|
||||
|
||||
15
pms/cbvs.py
15
pms/cbvs.py
@@ -53,12 +53,13 @@ class BonusPointSettingNavView(views.HorillaNavView):
|
||||
|
||||
def __init__(self, *args, **kwargs) -> None:
|
||||
super().__init__(*args, **kwargs)
|
||||
self.create_attrs = f"""
|
||||
hx-get="{reverse_lazy("create-bonus-point-setting")}"
|
||||
hx-target="#genericModalBody"
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
"""
|
||||
if self.request.user.has_perm("pms.add_bonuspointsetting"):
|
||||
self.create_attrs = f"""
|
||||
hx-get="{reverse_lazy("create-bonus-point-setting")}"
|
||||
hx-target="#genericModalBody"
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
"""
|
||||
|
||||
nav_title = _("Bonus Point Setting")
|
||||
search_url = reverse_lazy("bonus-point-setting-list-view")
|
||||
@@ -66,7 +67,7 @@ class BonusPointSettingNavView(views.HorillaNavView):
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
@method_decorator(permission_required("pms.change_bonuspointsetting"), name="dispatch")
|
||||
@method_decorator(permission_required("pms.add_bonuspointsetting"), name="dispatch")
|
||||
class BonusPointSettingFormView(views.HorillaFormView):
|
||||
"""
|
||||
BonusPointSettingForm View
|
||||
|
||||
@@ -93,12 +93,13 @@ class RejectReasonNav(HorillaNavView):
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.search_url = reverse("candidate-reject-reasons-list")
|
||||
self.create_attrs = f"""
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
hx-target="#genericModalBody"
|
||||
hx-get="{reverse('create-reject-reason-view')}"
|
||||
"""
|
||||
if self.request.user.has_perm("recruitment.add_rejectreason"):
|
||||
self.create_attrs = f"""
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
hx-target="#genericModalBody"
|
||||
hx-get="{reverse('create-reject-reason-view')}"
|
||||
"""
|
||||
|
||||
nav_title = _("Reject Reasons")
|
||||
filter_instance = RejectReasonFilter()
|
||||
|
||||
@@ -45,12 +45,13 @@ class LinkedInSettingNavView(views.HorillaNavView):
|
||||
|
||||
def __init__(self, *args, **kwargs) -> None:
|
||||
super().__init__(*args, **kwargs)
|
||||
self.create_attrs = f"""
|
||||
hx-get="{reverse_lazy("create-linkedin-account")}"
|
||||
hx-target="#genericModalBody"
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
"""
|
||||
if self.request.user.has_perm("recruitment.add_linkedinaccount"):
|
||||
self.create_attrs = f"""
|
||||
hx-get="{reverse_lazy("create-linkedin-account")}"
|
||||
hx-target="#genericModalBody"
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#genericModal"
|
||||
"""
|
||||
|
||||
nav_title = _("LinkedIn Accounts")
|
||||
search_url = reverse_lazy("linkedin-setting-list")
|
||||
@@ -59,7 +60,7 @@ class LinkedInSettingNavView(views.HorillaNavView):
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
@method_decorator(
|
||||
permission_required("recruitment.change_linkedinaccount"), name="dispatch"
|
||||
permission_required("recruitment.add_linkedinaccount"), name="dispatch"
|
||||
)
|
||||
class LinkedInAccountFormView(views.HorillaFormView):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user