|
@@ -53,22 +53,34 @@ class BaseModel(TimeStampedModel):
|
|
|
return self.name
|
|
|
|
|
|
|
|
|
-class Genre(BaseModel):
|
|
|
+class StatisticsMixin(models.Model):
|
|
|
+ class Meta:
|
|
|
+ abstract = True
|
|
|
+
|
|
|
+ @property
|
|
|
+ def rating_avg(self):
|
|
|
+ avg = self.game_set.aggregate(models.Avg("rating"))["rating__avg"]
|
|
|
+ if avg:
|
|
|
+ return int(100 * avg)
|
|
|
+ return 0
|
|
|
+
|
|
|
+
|
|
|
+class Genre(BaseModel, StatisticsMixin):
|
|
|
def get_absolute_url(self):
|
|
|
return reverse("games:genre_detail", args=[self.slug])
|
|
|
|
|
|
|
|
|
-class Publisher(BaseModel):
|
|
|
+class Publisher(BaseModel, StatisticsMixin):
|
|
|
def get_absolute_url(self):
|
|
|
return reverse("games:publisher_detail", args=[self.slug])
|
|
|
|
|
|
|
|
|
-class Developer(BaseModel):
|
|
|
+class Developer(BaseModel, StatisticsMixin):
|
|
|
def get_absolute_url(self):
|
|
|
return reverse("games:developer_detail", args=[self.slug])
|
|
|
|
|
|
|
|
|
-class GameSystem(BaseModel):
|
|
|
+class GameSystem(BaseModel, StatisticsMixin):
|
|
|
retropie_slug = models.CharField(
|
|
|
blank=True,
|
|
|
null=True,
|