adds filter query parameter on ObjectCountsWidget #12599

This commit is contained in:
Abhimanyu Saharan 2023-05-26 02:14:27 +05:30
parent 24a51dd86e
commit 3b9d9c686a
2 changed files with 11 additions and 1 deletions

View File

@ -1,6 +1,7 @@
import uuid
from functools import cached_property
from hashlib import sha256
from itertools import chain
from urllib.parse import urlencode
import feedparser
@ -121,6 +122,14 @@ class DashboardWidget:
'config': self.config,
}
def filter_query(self):
query_string = ''
if filters := self.config.get('filters', None):
filter_items = [(k, v) if not isinstance(v, list) else zip([k] * len(v), v) for k, v in filters.items()]
query_string = urlencode(filter_items, doseq=True)
return query_string
@register_widget
class NoteWidget(DashboardWidget):
@ -182,6 +191,7 @@ class ObjectCountsWidget(DashboardWidget):
return render_to_string(self.template_name, {
'counts': counts,
'filters': self.filter_query(),
})

View File

@ -4,7 +4,7 @@
<div class="list-group list-group-flush">
{% for model, count in counts %}
{% if count != None %}
<a href="{% url model|viewname:"list" %}" class="list-group-item list-group-item-action">
<a href="{% url model|viewname:"list" %}{% if filters %}?{{ filters }}{% endif %}" class="list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-between align-items-center">
{{ model|meta:"verbose_name_plural"|bettertitle }}
<h6 class="mb-1">{{ count }}</h6>