[UPDT] ATTENDANCE: Updated hour account delete method by using hx-swap attribute

This commit is contained in:
Horilla
2024-03-13 11:28:33 +05:30
parent 79a69ae4dc
commit cba5d5c877
3 changed files with 47 additions and 35 deletions

View File

@@ -1,6 +1,17 @@
{% load i18n %} {% load i18n %}
{% load attendancefilters %} {% load attendancefilters %}
{% load basefilters %} {% load basefilters %}
{% if messages %}
<div class="oh-wrapper">
{% for message in messages %}
<div class="oh-alert-container">
<div class="oh-alert oh-alert--animated {{message.tags}}">
{{ message }}
</div>
</div>
{% endfor %}
</div>
{% endif %}
{% include 'filter_tags.html' %} {% include 'filter_tags.html' %}
<div class="oh-card"> <div class="oh-card">
{% for attendance_list in accounts %} {% for attendance_list in accounts %}
@@ -71,16 +82,16 @@
<div class="oh-sticky-table__td">{{ot.worked_hours}}</div> <div class="oh-sticky-table__td">{{ot.worked_hours}}</div>
<div class="oh-sticky-table__td">{{ot.pending_hours}}</div> <div class="oh-sticky-table__td">{{ot.pending_hours}}</div>
<div class="oh-sticky-table__td">{{ot.overtime}}</div> <div class="oh-sticky-table__td">{{ot.overtime}}</div>
<div class="oh-sticky-table__td"> <div class="oh-sticky-table__td" onclick="event.stopPropagation();">
<div class="oh-btn-group"> <div class="oh-btn-group">
{% if perms.recruitment.change_attendanceovertime or request.user|is_reportingmanager %} {% if perms.recruitment.change_attendanceovertime or request.user|is_reportingmanager %}
<a hx-get="{% url 'attendance-overtime-update' ot.id %}" hx-target='#objectUpdateModalTarget' data-toggle='oh-modal-toggle' data-target='#objectUpdateModal' class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}"><ion-icon name="create-outline"></ion-icon></a> <a hx-get="{% url 'attendance-overtime-update' ot.id %}" hx-target='#objectUpdateModalTarget' data-toggle='oh-modal-toggle' data-target='#objectUpdateModal' class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}"><ion-icon name="create-outline"></ion-icon></a>
{% endif %} {% endif %}
{% if perms.recruitment.delete_attendance %} {% if perms.attendance.delete_attendanceovertime or request.user|is_reportingmanager %}
{% comment %} <form action="{% url 'attendance-overtime-delete' ot.id %}?page={{accounts.number}}" method='post' class="w-50"> <form hx-confirm="{% trans 'Are you sure want to delete this hour account?' %}" hx-post="{% url 'attendance-overtime-delete' ot.id %}?{{pd}}&page={{accounts.number}}" hx-target="#ot-table" class="w-50">
{% csrf_token %} {% endcomment %} {% csrf_token %}
<button data-id={{ot.id}} class="oh-btn oh-btn--danger-outline oh-btn--light-bkg w-50 deletebutton" title="{% trans 'Remove' %}"><ion-icon name="trash-outline"></ion-icon></button> <button type='submit' class="oh-btn oh-btn--danger-outline oh-btn--light-bkg w-100" title="{% trans 'Remove' %}"><ion-icon name="trash-outline"></ion-icon></button>
{% comment %} </form> {% endcomment %} </form>
{% endif %} {% endif %}
</div> </div>
</div> </div>
@@ -222,25 +233,6 @@
$("#unselectAllInstances").click(function () { $("#unselectAllInstances").click(function () {
unselectAllHourAcconts(); unselectAllHourAcconts();
}); });
$(".deletebutton").click(function () {
var id = $(this).attr("data-id");
var url = `/attendance/attendance-overtime-delete/${id}/`;
// Create a form element
var form = $("<form></form>");
form.attr("method", "POST");
form.attr("action", url);
// Create a hidden input field for the CSRF token
var csrf_token = $('input[name="csrfmiddlewaretoken"]').val();
var csrf_input = $('<input type="hidden" name="csrfmiddlewaretoken">');
csrf_input.val(csrf_token);
form.append(csrf_input);
// Append the form to the body and submit it
$(document.body).append(form);
form.submit();
});
$(".oh-table__sticky-collaspable-sort").click(function (e) { $(".oh-table__sticky-collaspable-sort").click(function (e) {
e.preventDefault(); e.preventDefault();

View File

@@ -1,6 +1,17 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% load basefilters %} {% load basefilters %}
{% if messages %}
<div class="oh-wrapper">
{% for message in messages %}
<div class="oh-alert-container">
<div class="oh-alert oh-alert--animated {{message.tags}}">
{{ message }}
</div>
</div>
{% endfor %}
</div>
{% endif %}
{% include 'filter_tags.html' %} {% include 'filter_tags.html' %}
<div class="oh-table_sticky--wrapper" id="ot-table"> <div class="oh-table_sticky--wrapper" id="ot-table">
{% if accounts %} {% if accounts %}
@@ -81,9 +92,9 @@
<a hx-get="{% url 'attendance-overtime-update' ot.id %}" hx-target='#objectUpdateModalTarget' data-toggle='oh-modal-toggle' data-target='#objectUpdateModal' class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}"><ion-icon name="create-outline"></ion-icon></a> <a hx-get="{% url 'attendance-overtime-update' ot.id %}" hx-target='#objectUpdateModalTarget' data-toggle='oh-modal-toggle' data-target='#objectUpdateModal' class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}"><ion-icon name="create-outline"></ion-icon></a>
{% endif %} {% endif %}
{% if perms.attendance.delete_attendanceovertime or request.user|is_reportingmanager %} {% if perms.attendance.delete_attendanceovertime or request.user|is_reportingmanager %}
<form action="{% url 'attendance-overtime-delete' ot.id %}" <form hx-confirm="{% trans 'Are you sure want to delete this hour account?' %}"
onsubmit="return confirm('{% trans "Are you sure want to delete this attendance?" %}')" hx-post="{% url 'attendance-overtime-delete' ot.id %}?{{pd}}"
hx-target="#ot-table" method='post' class='w-50'> hx-target="#ot-table" class='w-50'>
{% csrf_token %} {% csrf_token %}
<button type='submit' class="oh-btn oh-btn--danger-outline oh-btn--light-bkg w-100" title="{% trans 'Remove' %}"><ion-icon name="trash-outline"></ion-icon></button> <button type='submit' class="oh-btn oh-btn--danger-outline oh-btn--light-bkg w-100" title="{% trans 'Remove' %}"><ion-icon name="trash-outline"></ion-icon></button>
</form> </form>

View File

@@ -695,14 +695,23 @@ def attendance_overtime_delete(request, obj_id):
args: args:
obj_id : attendance overtime id obj_id : attendance overtime id
""" """
previous_data = request.GET.urlencode()
hx_target = request.META.get("HTTP_HX_TARGET", None)
try: try:
AttendanceOverTime.objects.get(id=obj_id).delete() attendance = AttendanceOverTime.objects.get(id=obj_id)
attendance.delete()
if hx_target == "ot-table":
messages.success(request, _("Hour account deleted.")) messages.success(request, _("Hour account deleted."))
except (AttendanceOverTime.DoesNotExist, OverflowError, ValueError): except (AttendanceOverTime.DoesNotExist, OverflowError, ValueError):
if hx_target == "ot-table":
messages.error(request, _("Hour account not found")) messages.error(request, _("Hour account not found"))
except ProtectedError: except ProtectedError:
if hx_target == "ot-table":
messages.error(request, _("You cannot delete this hour account")) messages.error(request, _("You cannot delete this hour account"))
return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) if hx_target and hx_target == "ot-table":
return redirect(f"/attendance/attendance-overtime-search?{previous_data}")
elif hx_target:
return HttpResponse()
@login_required @login_required