Skip to content
This repository has been archived by the owner on Mar 15, 2018. It is now read-only.

Commit

Permalink
Put d2c buttons behind waffle flag.
Browse files Browse the repository at this point in the history
  • Loading branch information
robhudson committed Mar 29, 2012
1 parent bbd6879 commit 9269e54
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 18 deletions.
7 changes: 5 additions & 2 deletions apps/addons/templates/addons/button.html
Expand Up @@ -12,8 +12,11 @@
{% if compat %} {% if compat %}
data-min="{{ compat.min.version }}" data-min="{{ compat.min.version }}"
data-max="{{ compat.max.version }}" data-max="{{ compat.max.version }}"
data-is-compatible="{{ version.is_compatible|json }}" {% if waffle.switch('d2c-buttons') %}
data-compat-overrides="{{ version.compat_override_app_versions()|json }}" data-waffle-d2c-buttons="true"
data-is-compatible="{{ version.is_compatible|json }}"
data-compat-overrides="{{ version.compat_override_app_versions()|json }}"
{% endif %}
data-version="{{ version.version }}" data-version="{{ version.version }}"
data-compatible-apps="{{ version.compatible_apps[request.APP] }}" data-compatible-apps="{{ version.compatible_apps[request.APP] }}"
data-lastupdated-isotime="{{ version.created|isotime }}" data-lastupdated-isotime="{{ version.created|isotime }}"
Expand Down
Expand Up @@ -16,8 +16,11 @@
{% if compat %} {% if compat %}
data-min="{{ compat.min.version }}" data-min="{{ compat.min.version }}"
data-max="{{ compat.max.version }}" data-max="{{ compat.max.version }}"
data-is-compatible="{{ version.is_compatible|json }}" {% if waffle.switch('d2c-buttons') %}
data-compat-overrides="{{ version.compat_override_app_versions()|json }}" data-waffle-d2c-buttons="true"
data-is-compatible="{{ version.is_compatible|json }}"
data-compat-overrides="{{ version.compat_override_app_versions()|json }}"
{% endif %}
{% endif %} {% endif %}
{% if addon.is_webapp() %} {% if addon.is_webapp() %}
data-manifest-url="{% if (addon.is_premium() and addon.has_purchased(amo_user)) or (not addon.is_premium()) -%} data-manifest-url="{% if (addon.is_premium() and addon.has_purchased(amo_user)) or (not addon.is_premium()) -%}
Expand Down
1 change: 1 addition & 0 deletions apps/addons/tests/test_buttons.py
Expand Up @@ -605,6 +605,7 @@ def test_addon_not_ready(self):
assert doc('.install-button').text('Not ready for purchase.') assert doc('.install-button').text('Not ready for purchase.')


def test_d2c_attrs(self): def test_d2c_attrs(self):
waffle.models.Switch.objects.create(name='d2c-buttons', active=True)
compat = Mock() compat = Mock()
compat.min.version = '4.0' compat.min.version = '4.0'
compat.max.version = '12.0' compat.max.version = '12.0'
Expand Down
33 changes: 19 additions & 14 deletions media/js/zamboni/buttons.js
Expand Up @@ -98,6 +98,7 @@ var installButton = function() {
accept_eula = $this.hasClass('accept'), accept_eula = $this.hasClass('accept'),
webapp = $this.hasattr('data-manifest-url'), webapp = $this.hasattr('data-manifest-url'),
compatible = $this.attr('data-is-compatible') == 'true', compatible = $this.attr('data-is-compatible') == 'true',
waffle_d2c_buttons = $this.hasattr('data-waffle-d2c-buttons'),
has_overrides = $this.hasattr('data-compat-overrides'), has_overrides = $this.hasattr('data-compat-overrides'),
// L10n: {0} is an app name like Firefox. // L10n: {0} is an app name like Firefox.
_s = accept_eula ? gettext('Accept and Install') : gettext('Add to {0}'), _s = accept_eula ? gettext('Accept and Install') : gettext('Add to {0}'),
Expand All @@ -123,21 +124,25 @@ var installButton = function() {
newerBrowser = VersionCompare.compareVersions(z.browserVersion, max) > 0; newerBrowser = VersionCompare.compareVersions(z.browserVersion, max) > 0;
} }


// Firefox 10+ is compatible by default. if (waffle_d2c_buttons) {
var compatible = compatible && z.browserVersion != 0 && // Firefox 10+ is compatible by default.
compatible = compatible && z.browserVersion != 0 &&
VersionCompare.compareVersions(z.browserVersion, '10.0') >= 0; VersionCompare.compareVersions(z.browserVersion, '10.0') >= 0;
// If it's still compatible, check the overrides. // If it's still compatible, check the overrides.
if (compatible && has_overrides) { if (compatible && has_overrides) {
var overrides = JSON.parse($this.attr('data-compat-overrides')); var overrides = JSON.parse($this.attr('data-compat-overrides'));
_.each(overrides, function(override) { _.each(overrides, function(override) {
var _min = override[0], var _min = override[0],
_max = override[1]; _max = override[1];
if (VersionCompare.compareVersions(z.browserVersion, _min) >= 0 || if (VersionCompare.compareVersions(z.browserVersion, _min) >= 0 ||
VersionCompare.compareVersions(z.browserVersion, _max) <= 0) { VersionCompare.compareVersions(z.browserVersion, _max) <= 0) {
compatible = false; compatible = false;
return; return;
} }
}); });
}
} else {
compatible = false; // We always assumed not compatible before.
} }


if (!$body.hasClass('acr-pitch') && newerBrowser && z.hasNightly && !z.hasACR) { if (!$body.hasClass('acr-pitch') && newerBrowser && z.hasNightly && !z.hasACR) {
Expand Down
2 changes: 2 additions & 0 deletions migrations/352-waffle-d2c-buttons.sql
@@ -0,0 +1,2 @@
INSERT INTO waffle_switch_amo (name, active, note)
VALUES ('d2c-buttons', 0, 'If active, this turns on default-to-compatible for the install buttons.');
3 changes: 3 additions & 0 deletions templates/qunit/qunit.html
Expand Up @@ -71,6 +71,7 @@ <h2 class="addon"><span class="version"></span></h2>
<div class="install" <div class="install"
data-min="4.0" data-min="4.0"
data-max="5.0" data-max="5.0"
data-waffle-d2c-buttons="true"
data-is-compatible="true" data-is-compatible="true"
data-compat-overrides="[]"> data-compat-overrides="[]">
<p class="install-button"> <p class="install-button">
Expand All @@ -85,6 +86,7 @@ <h2 class="addon"><span class="version"></span></h2>
<div class="install" <div class="install"
data-min="4.0" data-min="4.0"
data-max="5.0" data-max="5.0"
data-waffle-d2c-buttons="true"
data-is-compatible="true" data-is-compatible="true"
data-compat-overrides="{{ [['10.0a1', '99.*']]|json }}"> data-compat-overrides="{{ [['10.0a1', '99.*']]|json }}">
<p class="install-button"> <p class="install-button">
Expand All @@ -99,6 +101,7 @@ <h2 class="addon"><span class="version"></span></h2>
<div class="install" <div class="install"
data-min="4.0" data-min="4.0"
data-max="5.0" data-max="5.0"
data-waffle-d2c-buttons="true"
data-is-compatible="false" data-is-compatible="false"
data-compat-overrides="[]"> data-compat-overrides="[]">
<p class="install-button"> <p class="install-button">
Expand Down

0 comments on commit 9269e54

Please sign in to comment.