Add smoke tests for endpoints and optimize database queries

This commit is contained in:
Joakim Hellsén 2026-04-10 23:54:10 +02:00
commit 1782db4840
Signed by: Joakim Hellsén
SSH key fingerprint: SHA256:/9h/CsExpFp+PRhsfA0xznFx2CGfTT5R/kpuFfUgEQk
8 changed files with 1044 additions and 48 deletions

View file

@ -361,7 +361,24 @@ class KickDropCampaign(auto_prefetch.Model):
If both a base reward and a "(Con)" variant exist, prefer the base reward name.
"""
rewards_by_name: dict[str, KickReward] = {}
for reward in self.rewards.all().order_by("required_units", "name", "kick_id"): # pyright: ignore[reportAttributeAccessIssue]
prefetched_rewards: list[KickReward] | None = getattr(
self,
"_prefetched_objects_cache",
{},
).get("rewards")
if prefetched_rewards is not None:
rewards_iterable = sorted(
prefetched_rewards,
key=lambda reward: (reward.required_units, reward.name, reward.kick_id),
)
else:
rewards_iterable = self.rewards.all().order_by( # pyright: ignore[reportAttributeAccessIssue]
"required_units",
"name",
"kick_id",
)
for reward in rewards_iterable:
key: str = self._normalized_reward_name(reward.name)
existing: KickReward | None = rewards_by_name.get(key)
if existing is None: