From 7edf85712747a4408a74a4495c4108911c0b918c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Hells=C3=A9n?= Date: Mon, 5 Jan 2026 22:37:11 +0100 Subject: [PATCH] Add description and image_url fields to DropCampaign schema and update validation logic --- twitch/management/commands/better_import_drops.py | 4 ++++ twitch/schemas.py | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/twitch/management/commands/better_import_drops.py b/twitch/management/commands/better_import_drops.py index 4170016..976ee29 100644 --- a/twitch/management/commands/better_import_drops.py +++ b/twitch/management/commands/better_import_drops.py @@ -485,6 +485,8 @@ class Command(BaseCommand): # load and log noise while keeping caches accurate. return bool( cached_obj.name == defaults["name"] + and cached_obj.description == defaults["description"] + and getattr(cached_obj, "image_url", "") == defaults.get("image_url", "") and cached_obj.start_at == defaults["start_at"] and cached_obj.end_at == defaults["end_at"] and cached_obj.details_url == defaults["details_url"] @@ -563,6 +565,8 @@ class Command(BaseCommand): defaults: dict[str, str | datetime | Game | bool] = { "name": drop_campaign.name, + "description": drop_campaign.description, + "image_url": getattr(drop_campaign, "image_url", ""), "game": game_obj, "start_at": start_at_dt, "end_at": end_at_dt, diff --git a/twitch/schemas.py b/twitch/schemas.py index ac1afd0..f12028c 100644 --- a/twitch/schemas.py +++ b/twitch/schemas.py @@ -164,6 +164,7 @@ class DropCampaign(BaseModel): end_at: str = Field(alias="endAt") details_url: str = Field(alias="detailsURL") account_link_url: str = Field(alias="accountLinkURL") + description: str = Field(default="", alias="description") self: DropCampaignSelfEdge time_based_drops: list[TimeBasedDropSchema] = Field(default=[], alias="timeBasedDrops") type_name: Literal["DropCampaign"] = Field(alias="__typename") @@ -171,8 +172,6 @@ class DropCampaign(BaseModel): image_url: str | None = Field(default=None, alias="imageURL") allow: dict | None = None event_based_drops: list | None = Field(default=None, alias="eventBasedDrops") - # Legacy/API response fields that should be ignored - description: str | None = None model_config = { "extra": "forbid",