diff --git a/templates/twitch/campaign_detail.html b/templates/twitch/campaign_detail.html index bea067c..e34918c 100644 --- a/templates/twitch/campaign_detail.html +++ b/templates/twitch/campaign_detail.html @@ -41,7 +41,6 @@ Connect Account

{% endif %} -
{{ campaign_data }}
Campaign Info
{% if user.is_staff %}

@@ -96,4 +95,5 @@ {% else %}

No drops available for this campaign.

{% endif %} +
{{ campaign_data }}
{% endblock content %} diff --git a/twitch/views.py b/twitch/views.py index 2a51921..b5b1bb0 100644 --- a/twitch/views.py +++ b/twitch/views.py @@ -168,6 +168,7 @@ class DropCampaignDetailView(DetailView): """ context: dict[str, Any] = super().get_context_data(**kwargs) campaign = context["campaign"] + drops = TimeBasedDrop.objects.filter(campaign=campaign).select_related("campaign").prefetch_related("benefits").order_by("required_minutes_watched") serialized_campaign = serialize( "json", @@ -187,12 +188,38 @@ class DropCampaignDetailView(DetailView): ), ) campaign_data = json.loads(serialized_campaign) + + if drops.exists(): + serialized_drops = serialize( + "json", + drops, + fields=( + "name", + "required_minutes_watched", + "required_subs", + "start_at", + "end_at", + ), + ) + drops_data = json.loads(serialized_drops) + + for i, drop in enumerate(drops): + benefits = drop.benefits.all() + if benefits.exists(): + serialized_benefits = serialize( + "json", + benefits, + fields=("name", "image_asset_url"), + ) + benefits_data = json.loads(serialized_benefits) + drops_data[i]["fields"]["benefits"] = benefits_data + + campaign_data[0]["fields"]["drops"] = drops_data + pretty_campaign_data = json.dumps(campaign_data[0], indent=4) context["now"] = timezone.now() - context["drops"] = ( - TimeBasedDrop.objects.filter(campaign=campaign).select_related("campaign").prefetch_related("benefits").order_by("required_minutes_watched") - ) + context["drops"] = drops context["campaign_data"] = pretty_campaign_data return context