[UPDT] ASSET: Added individual view and next-previous buttons to asset request allocation
This commit is contained in:
@@ -46,7 +46,7 @@ class Asset(models.Model):
|
||||
"""
|
||||
|
||||
ASSET_STATUS = [
|
||||
("In use", _("Allocated")),
|
||||
("In use", _("In Use")),
|
||||
("Available", _("Available")),
|
||||
("Not-Available", _("Not-Available")),
|
||||
]
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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"
|
||||
|
||||
110
asset/templates/request_allocation/individual_own.html
Normal file
110
asset/templates/request_allocation/individual_own.html
Normal 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>
|
||||
@@ -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,
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user