From 81ba854d107d2c83227a30ca969a072c8c141960 Mon Sep 17 00:00:00 2001 From: Horilla Date: Mon, 9 Sep 2024 16:18:07 +0530 Subject: [PATCH] [UPDT] ASSET: Replace static paginator count to dynamic --- asset/filters.py | 12 +- asset/forms.py | 11 +- .../batch/asset_batch_number_list.html | 238 ++++++++---------- .../batch/asset_batch_number_view.html | 105 +++----- asset/templates/category/asset_category.html | 2 +- .../category/asset_category_update.html | 92 ++++--- asset/views.py | 41 ++- 7 files changed, 224 insertions(+), 277 deletions(-) diff --git a/asset/filters.py b/asset/filters.py index 1e31d8c9d..106243150 100644 --- a/asset/filters.py +++ b/asset/filters.py @@ -82,7 +82,7 @@ class AssetExportFilter(CustomFilterSet): fields = "__all__" def __init__(self, *args, **kwargs): - super(AssetExportFilter, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.form.fields["asset_purchase_date"].widget.attrs.update({"type": "date"}) @@ -103,7 +103,7 @@ class AssetFilter(CustomFilterSet): fields = "__all__" def __init__(self, *args, **kwargs): - super(AssetFilter, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) for visible in self.form.visible_fields(): visible.field.widget.attrs["id"] = str(uuid.uuid4()) @@ -132,7 +132,7 @@ class CustomAssetFilter(CustomFilterSet): ] def __init__(self, *args, **kwargs): - super(CustomAssetFilter, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) for visible in self.form.visible_fields(): visible.field.widget.attrs["id"] = str(uuid.uuid4()) @@ -174,7 +174,7 @@ class AssetRequestFilter(CustomFilterSet): fields = "__all__" def __init__(self, *args, **kwargs): - super(AssetRequestFilter, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) for visible in self.form.visible_fields(): visible.field.widget.attrs["id"] = str(uuid.uuid4()) @@ -217,7 +217,7 @@ class AssetAllocationFilter(CustomFilterSet): fields = "__all__" def __init__(self, *args, **kwargs): - super(AssetAllocationFilter, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) for visible in self.form.visible_fields(): visible.field.widget.attrs["id"] = str(uuid.uuid4()) @@ -241,7 +241,7 @@ class AssetCategoryFilter(CustomFilterSet): fields = "__all__" def __init__(self, *args, **kwargs): - super(AssetCategoryFilter, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) for visible in self.form.visible_fields(): visible.field.widget.attrs["id"] = str(uuid.uuid4()) diff --git a/asset/forms.py b/asset/forms.py index 348892778..fad20ebbc 100644 --- a/asset/forms.py +++ b/asset/forms.py @@ -102,7 +102,7 @@ class AssetForm(ModelForm): instance = kwargs.get("instance") if instance: kwargs["initial"] = set_date_field_initial(instance) - super(AssetForm, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) reload_queryset(self.fields) self.fields["asset_category_id"].widget.attrs.update({"id": str(uuid.uuid4())}) self.fields["asset_lot_number_id"].widget.attrs.update( @@ -304,10 +304,7 @@ class AssetRequestForm(ModelForm): def __init__(self, *args, **kwargs): user = kwargs.pop("user", None) - super(AssetRequestForm, self).__init__( - *args, - **kwargs, - ) + super().__init__(*args, **kwargs) reload_queryset(self.fields) if user is not None and user.has_perm("asset.add_assetrequest"): self.fields["requested_employee_id"].queryset = Employee.objects.all() @@ -329,7 +326,7 @@ class AssetAllocationForm(ModelForm): """ def __init__(self, *args, **kwargs): - super(AssetAllocationForm, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) reload_queryset(self.fields) self.fields["asset_id"].queryset = Asset.objects.filter( asset_status="Available" @@ -415,7 +412,7 @@ class AssetReturnForm(ModelForm): """ Initializes the AssetReturnForm with initial values and custom field settings. """ - super(AssetReturnForm, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.fields["return_date"].initial = date.today() self.fields["return_images"] = MultipleFileField(label="Images") diff --git a/asset/templates/batch/asset_batch_number_list.html b/asset/templates/batch/asset_batch_number_list.html index 036060a03..a6622de11 100644 --- a/asset/templates/batch/asset_batch_number_list.html +++ b/asset/templates/batch/asset_batch_number_list.html @@ -1,146 +1,104 @@ -{% load i18n %} {% if messages %} -
- {% for message in messages %} -
-
- {{ message }} +{% load i18n %} +{% if messages %} +
+ {% for message in messages %} +
+
+ {{ message }} +
+
+ {% endfor %}
-
- {% endfor %} -
{% endif %}
-
-
-
-
-
{% trans "Batch Number" %}
-
{% trans " Description" %}
- {% if perms.asset.change_assetlot or perms.asset.delete_assetlot %} -
{% trans "Actions" %}
- {% endif %} -
-
-
- {% for batch_number in batch_numbers %} -
-
{{batch_number.lot_number}}
-
- {{batch_number.lot_description}} -
- {% if perms.asset.change_assetlot or perms.asset.delete_assetlot %} -
-
- {% if perms.asset.change_assetlot %} - - - - {% endif %} - {% if perms.asset.delete_assetlot %} -
- {% csrf_token %} - -
- {% endif %} +
+
+
+
+
{% trans "Batch Number" %}
+
{% trans " Description" %}
+ {% if perms.asset.change_assetlot or perms.asset.delete_assetlot %} +
{% trans "Actions" %}
+ {% endif %}
-
- {% endif %} -
- {% endfor %} -
+
+
+ {% for batch_number in batch_numbers %} +
+
{{batch_number.lot_number}}
+
+ {{batch_number.lot_description}} +
+ {% if perms.asset.change_assetlot or perms.asset.delete_assetlot %} +
+
+ {% if perms.asset.change_assetlot %} + + + + {% endif %} + {% if perms.asset.delete_assetlot %} +
+ {% csrf_token %} + +
+ {% endif %} +
+
+ {% endif %} +
+ {% endfor %} +
+
-
- -
- - -
- + +
+ + +
+
diff --git a/asset/templates/batch/asset_batch_number_view.html b/asset/templates/batch/asset_batch_number_view.html index dc18a3071..72c57a2e0 100644 --- a/asset/templates/batch/asset_batch_number_view.html +++ b/asset/templates/batch/asset_batch_number_view.html @@ -3,77 +3,54 @@ {% if messages %} -
- {% for message in messages %} -
-
- {{ message }} +
+ {% for message in messages %} +
+
+ {{ message }} +
+
+ {% endfor %}
-
- {% endfor %} -
{% endif %}
-
-
-

- {% trans "Asset Batch Number" %} -

- - - -
-
-
- - -
-
- {% if perms.asset.add_assetlot %} - +
+
+ + +
+
+ {% if perms.asset.add_assetlot %} + + {% endif %} +
+
+
+
+ {% include 'batch/asset_batch_number_list.html' %}
- -
- {% include 'batch/asset_batch_number_list.html' %} -
{% endblock %} diff --git a/asset/templates/category/asset_category.html b/asset/templates/category/asset_category.html index a73b56bc1..a4639df72 100644 --- a/asset/templates/category/asset_category.html +++ b/asset/templates/category/asset_category.html @@ -36,7 +36,7 @@ class="oh-badge oh-badge--secondary oh-badge--small oh-badge--round ms-2 mr-2" id="asset-count{{asset_category.id}}" data-category-id="{{asset_category.id}}" - title='{{asset_category.asset_set.count}} {% trans "Asset" %}'> + title="{{asset_category.asset_set.count}} {% trans 'Assets' %}"> {{asset_category.asset_set.count}} {{asset_category}} diff --git a/asset/templates/category/asset_category_update.html b/asset/templates/category/asset_category_update.html index 85d4ac6df..f663d087d 100644 --- a/asset/templates/category/asset_category_update.html +++ b/asset/templates/category/asset_category_update.html @@ -3,60 +3,58 @@ {% if messages %}
- {% for message in messages %} -
-
- {{ message }} + {% for message in messages %} +
+
+ {{ message }} +
-
- {% endfor %} - + {% endfor %} +
{% endif %} +
- - -
{% trans "Asset Category Update" %}
-
+ + +
{% trans "Asset Category Update" %}
+
-
- {% csrf_token %} -
-
- - {{asset_category_update_form.asset_category_name.errors}} - {{asset_category_update_form.asset_category_name}} -
-
- - {{asset_category_update_form.asset_category_description.errors}} - {{asset_category_update_form.asset_category_description}} -
-
- - {{asset_category_update_form.company_id.errors}} - {{asset_category_update_form.company_id}} -
+ + {% csrf_token %} +
+
+ + {{asset_category_update_form.asset_category_name.errors}} + {{asset_category_update_form.asset_category_name}} +
+
+ + {{asset_category_update_form.asset_category_description.errors}} + {{asset_category_update_form.asset_category_description}} +
+
+ + {{asset_category_update_form.company_id.errors}} + {{asset_category_update_form.company_id}} +
- -
- + +
+
diff --git a/asset/views.py b/asset/views.py index 6cd2eb041..93ee5f80d 100644 --- a/asset/views.py +++ b/asset/views.py @@ -270,7 +270,7 @@ def asset_delete(request, asset_id): previous_data = request.GET.urlencode() asset_filtered = AssetFilter(request.GET, queryset=assets) asset_list = asset_filtered.qs - paginator = Paginator(asset_list, 20) + paginator = Paginator(asset_list, get_pagination()) page_number = request.GET.get("page") page_obj = paginator.get_page(page_number) context = { @@ -313,9 +313,11 @@ def asset_list(request, cat_id): Raises: None """ - asset_list_filter = request.GET.get("asset_list") - asset_info = request.GET.get("asset_info") context = {} + asset_under = "" + assets_in_category = Asset.objects.none() + asset_info = request.GET.get("asset_info") + asset_list_filter = request.GET.get("asset_list") if asset_list_filter: # if the data is present means that it is for asset filtered list query = request.GET.get("query") @@ -335,10 +337,11 @@ def asset_list(request, cat_id): previous_data = request.GET.urlencode() asset_filtered = AssetFilter(request.GET, queryset=assets_in_category) asset_list = asset_filtered.qs - # Change 20 to the desired number of items per page - paginator = Paginator(asset_list, 20) + + paginator = Paginator(asset_list, get_pagination()) page_number = request.GET.get("page") page_obj = paginator.get_page(page_number) + requests_ids = json.dumps([instance.id for instance in page_obj.object_list]) data_dict = parse_qs(previous_data) get_key_instances(Asset, data_dict) @@ -1038,7 +1041,6 @@ def asset_import(request): Returns: HttpResponseRedirect: A redirect to the asset category view after processing the import. """ - try: if request.method == "POST": file = request.FILES.get("asset_import") @@ -1079,13 +1081,17 @@ def asset_import(request): ) messages.success(request, _("Successfully imported Assets")) - return redirect(asset_category_view) - messages.error(request, _("File Error")) + else: + messages.error(request, _("File Error")) + return redirect(asset_category_view) + except Exception as exception: messages.error(request, f"{exception}") return redirect(asset_category_view) + return redirect(asset_category_view) + @login_required def asset_excel(_request): @@ -1260,7 +1266,7 @@ def asset_batch_view(request): asset_batches = AssetLot.objects.all() previous_data = request.GET.urlencode() - asset_batch_numbers_search_paginator = Paginator(asset_batches, 20) + asset_batch_numbers_search_paginator = Paginator(asset_batches, get_pagination()) page_number = request.GET.get("page") asset_batch_numbers = asset_batch_numbers_search_paginator.get_page(page_number) asset_batch_form = AssetBatchForm() @@ -1361,7 +1367,7 @@ def asset_batch_number_search(request): asset_batches = AssetLot.objects.all().filter(lot_number__icontains=search_query) previous_data = request.GET.urlencode() - asset_batch_numbers_search_paginator = Paginator(asset_batches, 20) + asset_batch_numbers_search_paginator = Paginator(asset_batches, get_pagination()) page_number = request.GET.get("page") asset_batch_numbers = asset_batch_numbers_search_paginator.get_page(page_number) @@ -1418,7 +1424,7 @@ def asset_dashboard(request): @login_required @permission_required(perm="asset.view_assetcategory") -def asset_available_chart(request): +def asset_available_chart(_request): """ This function returns the response for the available asset chart in the asset dashboard. """ @@ -1445,7 +1451,7 @@ def asset_available_chart(request): @login_required @permission_required(perm="asset.view_assetcategory") -def asset_category_chart(request): +def asset_category_chart(_request): """ This function returns the response for the asset category chart in the asset dashboard. """ @@ -1658,6 +1664,17 @@ def asset_request_tab(request, emp_id): @login_required def dashboard_asset_request_approve(request): + """ + Handles the asset request approval dashboard view. + + This view fetches and filters asset requests that are currently in the + "Requested" status and belong to employees who are active. It further filters + the asset requests based on the subordinates of the logged-in user and the + specific permission 'asset.change_assetrequest'. + + The filtered asset requests are then passed to the template for rendering, + along with a JSON-encoded list of the request IDs. + """ asset_requests = AssetRequest.objects.filter( asset_request_status="Requested", requested_employee_id__is_active=True