mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-19 20:59:01 +02:00
Add statistics page
Add a page with basic statistics for the index - number of layers, recipes, classes, machines and distros on an overall basis (distinct names) and per branch, since I've been asked a few times for this kind of information. It's currently only linked from the Tools menu for logged-in users, but the URL will work for anyone. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
parent
b614cba817
commit
bed43a9be5
|
@ -8,7 +8,7 @@ from django.conf.urls import *
|
|||
from django.views.generic import TemplateView, DetailView, ListView, RedirectView
|
||||
from django.views.defaults import page_not_found
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from layerindex.views import LayerListView, LayerReviewListView, LayerReviewDetailView, RecipeSearchView, MachineSearchView, PlainTextListView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, HistoryListView, EditProfileFormView, AdvancedRecipeSearchView, BulkChangeView, BulkChangeSearchView, bulk_change_edit_view, bulk_change_patch_view, BulkChangeDeleteView, RecipeDetailView, RedirectParamsView, ClassicRecipeSearchView, ClassicRecipeDetailView, ClassicRecipeStatsView, LayerUpdateDetailView, UpdateListView, UpdateDetailView
|
||||
from layerindex.views import LayerListView, LayerReviewListView, LayerReviewDetailView, RecipeSearchView, MachineSearchView, PlainTextListView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, HistoryListView, EditProfileFormView, AdvancedRecipeSearchView, BulkChangeView, BulkChangeSearchView, bulk_change_edit_view, bulk_change_patch_view, BulkChangeDeleteView, RecipeDetailView, RedirectParamsView, ClassicRecipeSearchView, ClassicRecipeDetailView, ClassicRecipeStatsView, LayerUpdateDetailView, UpdateListView, UpdateDetailView, StatsView
|
||||
from layerindex.models import LayerItem, Recipe, RecipeChangeset
|
||||
from rest_framework import routers
|
||||
from . import restviews
|
||||
|
@ -127,6 +127,10 @@ urlpatterns = patterns('',
|
|||
TemplateView.as_view(
|
||||
template_name='layerindex/about.html'),
|
||||
name="about"),
|
||||
url(r'^stats/$',
|
||||
StatsView.as_view(
|
||||
template_name='layerindex/stats.html'),
|
||||
name='stats'),
|
||||
url(r'^oe-classic/$',
|
||||
RedirectView.as_view(url=reverse_lazy('classic_recipe_search'), permanent=False),
|
||||
name='classic'),
|
||||
|
|
|
@ -1007,3 +1007,20 @@ class ClassicRecipeStatsView(TemplateView):
|
|||
'jquery_on_ready': False,
|
||||
}
|
||||
return context
|
||||
|
||||
|
||||
class StatsView(TemplateView):
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(StatsView, self).get_context_data(**kwargs)
|
||||
context['layercount'] = LayerItem.objects.count()
|
||||
context['recipe_count_distinct'] = Recipe.objects.values('pn').distinct().count()
|
||||
context['class_count_distinct'] = BBClass.objects.values('name').distinct().count()
|
||||
context['machine_count_distinct'] = Machine.objects.values('name').distinct().count()
|
||||
context['distro_count_distinct'] = Distro.objects.values('name').distinct().count()
|
||||
context['perbranch'] = Branch.objects.order_by('sort_priority').annotate(
|
||||
layer_count=Count('layerbranch', distinct=True),
|
||||
recipe_count=Count('layerbranch__recipe', distinct=True),
|
||||
class_count=Count('layerbranch__bbclass', distinct=True),
|
||||
machine_count=Count('layerbranch__machine', distinct=True),
|
||||
distro_count=Count('layerbranch__distro', distinct=True))
|
||||
return context
|
||||
|
|
|
@ -73,6 +73,7 @@
|
|||
<li><a href="{% url 'bulk_change' %}">Bulk Change</a></li>
|
||||
<li><a href="{% url 'duplicates' 'master' %}">Duplicates</a></li>
|
||||
<li><a href="{% url 'update_list' %}">Updates</a></li>
|
||||
<li><a href="{% url 'stats' %}">Statistics</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
|
60
templates/layerindex/stats.html
Normal file
60
templates/layerindex/stats.html
Normal file
|
@ -0,0 +1,60 @@
|
|||
{% extends "base.html" %}
|
||||
{% load i18n %}
|
||||
{% load static %}
|
||||
|
||||
{% comment %}
|
||||
|
||||
layerindex-web - statistics page template
|
||||
|
||||
Copyright (C) 2018 Intel Corporation
|
||||
Licensed under the MIT license, see COPYING.MIT for details
|
||||
|
||||
{% endcomment %}
|
||||
|
||||
|
||||
<!--
|
||||
{% block title_append %} - statistics{% endblock %}
|
||||
-->
|
||||
|
||||
{% block content %}
|
||||
{% autoescape on %}
|
||||
|
||||
<h2>Statistics</h2>
|
||||
|
||||
<h3>Overall</h3>
|
||||
<dl class="dl-horizontal">
|
||||
<dt>Layers</dt><dd>{{ layercount }}</dd>
|
||||
<dt>Recipes</dt><dd>{{ recipe_count_distinct }} (distinct names)</dd>
|
||||
<dt>Machines</dt><dd>{{ machine_count_distinct }} (distinct names)</dd>
|
||||
<dt>Classes</dt><dd>{{ class_count_distinct }} (distinct names)</dd>
|
||||
<dt>Distros</dt><dd>{{ distro_count_distinct }} (distinct names)</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Per branch</h3>
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<th>Branch</th>
|
||||
<th style="text-align: right">Layers</th>
|
||||
<th style="text-align: right">Recipes</th>
|
||||
<th style="text-align: right">Machines</th>
|
||||
<th style="text-align: right">Classes</th>
|
||||
<th style="text-align: right">Distros</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for branch in perbranch %}
|
||||
<tr {% if not branch.updates_enabled %}class="muted"{% endif %}>
|
||||
<td>{{ branch.name }}</td>
|
||||
<td style="text-align: right">{{ branch.layer_count }}</td>
|
||||
<td style="text-align: right">{{ branch.recipe_count }}</td>
|
||||
<td style="text-align: right">{{ branch.machine_count }}</td>
|
||||
<td style="text-align: right">{{ branch.class_count }}</td>
|
||||
<td style="text-align: right">{{ branch.distro_count }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endautoescape %}
|
||||
{% endblock %}
|
||||
|
Loading…
Reference in New Issue
Block a user