use fancy, new Monthly Pick tool for disco pane (bug 676307)

This commit is contained in:
Chris Van 2011-08-12 16:00:56 -07:00
Родитель ec53fdd445
Коммит d8d134de54
6 изменённых файлов: 45 добавлений и 41 удалений

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

@ -561,19 +561,16 @@ class FeaturedCollection(amo.models.ModelBase):
self.locale)
def locale_generator():
return (('', u'(Default Locale)'),) + tuple(
(i, product_details.languages[i]['native'])
for i in settings.AMO_LANGUAGES)
class MonthlyPick(amo.models.ModelBase):
LOCALES = locale_generator()
LOCALES = (('', u'(Default Locale)'),) + tuple(
(i, product_details.languages[i]['native'])
for i in settings.AMO_LANGUAGES)
addon = models.ForeignKey(Addon)
blurb = models.TextField()
image = models.URLField()
locale = models.CharField(max_length=30, choices=LOCALES, unique=True)
locale = models.CharField(max_length=10, choices=LOCALES, unique=True,
null=True, blank=True)
class Meta:
db_table = "monthly_pick"
db_table = 'monthly_pick'

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

@ -4,9 +4,8 @@ import jinja2
from tower import ugettext_lazy as _
import amo
from addons.models import Addon
from api.views import addon_filter
from bandwagon.models import Collection
from bandwagon.models import Collection, MonthlyPick as MP
from .models import BlogCacheRyf
@ -70,12 +69,14 @@ class MonthlyPick(TemplatePromo):
slug = 'Monthly Pick'
template = 'discovery/modules/monthly.html'
# TODO A bit of hardcoding here to support an alternative locale. This
# will all be redone with the mango bugs: http://bugzil.la/[t:mango]
def context(self):
return {'addon': Addon.objects.get(id=6416),
'addon_de': Addon.objects.get(id=146384),
'module_context': 'discovery'}
try:
pick = MP.objects.filter(locale=self.request.LANG)[0]
except IndexError:
pick = MP.objects.filter(locale__isnull=True)[0]
except IndexError:
pick = None
return {'pick': pick, 'module_context': 'discovery'}
class GoMobile(TemplatePromo):

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

@ -1,3 +1,4 @@
{%- if pick -%}
<li class="panel">
<div id="monthly" class="feature promo">
<hgroup>
@ -5,31 +6,13 @@
</hgroup>
<div class="wrap">
<div>
{% if LANG == 'de' %}
<h3>{{ addon_de.name }}</h3>
<div>
<p>Surfen und sparen: Wenn Sie einen Online-Shop besuchen, zeigt Ihnen dieses
Add-on, ob für die Seite Gutscheine zur Verfügung stehen.</p>
{{ install_button(addon_de, src='discovery-promo') }}
</div>
{# TODO: Change this screenshot when changing the monthly pick. #}
<img src="{{ addon_de.thumbnail_url }}">
{% else %}
<img src="{{ addon.thumbnail_url }}">
<h3>{{ addon.name }}</h3>
<div>
<p>{% trans %}
Include results from your social networks and favorite websites whenever
you search the web.
{% endtrans %}</p>
{% if module_context == 'discovery' %}
{{ install_button(addon, src='discovery-promo') }}
{% else %}
{{ install_button(addon, src='hp-btn-promo', impala=True) }}
{% endif %}
</div>
{% endif %}
<img src="{{ pick.image }}">
<h3>{{ pick.addon.name }}</h3>
<div>
<p>{{ pick.blurb }}</p>
</div>
</div>
</div>
</div>
</li>
{%- endif -%}

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

@ -14,7 +14,7 @@ import addons.signals
from amo.urlresolvers import reverse
from addons.models import Addon
from applications.models import Application, AppVersion
from bandwagon.models import Collection
from bandwagon.models import Collection, MonthlyPick
from bandwagon.tests.test_models import TestRecommendations as Recs
from discovery import views
from discovery.forms import DiscoveryModuleForm
@ -419,3 +419,23 @@ class TestDownloadSources(amo.tests.TestCase):
'?src=discovery-upandcoming')
assert doc('#install li:eq(1)').find('a').attr('href').endswith(
'?src=discovery-upandcoming')
class TestMonthlyPick(amo.tests.TestCase):
fixtures = ['base/apps', 'base/addon_3615', 'discovery/discoverymodules']
def setUp(self):
self.url = reverse('discovery.pane', args=['3.7a1pre', 'Darwin'])
def test_monthlypick(self):
addon = Addon.objects.get(id=3615)
DiscoveryModule.objects.create(
app=Application.objects.get(id=amo.FIREFOX.id), ordering=4,
module='Monthly Pick')
MonthlyPick.objects.create(addon=addon, blurb='BOOP',
image='http://mozilla.com')
r = self.client.get(self.url)
pick = pq(r.content)('#monthly')
eq_(pick.find('h3').text(), unicode(addon.name))
eq_(pick.find('img').attr('src'), 'http://mozilla.com')
eq_(pick.find('p').text(), 'BOOP')

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

@ -162,12 +162,14 @@ FeaturedCollectionFormSet = modelformset_factory(FeaturedCollection,
class OAuthConsumerForm(happyforms.ModelForm):
class Meta:
model = Consumer
fields = ['name', 'description', 'status']
class MonthlyPickForm(happyforms.ModelForm):
class Meta:
model = MonthlyPick
widgets = {

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

@ -0,0 +1 @@
ALTER TABLE `monthly_pick` MODIFY locale varchar(10) UNIQUE;