aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--euscanwww/djeuscan/managers.py1
-rw-r--r--euscanwww/djeuscan/templates/euscan/statistics.html4
-rw-r--r--euscanwww/djeuscan/views.py19
3 files changed, 8 insertions, 16 deletions
diff --git a/euscanwww/djeuscan/managers.py b/euscanwww/djeuscan/managers.py
index 6c04b85..a55f38c 100644
--- a/euscanwww/djeuscan/managers.py
+++ b/euscanwww/djeuscan/managers.py
@@ -119,6 +119,7 @@ class PackageMixin(object):
return packages.filter(version__handler=handler,
version__overlay="").distinct()
+
class PackageQuerySet(models.query.QuerySet, PackageMixin):
pass
diff --git a/euscanwww/djeuscan/templates/euscan/statistics.html b/euscanwww/djeuscan/templates/euscan/statistics.html
index 8372be0..b4fccad 100644
--- a/euscanwww/djeuscan/templates/euscan/statistics.html
+++ b/euscanwww/djeuscan/templates/euscan/statistics.html
@@ -58,8 +58,8 @@
{% for handler in handlers %}
<tr>
<td>
- <a href="{% url "statistics_handler" handler.handler %}">
- {{ handler.handler }}
+ <a href="{% url "statistics_handler" handler.handler %}">
+ {{ handler.handler }}
</a>
</td>
<td>{{ handler.n }}</td>
diff --git a/euscanwww/djeuscan/views.py b/euscanwww/djeuscan/views.py
index 1b128a4..b599d4c 100644
--- a/euscanwww/djeuscan/views.py
+++ b/euscanwww/djeuscan/views.py
@@ -380,21 +380,12 @@ def config(request):
@render_to("euscan/statistics.html")
def statistics(request):
- # Didn't found a way to do:
- # SELECT COUNT(*), AVG(confidence) FROM Versions
- # GROUP BY handler
- handlers = ( Version.objects.values("handler")
- .filter(overlay="")
- .annotate(n=models.Count("handler"))
+ handlers = (
+ Version.objects.values("handler")
+ .filter(overlay="")
+ .annotate(n=models.Count("handler"),
+ avg_conf=models.Avg("confidence"))
)
- for i in xrange(len(handlers)):
- handler_id = handlers[i]['handler']
- avg = ( Version.objects.filter(handler=handler_id)
- .aggregate(avg=models.Avg("confidence"))
- )
- if not handler_id:
- handlers[i]['handler'] = "None"
- handlers[i]['avg_conf'] = avg['avg'] if 'avg' in avg else 0
return {"handlers": handlers}