Al/small updates #17
|
@ -40,12 +40,27 @@ class RateableEntity(models.Model):
|
||||||
return None
|
return None
|
||||||
return rating_sum / reviews.count()
|
return rating_sum / reviews.count()
|
||||||
|
|
||||||
# Gets a 5-item list of the count of each rating.
|
# Gets a 5-item list of the count of each rating, and the percentage of total votes.
|
||||||
def getRatingDistribution(self):
|
def getRatingDistribution(self):
|
||||||
reviews = self.review_set.select_related()
|
reviews = self.review_set.select_related()
|
||||||
distribution = [0, 0, 0, 0, 0]
|
distribution = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
|
||||||
|
review_count = len(reviews)
|
||||||
|
|
||||||
for review in reviews:
|
for review in reviews:
|
||||||
distribution[review.rating-1] += 1
|
distribution[review.rating-1][0] += 1
|
||||||
|
|
||||||
|
max_val = 0
|
||||||
|
for rating_dist in distribution:
|
||||||
|
rating_dist[1] = (rating_dist[0] / review_count) * 100
|
||||||
|
if (rating_dist[1] > max_val):
|
||||||
|
max_val = rating_dist[1]
|
||||||
|
|
||||||
|
print(max_val)
|
||||||
|
print(distribution)
|
||||||
|
for rating_dist in distribution:
|
||||||
|
rating_dist[1] = (rating_dist[1] / max_val) * 100
|
||||||
|
|
||||||
|
print(distribution)
|
||||||
return distribution
|
return distribution
|
||||||
|
|
||||||
# Simply returns the name as the string representation.
|
# Simply returns the name as the string representation.
|
||||||
|
|
|
@ -25,18 +25,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{# Rating Distribution Display #}
|
{# Rating Distribution Display #}
|
||||||
|
|
||||||
|
|
||||||
<!-- <div class="col-sm-3">
|
|
||||||
<ul>
|
|
||||||
<li>5: {{ entity.rating_distribution.4 }}</li>
|
|
||||||
<li>4: {{ entity.rating_distribution.3 }}</li>
|
|
||||||
<li>3: {{ entity.rating_distribution.2 }}</li>
|
|
||||||
<li>2: {{ entity.rating_distribution.1 }}</li>
|
|
||||||
<li>1: {{ entity.rating_distribution.0 }}</li>
|
|
||||||
</ul>
|
|
||||||
</div>-->
|
|
||||||
|
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<h4>Rating breakdown</h4>
|
<h4>Rating breakdown</h4>
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
|
@ -45,12 +33,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left" style="width:180px;">
|
<div class="pull-left" style="width:180px;">
|
||||||
<div class="progress" style="height:9px; margin:8px 0;">
|
<div class="progress" style="height:9px; margin:8px 0;">
|
||||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="5" aria-valuemin="0" aria-valuemax="5" style="width: 0%">
|
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="5" aria-valuemin="0" aria-valuemax="5" style="width: {{ entity.rating_distribution.4.1 }}%">
|
||||||
<span class="sr-only">80% Complete (danger)</span>
|
<span class="sr-only">80% Complete (danger)</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.4 }}</div>
|
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.4.0 }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
<div class="pull-left" style="width:35px; line-height:1;">
|
<div class="pull-left" style="width:35px; line-height:1;">
|
||||||
|
@ -58,12 +46,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left" style="width:180px;">
|
<div class="pull-left" style="width:180px;">
|
||||||
<div class="progress" style="height:9px; margin:8px 0;">
|
<div class="progress" style="height:9px; margin:8px 0;">
|
||||||
<div class="progress-bar progress-bar-primary" role="progressbar" aria-valuenow="4" aria-valuemin="0" aria-valuemax="5" style="width: 33%">
|
<div class="progress-bar progress-bar-primary" role="progressbar" aria-valuenow="4" aria-valuemin="0" aria-valuemax="5" style="width: {{ entity.rating_distribution.3.1 }}%">
|
||||||
<span class="sr-only">80% Complete (danger)</span>
|
<span class="sr-only">80% Complete (danger)</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.3 }}</div>
|
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.3.0 }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
<div class="pull-left" style="width:35px; line-height:1;">
|
<div class="pull-left" style="width:35px; line-height:1;">
|
||||||
|
@ -71,12 +59,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left" style="width:180px;">
|
<div class="pull-left" style="width:180px;">
|
||||||
<div class="progress" style="height:9px; margin:8px 0;">
|
<div class="progress" style="height:9px; margin:8px 0;">
|
||||||
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="3" aria-valuemin="0" aria-valuemax="5" style="width: 33%">
|
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="3" aria-valuemin="0" aria-valuemax="5" style="width: {{ entity.rating_distribution.2.1 }}%">
|
||||||
<span class="sr-only">80% Complete (danger)</span>
|
<span class="sr-only">80% Complete (danger)</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.2 }}</div>
|
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.2.0 }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
<div class="pull-left" style="width:35px; line-height:1;">
|
<div class="pull-left" style="width:35px; line-height:1;">
|
||||||
|
@ -84,12 +72,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left" style="width:180px;">
|
<div class="pull-left" style="width:180px;">
|
||||||
<div class="progress" style="height:9px; margin:8px 0;">
|
<div class="progress" style="height:9px; margin:8px 0;">
|
||||||
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="5" style="width: 33%">
|
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="5" style="width: {{ entity.rating_distribution.1.1 }}%">
|
||||||
<span class="sr-only">80% Complete (danger)</span>
|
<span class="sr-only">80% Complete (danger)</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.1 }}</div>
|
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.1.0 }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
<div class="pull-left" style="width:35px; line-height:1;">
|
<div class="pull-left" style="width:35px; line-height:1;">
|
||||||
|
@ -97,12 +85,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left" style="width:180px;">
|
<div class="pull-left" style="width:180px;">
|
||||||
<div class="progress" style="height:9px; margin:8px 0;">
|
<div class="progress" style="height:9px; margin:8px 0;">
|
||||||
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="1" aria-valuemin="0" aria-valuemax="5" style="width: 0">
|
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="1" aria-valuemin="0" aria-valuemax="5" style="width: {{ entity.rating_distribution.0.1 }}%">
|
||||||
<span class="sr-only">80% Complete (danger)</span>
|
<span class="sr-only">80% Complete (danger)</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.0 }}</div>
|
<div class="pull-right" style="margin-left:10px;">{{ entity.rating_distribution.0.0 }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -50,7 +50,6 @@ def rateable_entity(request, entity_id):
|
||||||
# This MUST be done after categorizing the object above.
|
# This MUST be done after categorizing the object above.
|
||||||
entity.average_rating = entity.getAverageRating()
|
entity.average_rating = entity.getAverageRating()
|
||||||
entity.rating_distribution = entity.getRatingDistribution()
|
entity.rating_distribution = entity.getRatingDistribution()
|
||||||
print(entity.rating_distribution)
|
|
||||||
except RateableEntity.DoesNotExist:
|
except RateableEntity.DoesNotExist:
|
||||||
raise Http404("RateableEntity with id " + str(entity_id) + " does not exist.")
|
raise Http404("RateableEntity with id " + str(entity_id) + " does not exist.")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue