Add campaign data display in campaign detail view with JSON serialization
This commit is contained in:
parent
403734ff00
commit
265f8ed671
2 changed files with 27 additions and 0 deletions
|
|
@ -41,6 +41,10 @@
|
||||||
<a href="{{ campaign.account_link_url }}" target="_blank">Connect Account</a>
|
<a href="{{ campaign.account_link_url }}" target="_blank">Connect Account</a>
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<details>
|
||||||
|
<summary>Campaign Data</summary>
|
||||||
|
<pre><code>{{ campaign_data }}</code></pre>
|
||||||
|
</details>
|
||||||
<h5>Campaign Info</h5>
|
<h5>Campaign Info</h5>
|
||||||
{% if user.is_staff %}
|
{% if user.is_staff %}
|
||||||
<p>
|
<p>
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
from collections import OrderedDict, defaultdict
|
from collections import OrderedDict, defaultdict
|
||||||
from typing import TYPE_CHECKING, Any, cast
|
from typing import TYPE_CHECKING, Any, cast
|
||||||
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.core.serializers import serialize
|
||||||
from django.db.models import Count, F, Prefetch, Q
|
from django.db.models import Count, F, Prefetch, Q
|
||||||
from django.db.models.functions import Trim
|
from django.db.models.functions import Trim
|
||||||
from django.db.models.query import QuerySet
|
from django.db.models.query import QuerySet
|
||||||
|
|
@ -148,10 +150,31 @@ class DropCampaignDetailView(DetailView):
|
||||||
context: dict[str, Any] = super().get_context_data(**kwargs)
|
context: dict[str, Any] = super().get_context_data(**kwargs)
|
||||||
campaign = context["campaign"]
|
campaign = context["campaign"]
|
||||||
|
|
||||||
|
serialized_campaign = serialize(
|
||||||
|
"json",
|
||||||
|
[campaign],
|
||||||
|
fields=(
|
||||||
|
"name",
|
||||||
|
"description",
|
||||||
|
"details_url",
|
||||||
|
"account_link_url",
|
||||||
|
"image_url",
|
||||||
|
"start_at",
|
||||||
|
"end_at",
|
||||||
|
"is_account_connected",
|
||||||
|
"game",
|
||||||
|
"created_at",
|
||||||
|
"updated_at",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
campaign_data = json.loads(serialized_campaign)
|
||||||
|
pretty_campaign_data = json.dumps(campaign_data[0], indent=4)
|
||||||
|
|
||||||
context["now"] = timezone.now()
|
context["now"] = timezone.now()
|
||||||
context["drops"] = (
|
context["drops"] = (
|
||||||
TimeBasedDrop.objects.filter(campaign=campaign).select_related("campaign").prefetch_related("benefits").order_by("required_minutes_watched")
|
TimeBasedDrop.objects.filter(campaign=campaign).select_related("campaign").prefetch_related("benefits").order_by("required_minutes_watched")
|
||||||
)
|
)
|
||||||
|
context["campaign_data"] = pretty_campaign_data
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue