[UPDT] RECRUITMENT: Permission in html

This commit is contained in:
Horilla
2024-01-07 15:47:50 +05:30
parent 542ba94a05
commit 3e7e3b6755
9 changed files with 84 additions and 42 deletions

View File

@@ -365,7 +365,6 @@
hx-target="#modalContent"
>{{forloop.counter}}. {{note.title}}</span
>
{% if perms.recruitment.delete_stagenote %}
<span
title="{% trans 'Delete' %}"
hx-get="{% url 'note-delete-individual' note.id %}"
@@ -376,7 +375,6 @@
>
<ion-icon name="close-outline" style="font-size: 24px"></ion-icon
></span>
{% endif %}
</div>
<span
data-toggle="oh-modal-toggle"

View File

@@ -52,7 +52,7 @@
hx-target="#modalContent"
>{{forloop.counter}}. {{note.title}}</span
>
{% if perms.recruitment.delete_stagenote %}
<span
title="{% trans 'Delete' %}"
hx-get="{% url 'note-delete' note.id %}"
@@ -62,7 +62,7 @@
>
<ion-icon name="close-outline" style="font-size: 24px"></ion-icon
></span>
{% endif %}
</div>
<span
data-toggle="oh-modal-toggle"

View File

@@ -18,6 +18,7 @@
{% for rec in question.recruitment_ids.all %} {{rec}},&nbsp; {% endfor %}
</span>
</div>
{% if perms.recruitment.delete_recruitmentsurvey or perms.recruitment.change_recruitmentsurvey %}
<div class="oh-kanban-card__dots">
<div class="oh-dropdown" x-data="{show: false}">
<button
@@ -34,6 +35,7 @@
@click.outside="show = false"
>
<ul class="oh-dropdown__items">
{% if perms.recruitment.change_recruitmentsurvey %}
<li class="oh-dropdown__item">
<a
hx-get="{% url 'recruitment-survey-question-template-edit' question.id %}"
@@ -44,6 +46,8 @@
>{% trans "Edit" %}</a
>
</li>
{% endif %}
{% if perms.recruitment.delete_recruitmentsurvey %}
<li class="oh-dropdown__item">
<a
href="{% url 'recruitment-survey-question-template-delete' question.id %}"
@@ -52,15 +56,16 @@
>{% trans "Delete" %}</a
>
</li>
{% endif %}
</ul>
</div>
</div>
</div>
{% endif %}
</div>
{% endfor %}
</div>
<div
class="oh-modal"
id="detailSurvey"

View File

@@ -79,6 +79,7 @@
></ion-icon>
</a>
</div>
{% if perms.recruitment.add_recruitmentsurvey %}
<div class="oh-main__titlebar oh-main__titlebar--right">
<button
@@ -91,6 +92,7 @@
<ion-icon name="add-sharp" class="mr-1"></ion-icon>{% trans "Add" %}
</button>
</div>
{% endif %}
</section>
<div

View File

@@ -113,7 +113,7 @@
</div>
</div>
</div>
{% if perms.add_recruitmentsurvey %}
{% if perms.recruitment.add_recruitmentsurvey %}
<button
class="oh-btn oh-btn--secondary ml-2"
data-toggle="oh-modal-toggle"

View File

@@ -58,30 +58,63 @@
</div>
</div>
<div class="oh-modal__button-container text-center">
<div class="oh-btn-group">
<a
class="oh-btn oh-btn--info"
hx-get="{% url 'recruitment-survey-question-template-edit' question.id %}"
data-toggle="oh-modal-toggle"
data-target="#updateSurvey"
hx-target="#updateSurveyModalBody"
style="width: 50%;"
>
<ion-icon name="create-outline" role="img"
class="md hydrated" aria-label="create outline">
</ion-icon>{% trans "Edit" %}
</a>
<a
href="{% url 'recruitment-survey-question-template-delete' question.id %}"
onclick="return confirm('{% trans "Are you sure want to delete?" %}')"
class="oh-btn oh-btn--danger"style="width: 50%;">
<ion-icon
name="trash-outline"
role="img"
class="md hydrated"
aria-label="create outline"
></ion-icon>{% trans "Delete" %}
</a>
{% if perms.recruitment.change_recruitmentsurvey and perms.recruitment.delete_recruitmentsurvey %}
<div class="oh-btn-group">
<a
class="oh-btn oh-btn--info"
hx-get="{% url 'recruitment-survey-question-template-edit' question.id %}"
data-toggle="oh-modal-toggle"
data-target="#updateSurvey"
hx-target="#updateSurveyModalBody"
style="width: 50%;"
>
<ion-icon name="create-outline" role="img"
class="md hydrated" aria-label="create outline">
</ion-icon>{% trans "Edit" %}
</a>
<a
href="{% url 'recruitment-survey-question-template-delete' question.id %}"
onclick="return confirm('{% trans "Are you sure want to delete?" %}')"
class="oh-btn oh-btn--danger"style="width: 50%;">
<ion-icon
name="trash-outline"
role="img"
class="md hydrated"
aria-label="create outline"
></ion-icon>{% trans "Delete" %}
</a>
</div>
{% else %}
<div class="oh-btn-group">
{% if perms.recruitment.change_recruitmentsurvey %}
<a
class="oh-btn oh-btn--info"
hx-get="{% url 'recruitment-survey-question-template-edit' question.id %}"
data-toggle="oh-modal-toggle"
data-target="#updateSurvey"
hx-target="#updateSurveyModalBody"
style="width: 100%;"
>
<ion-icon name="create-outline" role="img"
class="md hydrated" aria-label="create outline">
</ion-icon>{% trans "Edit" %}
</a>
{% endif %}
{% if perms.recruitment.delete_recruitmentsurvey %}
<a
href="{% url 'recruitment-survey-question-template-delete' question.id %}"
onclick="return confirm('{% trans "Are you sure want to delete?" %}')"
class="oh-btn oh-btn--danger"style="width: 100%;">
<ion-icon
name="trash-outline"
role="img"
class="md hydrated"
aria-label="create outline"
></ion-icon>{% trans "Delete" %}
</a>
{% endif %}
</div>
{% endif %}
</div>
</div>

View File

@@ -9,13 +9,14 @@ import json
from django.contrib import messages
from django.db.models import ProtectedError
from django.contrib.auth.models import Permission
from django.http import HttpResponseRedirect, JsonResponse
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext as __
from django.views.decorators.http import require_http_methods
from django.shortcuts import render, redirect
from employee.models import Employee
from horilla.decorators import login_required, permission_required
from recruitment.decorators import manager_can_enter, recruitment_manager_can_enter
from notifications.signals import notify
from recruitment.models import Candidate, Recruitment, Stage, StageNote
from recruitment.views.paginator_qry import paginator_qry
@@ -101,7 +102,7 @@ def recruitment_delete_pipeline(request, rec_id):
@login_required
@permission_required(perm="recruitment.delete_stagenote")
@manager_can_enter(perm="recruitment.delete_stagenote")
def note_delete(request, note_id):
"""
This method is used to delete the stage note
@@ -120,7 +121,7 @@ def note_delete(request, note_id):
@login_required
@permission_required(perm="recruitment.delete_stagenote")
@manager_can_enter(perm="recruitment.delete_stagenote")
def note_delete_individual(request, note_id):
"""
This method is used to delete the stage note
@@ -128,11 +129,14 @@ def note_delete_individual(request, note_id):
note = StageNote.objects.get(id=note_id)
cand_id = note.candidate_id.id
note.delete()
return redirect("view-note", cand_id=cand_id)
messages.success(request, _("Note deleted."))
# return redirect("view-note", cand_id=cand_id)
return HttpResponse("<script>window.location.reload()</script>")
@login_required
@permission_required(perm="recruitment.delete_stage")
@manager_can_enter(perm="recruitment.delete_stage")
@require_http_methods(["POST", "DELETE"])
def stage_delete(request, stage_id):
"""
@@ -276,7 +280,7 @@ def candidate_bulk_archive(request):
@login_required
@permission_required(perm="recruitment.change_stage")
@manager_can_enter(perm="recruitment.change_stage")
def remove_stage_manager(request, mid, sid):
"""
This method is used to remove selected stage manager and also removing the given
@@ -310,7 +314,7 @@ def remove_stage_manager(request, mid, sid):
@login_required
@permission_required(perm="recruitment.change_recruitment")
@manager_can_enter(perm="recruitment.change_recruitment")
@require_http_methods(["POST"])
def remove_recruitment_manager(request, mid, rid):
"""

View File

@@ -268,7 +268,7 @@ def application_form(request):
@login_required
@permission_required(perm="recruitment.change_recruitmentsurvey")
@permission_required(perm="recruitment.view_recruitmentsurvey")
def single_survey(request, survey_id):
"""
This view method is used to single view of question template

View File

@@ -615,7 +615,7 @@ def create_note(request, cand_id=None):
@login_required
@permission_required(perm="recruitment.change_stagenote")
@manager_can_enter(perm="recruitment.change_stagenote")
def note_update(request, note_id):
"""
This method is used to update the stage not
@@ -638,7 +638,7 @@ def note_update(request, note_id):
@login_required
@permission_required(perm="recruitment.change_stagenote")
@manager_can_enter(perm="recruitment.change_stagenote")
def note_update_individual(request, note_id):
"""
This method is used to update the stage not
@@ -684,7 +684,7 @@ def candidate_schedule_date_update(request):
@login_required
@permission_required(perm="recruitment.add_stage")
@manager_can_enter(perm="recruitment.add_stage")
def stage(request):
"""
This method is used to create stages, also several permission assigned to the stage managers
@@ -757,7 +757,7 @@ def stage_view(request):
@login_required
@permission_required(perm="recruitment.change_stage")
@manager_can_enter(perm="recruitment.change_stage")
@hx_request_required
def stage_update(request, stage_id):
"""