mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 09:16:10 -06:00
adds filter query parameter on ObjectCountsWidget #12599
This commit is contained in:
parent
24a51dd86e
commit
3b9d9c686a
@ -1,6 +1,7 @@
|
|||||||
import uuid
|
import uuid
|
||||||
from functools import cached_property
|
from functools import cached_property
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
|
from itertools import chain
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
import feedparser
|
import feedparser
|
||||||
@ -121,6 +122,14 @@ class DashboardWidget:
|
|||||||
'config': self.config,
|
'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
|
@register_widget
|
||||||
class NoteWidget(DashboardWidget):
|
class NoteWidget(DashboardWidget):
|
||||||
@ -182,6 +191,7 @@ class ObjectCountsWidget(DashboardWidget):
|
|||||||
|
|
||||||
return render_to_string(self.template_name, {
|
return render_to_string(self.template_name, {
|
||||||
'counts': counts,
|
'counts': counts,
|
||||||
|
'filters': self.filter_query(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div class="list-group list-group-flush">
|
<div class="list-group list-group-flush">
|
||||||
{% for model, count in counts %}
|
{% for model, count in counts %}
|
||||||
{% if count != None %}
|
{% 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">
|
<div class="d-flex w-100 justify-content-between align-items-center">
|
||||||
{{ model|meta:"verbose_name_plural"|bettertitle }}
|
{{ model|meta:"verbose_name_plural"|bettertitle }}
|
||||||
<h6 class="mb-1">{{ count }}</h6>
|
<h6 class="mb-1">{{ count }}</h6>
|
||||||
|
Loading…
Reference in New Issue
Block a user