aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2018-01-11 23:13:31 +1300
committerPaul Eggleton <paul.eggleton@linux.intel.com>2018-02-20 16:00:13 +1300
commitbed43a9be53a2f1722be75fb4bd63a6d7a94afaa (patch)
tree7113305e17f2973d2b9af96b7602f62d7ef23467
parentb614cba8174c97461460f7c6d0437704631420b2 (diff)
downloadopenembedded-core-contrib-bed43a9be53a2f1722be75fb4bd63a6d7a94afaa.tar.gz
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>
-rw-r--r--layerindex/urls.py6
-rw-r--r--layerindex/views.py17
-rw-r--r--templates/base.html1
-rw-r--r--templates/layerindex/stats.html60
4 files changed, 83 insertions, 1 deletions
diff --git a/layerindex/urls.py b/layerindex/urls.py
index 7deaf230bc..d2f9eab228 100644
--- a/layerindex/urls.py
+++ b/layerindex/urls.py
@@ -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'),
diff --git a/layerindex/views.py b/layerindex/views.py
index 4f6c2c9df8..95812ca29f 100644
--- a/layerindex/views.py
+++ b/layerindex/views.py
@@ -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
diff --git a/templates/base.html b/templates/base.html
index 8a3b8fe510..a9d7c83d96 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -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 %}
diff --git a/templates/layerindex/stats.html b/templates/layerindex/stats.html
new file mode 100644
index 0000000000..3c4971b1c9
--- /dev/null
+++ b/templates/layerindex/stats.html
@@ -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 %}
+