diff options
author | 2012-11-27 14:16:56 +0100 | |
---|---|---|
committer | 2012-11-27 14:16:56 +0100 | |
commit | 3f47a08a54f15af197fdb93c203dcc1a4af0d35e (patch) | |
tree | 61903a4762bb1cc77aa0a708ccfd008317473623 | |
parent | euscanwww: tweak the new handler code (diff) | |
download | euscan-3f47a08a54f15af197fdb93c203dcc1a4af0d35e.tar.gz euscan-3f47a08a54f15af197fdb93c203dcc1a4af0d35e.tar.bz2 euscan-3f47a08a54f15af197fdb93c203dcc1a4af0d35e.zip |
euscanwww: Improved query for aggregating handler's data
Signed-off-by: volpino <fox91@anche.no>
-rw-r--r-- | euscanwww/djeuscan/managers.py | 1 | ||||
-rw-r--r-- | euscanwww/djeuscan/templates/euscan/statistics.html | 4 | ||||
-rw-r--r-- | euscanwww/djeuscan/views.py | 19 |
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} |