Merge lp:~canonical-isd-hackers/canonical-identity-provider/versions-view into lp:canonical-identity-provider/release

Proposed by Łukasz Czyżykowski
Status: Merged
Merged at revision: 72
Proposed branch: lp:~canonical-isd-hackers/canonical-identity-provider/versions-view
Merge into: lp:canonical-identity-provider/release
Diff against target: 177 lines (+118/-1)
8 files modified
debian/control (+2/-1)
debian/rules (+3/-0)
identityprovider/__init__.py (+2/-0)
identityprovider/templates/versions.html (+27/-0)
identityprovider/tests/test_views_versions.py (+33/-0)
identityprovider/urls.py (+4/-0)
identityprovider/views/versions.py (+39/-0)
scripts/update-version (+8/-0)
To merge this branch: bzr merge lp:~canonical-isd-hackers/canonical-identity-provider/versions-view
Reviewer Review Type Date Requested Status
Szilveszter Farkas (community) Approve
Ricardo Kirkner (community) Needs Fixing
Review via email: mp+27948@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Ricardo Kirkner (ricardokirkner) wrote :

two small fixes:

l. 114: you committed commented out code
l. 156: django provides you with the django.get_version() function which does this for you :)

review: Needs Fixing
Revision history for this message
Szilveszter Farkas (phanatic) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/control'
2--- debian/control 2010-05-27 19:23:48 +0000
3+++ debian/control 2010-06-21 08:11:27 +0000
4@@ -5,7 +5,8 @@
5 debhelper (>= 6),
6 python,
7 python-central (>= 0.6),
8- python-setuptools
9+ python-setuptools,
10+ bzr
11 Maintainer: Łukasz Czyżykowski <lukasz.czyzykowski@canonical.com>
12 Standards-Version: 3.8.3
13 XS-Python-Version: current
14
15=== modified file 'debian/rules'
16--- debian/rules 2010-04-21 15:29:24 +0000
17+++ debian/rules 2010-06-21 08:11:27 +0000
18@@ -5,3 +5,6 @@
19 include /usr/share/cdbs/1/rules/debhelper.mk
20 include /usr/share/cdbs/1/class/python-distutils.mk
21 include /usr/share/cdbs/1/rules/langpack.mk
22+
23+clean::
24+ scripts/update-version
25\ No newline at end of file
26
27=== modified file 'identityprovider/__init__.py'
28--- identityprovider/__init__.py 2010-04-21 15:29:24 +0000
29+++ identityprovider/__init__.py 2010-06-21 08:11:27 +0000
30@@ -1,2 +1,4 @@
31 # Copyright 2010 Canonical Ltd. This software is licensed under the
32 # GNU Affero General Public License version 3 (see the file LICENSE).
33+
34+__version__ = '2.6.0.dev2; r71'
35
36=== added file 'identityprovider/templates/versions.html'
37--- identityprovider/templates/versions.html 1970-01-01 00:00:00 +0000
38+++ identityprovider/templates/versions.html 2010-06-21 08:11:27 +0000
39@@ -0,0 +1,27 @@
40+<!-- Copyright 2010 Canonical Ltd. This software is licensed under the
41+GNU Affero General Public License version 3 (see the file LICENSE). -->
42+
43+{% extends "base.html" %}
44+{% load i18n %}
45+
46+{% block "title" %}{% trans "Versions" %}{% endblock %}
47+
48+{% block "content" %}
49+<h1 class="main">{% trans "Versions" %}</h1>
50+
51+<div>
52+ <table class="listing">
53+ <thead>
54+ <tr>
55+ <th>{% trans "Library/Package" %}</th>
56+ <th>{% trans "Version" %}</th>
57+ </tr>
58+ </thead>
59+ <tbody>
60+ {% for item in versions %}
61+ <tr><td>{{ item.name }}</td><td>{{ item.version }}</td></tr>
62+ {% endfor %}
63+ </tbody>
64+ </table>
65+</div>
66+{% endblock %}
67
68=== added file 'identityprovider/tests/test_views_versions.py'
69--- identityprovider/tests/test_views_versions.py 1970-01-01 00:00:00 +0000
70+++ identityprovider/tests/test_views_versions.py 2010-06-21 08:11:27 +0000
71@@ -0,0 +1,33 @@
72+from identityprovider.tests.utils import BasicAccountTestCase
73+from identityprovider.models.account import Account
74+from django.conf import settings
75+
76+
77+
78+class VersionsViewAccessTestCase(BasicAccountTestCase):
79+
80+ fixtures = ["test"]
81+
82+ def test_non_authenticated_users_are_getting_404(self):
83+ r = self.client.get('/+versions')
84+ self.assertEquals(r.status_code, 404)
85+
86+ def test_account_withtout_person_receives_404(self):
87+ account = Account.objects.create_account(
88+ "test", "abcd@example.com", "test")
89+ self.client.login(username="abcd@example.com", password="test")
90+ r = self.client.get('/+versions')
91+ self.assertEquals(r.status_code, 404)
92+ account.delete()
93+
94+ def test_person_not_in_the_required_team_will_get_404(self):
95+ self.client.login(username="test@canonical.com", password="test")
96+ r = self.client.get('/+versions')
97+ self.assertEquals(r.status_code, 404)
98+
99+ def test_person_in_ubuntu_team_can_access_the_page(self):
100+ settings.SSO_VERSIONS_TEAMS = ["ubuntu-team"]
101+ self.client.login(username="member@canonical.com", password="test")
102+
103+ r = self.client.get('/+versions')
104+ self.assertTemplateUsed(r, "versions.html")
105
106=== modified file 'identityprovider/urls.py'
107--- identityprovider/urls.py 2010-06-16 19:42:35 +0000
108+++ identityprovider/urls.py 2010-06-21 08:11:27 +0000
109@@ -56,6 +56,10 @@
110 (r'^set_language$', 'set_language'),
111 )
112
113+urlpatterns += patterns('identityprovider.views.versions',
114+ (r'\+versions','versions'),
115+)
116+
117 urlpatterns += patterns('identityprovider.views.readonly',
118 (r'^readonly$', 'readonly_admin'),
119 (r'^readonly/((?P<appserver>[A-Za-z0-9\-_.:]+)/)?(?P<action>enable|disable|set|clear)(/(?P<conn>[A-Za-z0-9\-_.]+))?',
120
121=== added file 'identityprovider/views/versions.py'
122--- identityprovider/views/versions.py 1970-01-01 00:00:00 +0000
123+++ identityprovider/views/versions.py 2010-06-21 08:11:27 +0000
124@@ -0,0 +1,39 @@
125+# Copyright 2010 Canonical Ltd. This software is licensed under the
126+# GNU Affero General Public License version 3 (see the file LICENSE).
127+
128+from django.template import RequestContext
129+from django.shortcuts import render_to_response
130+from django.http import Http404
131+from django.conf import settings
132+
133+
134+def gather_version_information():
135+ import identityprovider
136+ import lazr.restful
137+ import django
138+ import openid
139+ import sys
140+
141+ return [
142+ {'name': 'SSO', 'version': identityprovider.__version__},
143+ {'name': 'Django', 'version': django.get_version()},
144+ {'name': 'lazr.restful', 'version': lazr.restful.__version__},
145+ {'name': 'openid', 'version': openid.__version__},
146+ {'name': 'Python', 'version': sys.version},
147+ ]
148+
149+
150+def versions(request):
151+ # 404 to not reveal this to automatic scripts
152+ if not request.user.is_authenticated() or request.user.person is None:
153+ raise Http404
154+
155+ for team in getattr(settings, 'SSO_VERSIONS_TEAMS', []):
156+ if request.user.person.in_team(team):
157+ break
158+ else:
159+ raise Http404
160+
161+ versions = gather_version_information()
162+ return render_to_response("versions.html",
163+ RequestContext(request, {'versions': versions}))
164
165=== added file 'scripts/update-version'
166--- scripts/update-version 1970-01-01 00:00:00 +0000
167+++ scripts/update-version 2010-06-21 08:11:27 +0000
168@@ -0,0 +1,8 @@
169+#!/bin/bash
170+
171+deb_version=`dpkg-parsechangelog | sed -n '/^Version/s/Version: //p'`
172+rev_no=`bzr version-info | sed -n '/^revno/s/revno: //p'`
173+
174+version="__version__ = '$deb_version; r$rev_no'"
175+
176+sed -i "/^__version__/s/^__version__.*$/$version/" identityprovider/__init__.py
177\ No newline at end of file