diff --git a/templates/twitch/includes/reward_campaign_card.html b/templates/twitch/includes/reward_campaign_card.html new file mode 100644 index 0000000..1b3f70a --- /dev/null +++ b/templates/twitch/includes/reward_campaign_card.html @@ -0,0 +1,65 @@ +{% load image_tags %} +
+ {% picture campaign.image_best_url alt="Image for "|add:campaign.name width=120 %} +
+

+ + {% if campaign.brand %} + {{ campaign.brand }}: {{ campaign.name }} + {% else %} + {{ campaign.name }} + {% endif %} + +

+ {% if campaign.starts_at <= now and campaign.ends_at >= now %} +

+ Ends: + +

+ {% elif campaign.starts_at > now %} +

+ Starts: + +

+ {% else %} +

+ Ended: + +

+ {% endif %} + {% if campaign.game %} +

+ Game: + {{ campaign.game.display_name }} +

+ {% elif campaign.is_sitewide %} +

+ Type: Site-wide reward campaign +

+ {% else %} +

+ Type: + No game assigned +

+ {% endif %} + {% if campaign.summary %} +

{{ campaign.summary }}

+ {% endif %} +
+
diff --git a/templates/twitch/reward_campaign_list.html b/templates/twitch/reward_campaign_list.html index 5ef6590..24c1d11 100644 --- a/templates/twitch/reward_campaign_list.html +++ b/templates/twitch/reward_campaign_list.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load static %} +{% load image_tags %} {% block title %} Reward Campaigns {% endblock title %} @@ -18,17 +18,15 @@ href="{% url 'core:reward_campaign_feed_discord' %}" /> {% endblock extra_head %} {% block content %} -

List of Twitch Reward Campaigns

- +

Twitch Reward Campaigns

- Twitch > Reward Campaigns + Twitch > Reward Campaigns

Data is scraped from SunkwiBOT/twitch-drops-api every 15 minutes.

-
[explain] @@ -45,116 +43,29 @@
{% if reward_campaigns %} - {% with active_campaigns=reward_campaigns|dictsortreversed:"ends_at" %} -
Active Reward Campaigns
- - - {% for campaign in active_campaigns %} - {% if campaign.starts_at <= now and campaign.ends_at >= now %} - - - - - - {% endif %} - {% endfor %} - -
- - {% if campaign.brand %} - {{ campaign.brand }}: {{ campaign.name }} - {% else %} - {{ campaign.name }} - {% endif %} - - {% if campaign.summary %} -
- {{ campaign.summary }} - {% endif %} -
- {% if campaign.game %} - {{ campaign.game.display_name }} - {% elif campaign.is_sitewide %} - Site-wide - {% else %} - [no game] - {% endif %} - - Ends in {{ campaign.ends_at|timeuntil }} -
-
Upcoming Reward Campaigns
- - - {% for campaign in active_campaigns %} - {% if campaign.starts_at > now %} - - - - - - {% endif %} - {% endfor %} - -
- - {% if campaign.brand %} - {{ campaign.brand }}: {{ campaign.name }} - {% else %} - {{ campaign.name }} - {% endif %} - - {% if campaign.summary %} -
- {{ campaign.summary }} - {% endif %} -
- {% if campaign.game %} - {{ campaign.game.display_name }} - {% elif campaign.is_sitewide %} - Site-wide - {% else %} - [no game] - {% endif %} - - Starts in {{ campaign.starts_at|timeuntil }} -
+ {% with sorted_campaigns=reward_campaigns|dictsortreversed:"ends_at" %} + {# Active campaigns #} +

Active Reward Campaigns

+ {% for campaign in sorted_campaigns %} + {% if campaign.starts_at <= now and campaign.ends_at >= now %} + {% include "twitch/includes/reward_campaign_card.html" with campaign=campaign %} + {% endif %} + {% endfor %} + {# Upcoming campaigns #} +

Upcoming Reward Campaigns

+ {% for campaign in sorted_campaigns %} + {% if campaign.starts_at > now %} + {% include "twitch/includes/reward_campaign_card.html" with campaign=campaign %} + {% endif %} + {% endfor %} + {# Past campaigns #} +

Past Reward Campaigns

+ {% for campaign in sorted_campaigns %} + {% if campaign.ends_at < now %} + {% include "twitch/includes/reward_campaign_card.html" with campaign=campaign %} + {% endif %} + {% endfor %} {% endwith %} -
Past Reward Campaigns
- - - {% for campaign in reward_campaigns %} - {% if campaign.ends_at < now %} - - - - - - {% endif %} - {% endfor %} - -
- - {% if campaign.brand %} - {{ campaign.brand }}: {{ campaign.name }} - {% else %} - {{ campaign.name }} - {% endif %} - - {% if campaign.summary %} -
- {{ campaign.summary }} - {% endif %} -
- {% if campaign.game %} - {{ campaign.game.display_name }} - {% elif campaign.is_sitewide %} - Site-wide - {% else %} - [no game] - {% endif %} - - {{ campaign.ends_at|timesince }} ago -
{% else %}

No reward campaigns found.

{% endif %} diff --git a/twitch/feeds.py b/twitch/feeds.py index 3cc4ac3..b5c503c 100644 --- a/twitch/feeds.py +++ b/twitch/feeds.py @@ -2164,7 +2164,8 @@ class SitewideRewardCampaignAtomFeed(TTVDropsAtomBaseFeed, SitewideRewardCampaig class SitewideRewardCampaignDiscordFeed( - TTVDropsAtomBaseFeed, SitewideRewardCampaignFeed + TTVDropsAtomBaseFeed, + SitewideRewardCampaignFeed, ): """Discord feed for site-wide reward campaigns with Discord relative timestamps.""" @@ -2409,7 +2410,8 @@ class GameLessRewardCampaignAtomFeed(TTVDropsAtomBaseFeed, GameLessRewardCampaig class GameLessRewardCampaignDiscordFeed( - TTVDropsAtomBaseFeed, GameLessRewardCampaignFeed + TTVDropsAtomBaseFeed, + GameLessRewardCampaignFeed, ): """Discord feed for reward campaigns with no game linked, with Discord timestamps."""