Add client-side filtering for dashboard
This commit is contained in:
@@ -149,11 +149,8 @@ class ClaimDashboardView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||
queryset = (
|
||||
Claim.objects.select_related("submitted_by", "project", "paid_by")
|
||||
.prefetch_related("logs__performed_by")
|
||||
.all()
|
||||
.order_by("-created_at")
|
||||
)
|
||||
status = self.request.GET.get("status")
|
||||
if status in {choice[0] for choice in Claim.Status.choices}:
|
||||
queryset = queryset.filter(status=status)
|
||||
return queryset
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
@@ -164,6 +161,8 @@ class ClaimDashboardView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||
context["can_change"] = self.request.user.has_perm("claims.change_claim")
|
||||
context["payments_enabled"] = getattr(settings, "CLAIMS_ENABLE_INTERNAL_PAYMENTS", False)
|
||||
context["summary"] = self._build_summary()
|
||||
context["has_any_claims"] = context["summary"]["total_claims"] > 0
|
||||
context["has_filtered_claims"] = self._has_filtered_claims(context["status_filter"], context["summary"])
|
||||
context["recent_claims"] = (
|
||||
Claim.objects.select_related("project")
|
||||
.prefetch_related("logs__performed_by")
|
||||
@@ -265,6 +264,20 @@ class ClaimDashboardView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||
"paid_amount": _sum(approved_qs.filter(paid_at__isnull=False)),
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def _has_filtered_claims(active_filter, summary):
|
||||
if active_filter == "all":
|
||||
return summary["total_claims"] > 0
|
||||
key_map = {
|
||||
Claim.Status.PENDING: "pending_count",
|
||||
Claim.Status.APPROVED: "approved_count",
|
||||
Claim.Status.REJECTED: "rejected_count",
|
||||
}
|
||||
key = key_map.get(active_filter)
|
||||
if not key:
|
||||
return summary["total_claims"] > 0
|
||||
return summary.get(key, 0) > 0
|
||||
|
||||
|
||||
class ClaimExportMenuView(LoginRequiredMixin, PermissionRequiredMixin, TemplateView):
|
||||
template_name = "claims/export_placeholder.html"
|
||||
|
||||
Reference in New Issue
Block a user