Add a bit more color to the promo display.
parent
4c9585f0a2
commit
b28166dfce
|
@ -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)
|
||||
|
|
|
@ -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 %}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue