diff options
author | Tim Laszlo <tim.laszlo@gmail.com> | 2012-06-06 10:45:31 -0500 |
---|---|---|
committer | Tim Laszlo <tim.laszlo@gmail.com> | 2012-06-06 14:35:28 -0500 |
commit | 6b7b61e585df5fd02fab166421a20f5905b5ce70 (patch) | |
tree | 2995e43548f07c09754f1dfa4786b817139171e5 /src/lib/Bcfg2/Server/Reports/reports/views.py | |
parent | ee7a0fae2160d8e6f31c7ff932419c1e500e7e52 (diff) | |
download | bcfg2-6b7b61e585df5fd02fab166421a20f5905b5ce70.tar.gz bcfg2-6b7b61e585df5fd02fab166421a20f5905b5ce70.tar.bz2 bcfg2-6b7b61e585df5fd02fab166421a20f5905b5ce70.zip |
web_reports: filter by group
Diffstat (limited to 'src/lib/Bcfg2/Server/Reports/reports/views.py')
-rw-r--r-- | src/lib/Bcfg2/Server/Reports/reports/views.py | 30 |
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) |