Skip to content

Commit 47757de

Browse files
committed
Clean up badge code, enable option for redirecting.
Needs some style cleanup.
1 parent 6c6ffe1 commit 47757de

File tree

3 files changed

+63
-12
lines changed

3 files changed

+63
-12
lines changed

readthedocs/projects/views/public.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import json
22

3+
from django.core.urlresolvers import reverse
34
from django.conf import settings
45
from django.contrib.auth.models import User
56
from django.http import HttpResponse, HttpResponseRedirect, Http404
@@ -50,18 +51,35 @@ def project_detail(request, project_slug):
5051
queryset = Project.objects.protected(request.user)
5152
project = get_object_or_404(queryset, slug=project_slug)
5253
versions = project.versions.public(request.user, project)
53-
filter = VersionSlugFilter(request.GET, queryset=versions)
54+
# filter = VersionSlugFilter(request.GET, queryset=versions)
55+
if request.is_secure():
56+
protocol = 'https'
57+
else:
58+
protocol = 'http'
59+
badge_url = "%s://%s%s?version=%s" % (
60+
protocol,
61+
settings.PRODUCTION_DOMAIN,
62+
reverse('project_badge', args=[project.slug]),
63+
project.get_default_version()
64+
)
65+
site_url = "%s://%s%s" % (
66+
protocol,
67+
settings.PRODUCTION_DOMAIN,
68+
reverse('projects_detail', args=[project.slug]),
69+
)
5470
return render_to_response(
5571
'projects/project_detail.html',
5672
{
5773
'project': project,
5874
'versions': versions,
5975
'filter': filter,
76+
'badge_url': badge_url,
77+
'site_url': site_url,
6078
},
6179
context_instance=RequestContext(request),
6280
)
6381

64-
def project_badge(request, project_slug):
82+
def project_badge(request, project_slug, redirect=False):
6583
"""
6684
Return a sweet badge for the project
6785
"""
@@ -71,16 +89,18 @@ def project_badge(request, project_slug):
7189
version_builds = version.builds.filter(type='html', state='finished').order_by('-date')
7290
if not version_builds.exists():
7391
url = 'http://img.shields.io/badge/Docs-No%20Builds-yellow.svg'
74-
response = requests.get(url)
75-
return HttpResponse(response.content, mimetype="image/svg+xml")
7692
else:
7793
last_build = version_builds[0]
78-
color = 'green'
79-
if not last_build.success:
80-
color = 'red'
81-
url = 'http://img.shields.io/badge/Docs-%s-%s.svg' % (version.slug.replace('-', '--'), color)
82-
response = requests.get(url)
83-
return HttpResponse(response.content, mimetype="image/svg+xml")
94+
if last_build.success:
95+
color = 'green'
96+
else:
97+
color = 'red'
98+
url = 'http://img.shields.io/badge/Docs-%s-%s.svg' % (version.slug.replace('-', '--'), color)
99+
if redirect:
100+
return HttpResponseRedirect(url)
101+
else:
102+
response = requests.get(url)
103+
return HttpResponse(response.content, mimetype="image/svg+xml")
84104

85105
def project_downloads(request, project_slug):
86106
"""
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<div id="badge_markup" style="display: none;">
2+
<ul class="">
3+
<div class="rst">
4+
<h4>
5+
Rst
6+
</h4>
7+
<div class="rst code">
8+
.. image:: {{ badge_url }}
9+
:target: {{ site_url }}
10+
:alt: Documentation Status
11+
</div>
12+
</div>
13+
<div class="markdown">
14+
<h4>
15+
Markdown
16+
</h4>
17+
<div class="markdown code">
18+
[![Documentation Status]({{ badge_url }})]({{ site_url }})
19+
</div>
20+
</div>
21+
<div class="html">
22+
<h4>
23+
HTML
24+
</h4>
25+
<div class="html code">
26+
&lt;a href='{{ site_url }}'&gt;&lt;img src='{{ badge_url }}' alt='Documentation Status' /&gt;&lt;/a&gt;
27+
</div>
28+
</div>
29+
</ul>
30+
</div>

readthedocs/templates/core/project_details.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,10 @@ <h3>{% trans "Repository" %}</h3>
9090
{% endif %}
9191

9292
<h3>{% trans "Badge" %}</h3>
93-
<a href="{% url "project_badge" project.slug %}?version={{ project.get_default_version }}">
94-
<img src="{% url "project_badge" project.slug %}?version={{ project.get_default_version }}" />
93+
<a href="{{ site_url }}" onclick="$('#badge_markup').toggle(); return false;">
94+
<img src="{{ badge_url }}" />
9595
</a>
96+
{% include "core/badge_markup.html" with badge_url=badge_url site_url=site_url %}
9697

9798
{% if project.tags.count %}
9899
<h3>{% trans "Tags" %}</h3>

0 commit comments

Comments
 (0)