[UPDT] ASSET: Added individual view and next-previous buttons to asset request allocation

This commit is contained in:
Horilla
2024-03-01 12:30:44 +05:30
parent db6108bd12
commit 82bdb08d6d
6 changed files with 175 additions and 3 deletions

View File

@@ -46,7 +46,7 @@ class Asset(models.Model):
"""
ASSET_STATUS = [
("In use", _("Allocated")),
("In use", _("In Use")),
("Available", _("Available")),
("Not-Available", _("Not-Available")),
]

View File

@@ -72,7 +72,7 @@
<div id="assetRequestAllocationTarget"></div>
{% for asset in assets %}
<!-- asset request looping -->
<div class="oh-sticky-table__tr" draggable="true">
<div class="oh-sticky-table__tr" draggable="true" data-toggle="oh-modal-toggle" data-target="#asset-request-allocation-modal" hx-get="{% url 'own-asset-individual-view' asset.id %}?assets_ids={{asset_ids}}" hx-target="#asset-request-allocation-modal-target">
<div class="oh-sticky-table__sd">
<div class="oh-profile oh-profile--md">
<div class="oh-profile__avatar mr-1">

View File

@@ -378,7 +378,7 @@
aria-labelledby="AssetRequestModal"
aria-hidden="true"
>
<div class="oh-modal__dialog" style="max-width: 550px">
<div class="oh-modal__dialog oh-modal__dialog-relative" style="max-width: 550px">
<div class="oh-modal__dialog-header">
<button type="button" class="oh-modal__close" aria-label="Close">
<ion-icon name="close-outline"></ion-icon>
@@ -393,6 +393,28 @@
</div>
</div>
<div
class="oh-modal"
id="asset-return-allocation-modal"
role="dialog"
aria-labelledby="AssetRequestModal"
aria-hidden="true"
>
<div class="oh-modal__dialog" style="max-width: 550px">
<div class="oh-modal__dialog-header">
<button type="button" class="oh-modal__close--custom" aria-label="Close" onclick="$('#asset-return-allocation-modal').toggleClass('oh-modal--show')">
<ion-icon name="close-outline"></ion-icon>
</button>
</div>
<!-- htmx form -->
<div
class="oh-modal__dialog-body"
id="asset-return-allocation-modal-target"
></div>
</div>
</div>
<div
class="oh-modal"
id="addAssetReport"

View File

@@ -0,0 +1,110 @@
{% load i18n %}
{% if request.GET.assets_ids %}
<div class="oh-modal__dialog oh-modal__dialog--navigation m-0 p-0">
<button hx-get="{% url 'own-asset-individual-view' previous %}?assets_ids={{assets_ids}}" hx-target = "#asset-request-allocation-modal-target" class="oh-modal__diaglog-nav oh-modal__nav-prev">
<ion-icon name="chevron-back-outline" class="md hydrated" role="img"
aria-label="chevron back outline"></ion-icon>
</button>
<button hx-get="{% url 'own-asset-individual-view' next %}?assets_ids={{assets_ids}}" hx-target = "#asset-request-allocation-modal-target" class="oh-modal__diaglog-nav oh-modal__nav-next">
<ion-icon name="chevron-forward-outline" class="md hydrated" role="img"
aria-label="chevron forward outline"></ion-icon>
</button>
</div>
{% endif %}
<div class="oh-modal__section-head fw-bold">{% trans "Asset Information" %}</div>
<div class="row">
<div class="col-12 col-md-12 col-lg-6">
<div class="oh-modal__group mt-2">
<label class="oh-timeoff-modal__stat-title">{% trans "Asset Name" %}</label>
<label class="oh-timeoff-modal__stat-count">{{asset.asset_name}}</label>
</div>
</div>
<div class="col-12 col-md-12 col-lg-6">
<div class="oh-modal__group">
<label class="oh-timeoff-modal__stat-title">{% trans "Description" %}</label>
<div class="oh-modal__description">
{{asset.asset_description}}
</div>
</div>
</div>
<div class="col-12 col-md-12 col-lg-6 mt-3">
<div class="oh-modal__group">
<label class="oh-timeoff-modal__stat-title">{% trans "Tracking Id" %}</label>
<label class="oh-timeoff-modal__stat-count">{{asset.asset_tracking_id}}</label>
</div>
</div>
<div class="col-12 col-md-12 col-lg-6 mt-3">
<div class="oh-modal__group">
<label class="oh-timeoff-modal__stat-title">{% trans "Assigned Date" %}</label>
<label class="oh-timeoff-modal__stat-count dateformat_changer">{{asset_assignment.assigned_date}}</label>
</div>
</div>
<div class="col-12 col-md-12 col-lg-6 mt-3">
<div class="oh-modal__group">
<label class="oh-timeoff-modal__stat-title">{% trans "Return Status" %}</label>
<label class="oh-timeoff-modal__stat-count">{{asset.get_asset_status_display}}</label>
</div>
</div>
<div class="col-12 col-md-12 col-lg-6 mt-3">
<div class="oh-modal__group">
<label class="oh-timeoff-modal__stat-title">{% trans "Assigned By" %}</label>
<label class="oh-timeoff-modal__stat-count">{{asset_assignment.assigned_by_employee_id}}</label>
</div>
</div>
<div class="col-12 col-md-12 col-lg-6 mt-3">
<div class="oh-modal__group">
<label class="oh-timeoff-modal__stat-title">{% trans "Batch No" %}</label>
<label class="oh-timeoff-modal__stat-count">{{asset.asset_lot_number_id}}</label>
</div>
</div>
<div class="col-12 col-md-12 col-lg-6 mt-3">
<div class="oh-modal__group">
<label class="oh-timeoff-modal__stat-title">{% trans "Category" %}</label>
<label class="oh-timeoff-modal__stat-count">{{asset.asset_category_id}}</label>
</div>
</div>
<div class="oh-modal__button-container text-center mt-3">
<div class="oh-btn-group">
{% if perms.asset.change_assetassignment %}
<button
href="#"
class="oh-btn oh-btn--secondary w-100"
role="button"
data-toggle="oh-modal-toggle"
data-target="#asset-return-allocation-modal"
hx-get="{%url 'asset-allocate-return' asset_id=asset.id %}"
hx-target="#asset-return-allocation-modal-target"
>
<ion-icon name="return-down-back-sharp"></ion-icon>{% trans "Return" %}
</button>
{% else %}
{% if asset.return_request %}
<div class="d-flex align-items-center">
<span
class="oh-dot oh-dot--small me-1 oh-dot--color oh-dot--info"
></span>
<span class="link-primary"> {% trans "Requested to return" %} </span>
</div>
{% else %}
<form class=" w-100" action = "{% url 'asset-allocate-return-request' asset_id=asset_assignment.id %}"
onsubmit="return confirm('{% trans "Are you sure you want to return this asset?" %}');"
>
{% csrf_token %}
<button type="submit" class="oh-btn oh-btn--secondary w-100">
<ion-icon name="return-down-back-sharp"></ion-icon>
{% trans "Return Request" %}
</button>
</form>
{% endif %}
{% endif %}
</div>
</div>
</div>

View File

@@ -77,6 +77,11 @@ urlpatterns = [
views.asset_request_individual_view,
name="asset-request-individual-view",
),
path(
"own-asset-individual-view/<int:id>",
views.own_asset_individual_view,
name="own-asset-individual-view",
),
path(
"asset-allocation-individual-view/<int:id>",
views.asset_allocation_individual_view,

View File

@@ -913,6 +913,12 @@ def filter_pagination_asset_request_allocation(request):
[instance.id for instance in asset_allocation_filtered.object_list]
)
assets_ids = paginator_qry(
assets_filtered.qs, request.GET.get("page")
)
assets_id = json.dumps(
[instance.id for instance in assets_ids.object_list]
)
asset_paginator = Paginator(assets_filtered.qs, get_pagination())
asset_request_paginator = Paginator(asset_request_filtered, get_pagination())
asset_allocation_paginator = Paginator(asset_allocation_filtered, get_pagination())
@@ -948,6 +954,7 @@ def filter_pagination_asset_request_allocation(request):
"allocation_field": allocation_field,
"requests_ids": requests_ids,
"allocations_ids": allocations_ids,
"asset_ids":assets_id,
}
@@ -974,6 +981,7 @@ def asset_request_alloaction_view(request):
return render(request, template, context)
@login_required
def asset_request_alloaction_view_search_filter(request):
"""
This view handles the search and filter functionality for the asset request allocation list.
@@ -995,6 +1003,32 @@ def asset_request_alloaction_view_search_filter(request):
return render(request, template, context)
@login_required
def own_asset_individual_view(request,id):
"""
This function is responsible for view the individual own asset
Args:
request : HTTP request object
id (int): Id of the asset assignment
"""
asset_assignment = AssetAssignment.objects.get(id=id)
asset = asset_assignment.asset_id
context = {
"asset": asset,
"asset_assignment": asset_assignment,
}
requests_ids_json = request.GET.get("assets_ids")
if requests_ids_json:
requests_ids = json.loads(requests_ids_json)
previous_id, next_id = closest_numbers(requests_ids, id)
context["assets_ids"] = requests_ids_json
context["previous"] = previous_id
context["next"] = next_id
return render(request, "request_allocation/individual_own.html", context)
@login_required
def asset_request_individual_view(request, id):
asset_request = AssetRequest.objects.get(id=id)
context = {
@@ -1011,6 +1045,7 @@ def asset_request_individual_view(request, id):
return render(request, "request_allocation/individual_request.html", context)
@login_required
def asset_allocation_individual_view(request, id):
asset_allocation = AssetAssignment.objects.get(id=id)
context = {"asset_allocation": asset_allocation}