From 3ffd9bccb20f199ffc48263d019dfc3c44d0119b Mon Sep 17 00:00:00 2001 From: Tim Laszlo Date: Wed, 6 Jun 2012 16:55:57 -0500 Subject: web_reports: speed up client detail view --- .../Reports/reports/templates/clients/detail.html | 55 +++++----------------- .../Reports/reports/templatetags/bcfg2_tags.py | 13 ----- src/lib/Bcfg2/Server/Reports/reports/views.py | 24 +++++++--- 3 files changed, 29 insertions(+), 63 deletions(-) (limited to 'src/lib/Bcfg2/Server') diff --git a/src/lib/Bcfg2/Server/Reports/reports/templates/clients/detail.html b/src/lib/Bcfg2/Server/Reports/reports/templates/clients/detail.html index f4cdf7c2a..c02709545 100644 --- a/src/lib/Bcfg2/Server/Reports/reports/templates/clients/detail.html +++ b/src/lib/Bcfg2/Server/Reports/reports/templates/clients/detail.html @@ -95,58 +95,25 @@ span.history_links a { {% endif %} - {% if interaction.bad_entry_count %} + {% for type, ei_list in ei_lists %} + {% if ei_list %}
-
-

Bad Entries — {{ interaction.bad_entry_count }}

-
[+]
+
+

{{ type|capfirst }} Entries — {{ ei_list|length }}

+
[+]
- - {% for e in interaction.bad|sortwell %} +
+ {% for ei in ei_list %} - - + + {% endfor %}
{{e.entry.kind}}: - {{e.entry.name}}{{ei.entry.kind}}: + {{ei.entry.name}}
{% endif %} - - {% if interaction.modified_entry_count %} -
-
-

Modified Entries — {{ interaction.modified_entry_count }}

-
[+]
-
- - {% for e in interaction.modified|sortwell %} - - - - - {% endfor %} -
{{e.entry.kind}}: - {{e.entry.name}}
-
- {% endif %} - - {% if interaction.extra_entry_count %} -
-
-

Extra Entries — {{ interaction.extra_entry_count }}

-
[+]
-
- - {% for e in interaction.extra|sortwell %} - - - - - {% endfor %} -
{{e.entry.kind}}:{{e.entry.name}}
-
- {% endif %} + {% endfor %} {% if entry_list %}
diff --git a/src/lib/Bcfg2/Server/Reports/reports/templatetags/bcfg2_tags.py b/src/lib/Bcfg2/Server/Reports/reports/templatetags/bcfg2_tags.py index 61895df57..894353bba 100644 --- a/src/lib/Bcfg2/Server/Reports/reports/templatetags/bcfg2_tags.py +++ b/src/lib/Bcfg2/Server/Reports/reports/templatetags/bcfg2_tags.py @@ -262,19 +262,6 @@ def add_url_filter(parser, token): return AddUrlFilter(filter_name, filter_value) -@register.filter -def sortwell(value): - """ - Sorts a list(or evaluates queryset to list) of bad, extra, or modified items in the best - way for presentation - """ - - configItems = list(value) - configItems.sort(lambda x, y: cmp(x.entry.name, y.entry.name)) - configItems.sort(lambda x, y: cmp(x.entry.kind, y.entry.kind)) - return configItems - - class MediaTag(template.Node): def __init__(self, filter_value): self.filter_value = filter_value diff --git a/src/lib/Bcfg2/Server/Reports/reports/views.py b/src/lib/Bcfg2/Server/Reports/reports/views.py index d316c5713..e60a27997 100644 --- a/src/lib/Bcfg2/Server/Reports/reports/views.py +++ b/src/lib/Bcfg2/Server/Reports/reports/views.py @@ -286,13 +286,25 @@ def client_detail(request, hostname=None, pk=None): context = dict() client = get_object_or_404(Client, name=hostname) if(pk == None): - context['interaction'] = client.current_interaction - return render_history_view(request, 'clients/detail.html', page_limit=5, - client=client, context=context) + inter = client.current_interaction + maxdate = None else: - context['interaction'] = client.interactions.get(pk=pk) - return render_history_view(request, 'clients/detail.html', page_limit=5, - client=client, maxdate=context['interaction'].timestamp, context=context) + inter = client.interactions.get(pk=pk) + maxdate = inter.timestamp + + ei = Entries_interactions.objects.filter(interaction=inter).select_related('entry').order_by('entry__kind', 'entry__name') + #ei = Entries_interactions.objects.filter(interaction=inter).select_related('entry') + #ei = sorted(Entries_interactions.objects.filter(interaction=inter).select_related('entry'), + # key=lambda x: (x.entry.kind, x.entry.name)) + context['ei_lists'] = ( + ('bad', [x for x in ei if x.type == TYPE_BAD]), + ('modified', [x for x in ei if x.type == TYPE_MODIFIED]), + ('extra', [x for x in ei if x.type == TYPE_EXTRA]) + ) + + context['interaction']=inter + return render_history_view(request, 'clients/detail.html', page_limit=5, + client=client, maxdate=maxdate, context=context) def client_manage(request): -- cgit v1.2.3-1-g7c22