Add a bit more color to the promo display.

tox-dependencies
Eric Holscher 2017-03-31 13:31:13 -07:00
parent 4c9585f0a2
commit b28166dfce
3 changed files with 51 additions and 12 deletions

View File

@ -148,6 +148,15 @@ class SupporterPromo(models.Model):
(float(self.total_clicks()) / float(self.total_views())) * 100
)
def report_html_text(self):
"""
Include the link in the html text.
Only used for reporting,
doesn't include any click fruad protection!
"""
return self.text.replace('<a>', "<a href='%s'>" % self.link)
class BaseImpression(models.Model):
date = models.DateField(_('Date'))
@ -178,18 +187,22 @@ class BaseImpression(models.Model):
class PromoImpressions(BaseImpression):
"""Track stats around how successful this promo has been.
"""
Track stats around how successful this promo has been.
Indexed one per promo per day."""
Indexed one per promo per day.
"""
promo = models.ForeignKey(SupporterPromo, related_name='impressions',
blank=True, null=True)
class ProjectImpressions(BaseImpression):
"""Track stats for a specific project and promo.
"""
Track stats for a specific project and promo.
Indexed one per project per promo per day"""
Indexed one per project per promo per day
"""
promo = models.ForeignKey(SupporterPromo, related_name='project_impressions',
blank=True, null=True)

View File

@ -15,6 +15,7 @@
Total Clicks for all shown promos: {{ total_clicks }}
</p>
<div id="promo_detail">
{% for promo in promos %}
<h3>
@ -22,14 +23,38 @@ Results for {{ promo.name }} ({{ promo.analytics_id }}) over last {{ days }} day
</h3>
<div class="example" style="width: 30%;">
<a href="{{ promo.link }}"><img width=120 height=90 src="{{ promo.image }}"></a>
<br>
{{ promo.text|safe }}
<div class="filters">
{% if promo.programming_language %}
<p>
<b>Filtered Language</b>: {{ promo.programming_language }}
</p>
{% endif %}
{% if promo.geo_filters.count %}
<p>
<b>Filtered Geos</b>:
{% for geo in promo.geo_filters.all %}
{{ geo.countries.all|join:", " }}
{% endfor %}
</p>
{% endif %}
</div>
<a href="{{ promo.link }}">
<img width=120 height=90 src="{{ promo.image }}">
</a>
<br>
<div class="promo_text">
{{ promo.report_html_text|safe }}
</div>
<br>
</div>
<br>
<table>
<tr>
<th><strong>Day (UTC)</strong></th>
@ -56,6 +81,7 @@ Results for {{ promo.name }} ({{ promo.analytics_id }}) over last {{ days }} day
</table>
{% endfor %}
</div>
{% else %}

View File

@ -152,7 +152,7 @@ def view_proxy(request, promo_id, hash):
return redirect(promo.image)
def add_promo_data(display_type):
def _add_promo_data(display_type):
promo_queryset = SupporterPromo.objects.filter(live=True, display_type=display_type)
promo_obj = promo_queryset.order_by('?').first()
if promo_obj:
@ -164,7 +164,7 @@ def add_promo_data(display_type):
def promo_500(request, template_name='donate/promo_500.html', **kwargs):
"""A simple 500 handler so we get media"""
promo_dict = add_promo_data(display_type='error')
promo_dict = _add_promo_data(display_type='error')
r = render_to_response(template_name,
context_instance=RequestContext(request),
context={
@ -176,7 +176,7 @@ def promo_500(request, template_name='donate/promo_500.html', **kwargs):
def promo_404(request, template_name='donate/promo_404.html', **kwargs):
"""A simple 404 handler so we get media"""
promo_dict = add_promo_data(display_type='error')
promo_dict = _add_promo_data(display_type='error')
response = get_redirect_response(request, path=request.get_full_path())
if response:
return response