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) 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): 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) addon = models.ForeignKey(Addon)
blurb = models.TextField() blurb = models.TextField()
image = models.URLField() 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: class Meta:
db_table = "monthly_pick" db_table = 'monthly_pick'

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

@ -4,9 +4,8 @@ import jinja2
from tower import ugettext_lazy as _ from tower import ugettext_lazy as _
import amo import amo
from addons.models import Addon
from api.views import addon_filter from api.views import addon_filter
from bandwagon.models import Collection from bandwagon.models import Collection, MonthlyPick as MP
from .models import BlogCacheRyf from .models import BlogCacheRyf
@ -70,12 +69,14 @@ class MonthlyPick(TemplatePromo):
slug = 'Monthly Pick' slug = 'Monthly Pick'
template = 'discovery/modules/monthly.html' 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): def context(self):
return {'addon': Addon.objects.get(id=6416), try:
'addon_de': Addon.objects.get(id=146384), pick = MP.objects.filter(locale=self.request.LANG)[0]
'module_context': 'discovery'} except IndexError:
pick = MP.objects.filter(locale__isnull=True)[0]
except IndexError:
pick = None
return {'pick': pick, 'module_context': 'discovery'}
class GoMobile(TemplatePromo): class GoMobile(TemplatePromo):

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

@ -1,3 +1,4 @@
{%- if pick -%}
<li class="panel"> <li class="panel">
<div id="monthly" class="feature promo"> <div id="monthly" class="feature promo">
<hgroup> <hgroup>
@ -5,31 +6,13 @@
</hgroup> </hgroup>
<div class="wrap"> <div class="wrap">
<div> <div>
{% if LANG == 'de' %} <img src="{{ pick.image }}">
<h3>{{ addon_de.name }}</h3> <h3>{{ pick.addon.name }}</h3>
<div> <div>
<p>Surfen und sparen: Wenn Sie einen Online-Shop besuchen, zeigt Ihnen dieses <p>{{ pick.blurb }}</p>
Add-on, ob für die Seite Gutscheine zur Verfügung stehen.</p> </div>
{{ 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 %}
</div> </div>
</div> </div>
</div> </div>
</li> </li>
{%- endif -%}

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

@ -14,7 +14,7 @@ import addons.signals
from amo.urlresolvers import reverse from amo.urlresolvers import reverse
from addons.models import Addon from addons.models import Addon
from applications.models import Application, AppVersion 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 bandwagon.tests.test_models import TestRecommendations as Recs
from discovery import views from discovery import views
from discovery.forms import DiscoveryModuleForm from discovery.forms import DiscoveryModuleForm
@ -419,3 +419,23 @@ class TestDownloadSources(amo.tests.TestCase):
'?src=discovery-upandcoming') '?src=discovery-upandcoming')
assert doc('#install li:eq(1)').find('a').attr('href').endswith( assert doc('#install li:eq(1)').find('a').attr('href').endswith(
'?src=discovery-upandcoming') '?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 OAuthConsumerForm(happyforms.ModelForm):
class Meta: class Meta:
model = Consumer model = Consumer
fields = ['name', 'description', 'status'] fields = ['name', 'description', 'status']
class MonthlyPickForm(happyforms.ModelForm): class MonthlyPickForm(happyforms.ModelForm):
class Meta: class Meta:
model = MonthlyPick model = MonthlyPick
widgets = { widgets = {

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

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