summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Reports/reports
diff options
context:
space:
mode:
authorTim Laszlo <tim.laszlo@gmail.com>2012-06-06 10:45:31 -0500
committerTim Laszlo <tim.laszlo@gmail.com>2012-06-06 14:35:28 -0500
commit6b7b61e585df5fd02fab166421a20f5905b5ce70 (patch)
tree2995e43548f07c09754f1dfa4786b817139171e5 /src/lib/Bcfg2/Server/Reports/reports
parentee7a0fae2160d8e6f31c7ff932419c1e500e7e52 (diff)
downloadbcfg2-6b7b61e585df5fd02fab166421a20f5905b5ce70.tar.gz
bcfg2-6b7b61e585df5fd02fab166421a20f5905b5ce70.tar.bz2
bcfg2-6b7b61e585df5fd02fab166421a20f5905b5ce70.zip
web_reports: filter by group
Diffstat (limited to 'src/lib/Bcfg2/Server/Reports/reports')
-rw-r--r--src/lib/Bcfg2/Server/Reports/reports/views.py30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/lib/Bcfg2/Server/Reports/reports/views.py b/src/lib/Bcfg2/Server/Reports/reports/views.py
index 0b8cb620a..4ebf8e5b0 100644
--- a/src/lib/Bcfg2/Server/Reports/reports/views.py
+++ b/src/lib/Bcfg2/Server/Reports/reports/views.py
@@ -87,6 +87,30 @@ def timeview(fn):
return _handle_timeview
+def _handle_filters(query, **kwargs):
+ """
+ Applies standard filters to a query object
+
+ Returns an updated query object
+
+ query - query object to filter
+
+ server -- Filter interactions by server
+ state -- Filter interactions by state
+ group -- Filter interactions by group
+
+ """
+ if 'state' in kwargs and kwargs['state']:
+ query = query.filter(state__exact=kwargs['state'])
+ if 'server' in kwargs and kwargs['server']:
+ query = query.filter(server__exact=kwargs['server'])
+
+ if 'group' in kwargs and kwargs['group']:
+ group = get_object_or_404(Group, name=kwargs['group'])
+ query = query.filter(metadata__groups__id=group.pk)
+ return query
+
+
def config_item(request, pk, type="bad"):
"""
Display a single entry.
@@ -393,6 +417,7 @@ def render_history_view(request, template='clients/history.html', **kwargs):
not found
server -- Filter interactions by server
state -- Filter interactions by state
+ group -- Filter interactions by group
entry_max -- Most recent interaction to display
orderby -- Sort results using this field
@@ -422,10 +447,7 @@ def render_history_view(request, template='clients/history.html', **kwargs):
if 'sort' in kwargs:
context['sort'] = kwargs['sort']
- if 'state' in kwargs and kwargs['state']:
- iquery = iquery.filter(state__exact=kwargs['state'])
- if 'server' in kwargs and kwargs['server']:
- iquery = iquery.filter(server__exact=kwargs['server'])
+ iquery = _handle_filters(iquery, **kwargs)
if entry_max:
iquery = iquery.filter(timestamp__lte=entry_max)