Migrated release notes to Python (Bug 608481)

This also adds an extra method on TestCase to easily activate another
locale for testing.
This commit is contained in:
Rob Hudson 2011-09-20 14:35:23 -07:00
Родитель 7eea35d720
Коммит 5d643d5165
7 изменённых файлов: 81 добавлений и 1 удалений

Просмотреть файл

@ -136,6 +136,17 @@
"id": 650353
}
},
{
"pk": 697693,
"model": "translations.translation",
"fields": {
"localized_string": "Quelque chose en français.\n\nQuelque chose d'autre.",
"created": "2009-10-21 10:02:38",
"locale": "fr",
"modified": null,
"id": 650353
}
},
{
"pk": 1,
"model": "files.platform",

Просмотреть файл

@ -1,3 +1,4 @@
from contextlib import contextmanager
from datetime import datetime, timedelta
from functools import partial
import os
@ -8,6 +9,7 @@ import time
from django import forms
from django.conf import settings
from django.test.client import Client
from django.utils import translation
import elasticutils
import nose
@ -15,6 +17,7 @@ import test_utils
from redisutils import mock_redis, reset_redis
import amo
from amo.urlresolvers import Prefixer, get_url_prefix, set_url_prefix
import addons.search
from addons.models import Addon
from applications.models import Application, AppVersion
@ -100,6 +103,16 @@ class TestCase(RedisTest, test_utils.TestCase):
FeaturedManager.featured_ids.clear()
CreaturedManager.creatured_ids.clear()
@contextmanager
def activate(self, locale):
old_prefix = get_url_prefix()
old_locale = translation.get_language()
rf = test_utils.RequestFactory()
set_url_prefix(Prefixer(rf.get('/%s/' % (locale,))))
translation.activate(locale)
yield
set_url_prefix(old_prefix)
translation.activate(old_locale)
class AMOPaths(object):
"""Mixin for getting common AMO Paths."""

Просмотреть файл

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="{{ LANG }}" dir="{{ DIR }}">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<p{{ version.releasenotes|locale_html }}>{{ version.releasenotes|nl2br }}</p>
</body>
</html>

Просмотреть файл

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import hashlib
import os
@ -262,6 +263,30 @@ class TestVersion(amo.tests.TestCase):
version.save()
eq_(version.version_int, None)
def test_version_update_info(self):
addon = Addon.objects.get(pk=3615)
r = self.client.get(reverse('addons.versions.update_info',
args=(addon.id, self.version.version)))
eq_(r.status_code, 200)
doc = PyQuery(r.content)
eq_(doc('p').html(), 'Fix for an important bug')
# Test update info in another language.
with self.activate('fr'):
r = self.client.get(reverse('addons.versions.update_info',
args=(addon.id, self.version.version)))
eq_(r.status_code, 200)
doc = PyQuery(r.content)
eq_(doc('p').html(), u"Quelque chose en français.<br/><br/>" \
u"Quelque chose d'autre.")
def test_version_update_info_legacy_redirect(self):
r = self.client.get('/versions/updateInfo/%s' % self.version.id,
follow=True)
url = reverse('addons.versions.update_info',
args=(self.version.addon.id, self.version.version))
self.assertRedirects(r, url, 301)
class TestViews(amo.tests.TestCase):
fixtures = ['addons/eula+contrib-addon', 'base/apps']

Просмотреть файл

@ -9,6 +9,8 @@ urlpatterns = patterns('',
url('^format:rss$', VersionsRss(), name='addons.versions.rss'),
url('^(?P<version_num>[^/]+)$', views.version_detail,
name='addons.versions'),
url('^(?P<version_num>[^/]+)/updateinfo/$', views.update_info,
name='addons.versions.update_info'),
)
download_patterns = patterns('',

Просмотреть файл

@ -60,6 +60,20 @@ def _find_version_page(qs, addon, version_num):
raise http.Http404()
def update_info(request, addon_id, version_num):
version = get_object_or_404(Version, addon__id=addon_id,
version=version_num)
return jingo.render(request, 'versions/update_info.html',
{'version': version})
def update_info_redirect(request, version_id):
version = get_object_or_404(Version, pk=version_id)
return redirect(reverse('addons.versions.update_info',
args=(version.addon.id, version.version)),
permanent=True)
@never_cache
@login_required
def download_watermarked(request, file_id):
@ -98,7 +112,8 @@ def download_file(request, file_id, type=None):
return http.HttpResponseForbidden()
if addon.is_disabled or file.status == amo.STATUS_DISABLED:
if acl.check_addon_ownership(request, addon, viewer=True, ignore_disabled=True):
if acl.check_addon_ownership(request, addon, viewer=True,
ignore_disabled=True):
return HttpResponseSendFile(request, file.guarded_file_path,
content_type='application/xp-install')
else:

Просмотреть файл

@ -128,6 +128,10 @@ urlpatterns = patterns('',
('^addons/versions/(\d+)/format:rss$',
lambda r, id: redirect('addons.versions.rss', id, permanent=True)),
# Legacy redirect. Requires a view to get extra data not provided in URL.
('^versions/updateInfo/(?P<version_id>\d+)$',
'versions.views.update_info_redirect'),
('^addons/reviews/(\d+)/format:rss$',
lambda r, id: redirect('reviews.list.rss', id, permanent=True)),