Use django-auto-prefetch

This commit is contained in:
2024-07-01 19:47:15 +02:00
parent 40587fa24f
commit 80ea0de983
3 changed files with 190 additions and 14 deletions

View File

@ -1,3 +1,4 @@
import auto_prefetch
from django.contrib.humanize.templatetags.humanize import naturaltime
from django.db import models
from django.db.models import Value
@ -8,13 +9,13 @@ from django.utils import timezone
from simple_history.models import HistoricalRecords
class Organization(models.Model):
class Organization(auto_prefetch.Model):
id = models.TextField(primary_key=True)
name = models.TextField(blank=True, null=True)
added_at = models.DateTimeField(blank=True, null=True, auto_now_add=True)
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Organization"
verbose_name_plural = "Organizations"
ordering = ("name",)
@ -23,7 +24,7 @@ class Organization(models.Model):
return self.name or self.id
class Game(models.Model):
class Game(auto_prefetch.Model):
id = models.TextField(primary_key=True)
slug = models.TextField(blank=True, null=True)
twitch_url = models.GeneratedField( # type: ignore # noqa: PGH003
@ -45,7 +46,7 @@ class Game(models.Model):
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
history = HistoricalRecords()
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Game"
verbose_name_plural = "Games"
ordering = ("display_name",)
@ -54,20 +55,23 @@ class Game(models.Model):
return self.display_name or self.slug or self.id
class DropBenefit(models.Model):
class DropBenefit(auto_prefetch.Model):
id = models.TextField(primary_key=True)
created_at = models.DateTimeField(blank=True, null=True)
entitlement_limit = models.IntegerField(blank=True, null=True)
image_asset_url = models.URLField(blank=True, null=True)
is_ios_available = models.BooleanField(blank=True, null=True)
name = models.TextField(blank=True, null=True)
owner_organization = models.ForeignKey(Organization, on_delete=models.CASCADE)
game = models.ForeignKey(Game, on_delete=models.CASCADE)
owner_organization = auto_prefetch.ForeignKey(
Organization,
on_delete=models.CASCADE,
)
game = auto_prefetch.ForeignKey(Game, on_delete=models.CASCADE)
added_at = models.DateTimeField(blank=True, null=True, auto_now_add=True)
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
history = HistoricalRecords()
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Drop Benefit"
verbose_name_plural = "Drop Benefits"
ordering = ("name",)
@ -76,7 +80,7 @@ class DropBenefit(models.Model):
return f"{self.owner_organization.name} - {self.game.display_name} - {self.name}"
class TimeBasedDrop(models.Model):
class TimeBasedDrop(auto_prefetch.Model):
id = models.TextField(primary_key=True)
required_subs = models.IntegerField(blank=True, null=True)
end_at = models.DateTimeField(blank=True, null=True)
@ -88,7 +92,7 @@ class TimeBasedDrop(models.Model):
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
history = HistoricalRecords()
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Time-Based Drop"
verbose_name_plural = "Time-Based Drops"
ordering = ("name",)
@ -101,7 +105,7 @@ class TimeBasedDrop(models.Model):
return f"{self.benefits.first()} - {self.name}"
class DropCampaign(models.Model):
class DropCampaign(auto_prefetch.Model):
id = models.TextField(primary_key=True)
account_link_url = models.URLField(blank=True, null=True)
description = models.TextField(blank=True, null=True)
@ -111,12 +115,12 @@ class DropCampaign(models.Model):
name = models.TextField(blank=True, null=True)
start_at = models.DateTimeField(blank=True, null=True)
status = models.TextField(blank=True, null=True)
game = models.ForeignKey(
game = auto_prefetch.ForeignKey(
Game,
on_delete=models.CASCADE,
related_name="drop_campaigns",
)
owner = models.ForeignKey(
owner = auto_prefetch.ForeignKey(
Organization,
on_delete=models.CASCADE,
related_name="drop_campaigns",
@ -126,7 +130,7 @@ class DropCampaign(models.Model):
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
history = HistoricalRecords()
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Drop Campaign"
verbose_name_plural = "Drop Campaigns"
ordering = ("name",)