euscanwww: Improved query for aggregating handler's data
Signed-off-by: volpino <fox91@anche.no>
This commit is contained in:
parent
c6a0c29401
commit
3f47a08a54
@ -119,6 +119,7 @@ class PackageMixin(object):
|
||||
return packages.filter(version__handler=handler,
|
||||
version__overlay="").distinct()
|
||||
|
||||
|
||||
class PackageQuerySet(models.query.QuerySet, PackageMixin):
|
||||
pass
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user