use fancy, new Monthly Pick tool for disco pane (bug 676307)
This commit is contained in:
Родитель
ec53fdd445
Коммит
d8d134de54
|
@ -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;
|
Загрузка…
Ссылка в новой задаче