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

Commit 2c3f67a

Browse files
committed
Revert "manage packaged-app submission for Android and Desktop via waffle flag (bug 907203, bug 910778)"
This reverts commit a5a9b3d.
1 parent d5fd85d commit 2c3f67a

7 files changed

Lines changed: 53 additions & 107 deletions

File tree

media/js/devreg/submit.js

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
// When a big device button is clicked, update the form.
5555
var $upload_form = $('#upload-webapp'),
5656
$qhd = $('#id_has_qhd');
57-
z.body.on('change', '#upload-webapp select', function() {
57+
$(document.body).on('change', '#upload-webapp select', function() {
5858
// IT'S FINE. IT'S FINE.
5959
if (!$upload_form.find('option[value$="-desktop"]:selected, option[value$="-tablet"]:selected').length) {
6060
$qhd.prop('checked', true).trigger('change');
@@ -102,29 +102,11 @@
102102

103103
// Condition to show packaged tab...ugly but works.
104104
function showPackagedTab() {
105-
// If the Android flag is disabled, and you tried to select
106-
// Android Mobile or Tablet... no packaged apps for you.
107-
// (This lets us prevent you from marking your app as compatible
108-
// with both Firefox OS *and* Android when Android support
109-
// hasn't landed yet.)
110-
if (!$('[data-packaged-platforms~="android"]').length &&
111-
$('option[value*="-android-"]:selected').length) {
112-
return false;
113-
}
114-
115-
// If the Desktop flag is disabled, and you tried to select
116-
// Desktop... no packaged apps for you.
117-
if (!$('[data-packaged-platforms~="desktop"]').length &&
118-
$('option[value$="-desktop"]:selected').length) {
119-
return false;
120-
}
121-
122105
return ($('#id_free_platforms option[value="free-firefoxos"]:selected').length &&
123-
$('#id_free_platforms option:selected').length == 1) ||
124-
$('#id_paid_platforms option[value="paid-firefoxos"]:selected').length ||
125-
$('[data-packaged-platforms~="android"] option[value*="-android-"]:selected').length ||
126-
$('[data-packaged-platforms~="desktop"] option[value$="-desktop"]:selected').length ||
127-
allTabsDeselected();
106+
$('#id_free_platforms option:selected').length == 1) ||
107+
$('#id_paid_platforms option[value="paid-firefoxos"]:selected').length ||
108+
$('option[value*=android]:selected').length ||
109+
allTabsDeselected();
128110
}
129111

130112
// Toggle packaged/hosted tab state.
@@ -142,7 +124,7 @@
142124
}
143125
}
144126

145-
z.body.on('tabs-changed', function(e, tab) {
127+
$(document).on('tabs-changed', function(e, tab) {
146128
if (tab.id == 'packaged-tab-header') {
147129
$('.learn-mdn.active').removeClass('active');
148130
$('.learn-mdn.packaged').addClass('active');

migrations/655-waffle-packaged-apps.sql

Lines changed: 0 additions & 5 deletions
This file was deleted.

mkt/developers/forms_payments.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,14 +170,14 @@ def is_toggling(self):
170170
return value if value in ('free', 'paid') else False
171171

172172
def clean(self):
173+
173174
is_toggling = self.is_toggling()
174175

175-
if self.addon.is_packaged:
176-
self._set_packaged_errors()
177-
if self._errors.get('free_platforms'):
178-
return self.cleaned_data
176+
if self.addon.is_packaged and 'desktop' in self._get_combined():
177+
self._errors['free_platforms'] = self._errors['paid_platforms'] = (
178+
self.ERRORS['packaged'])
179179

180-
if not is_toggling:
180+
elif not is_toggling:
181181
# If a platform wasn't selected, raise an error.
182182
if not self.cleaned_data[
183183
'%s_platforms' % ('paid' if self.is_paid() else 'free')]:
@@ -198,6 +198,7 @@ def clean(self):
198198
return self.cleaned_data
199199

200200
def clean_price(self):
201+
201202
price_value = self.cleaned_data.get('price')
202203
premium_type = self.cleaned_data.get('premium_type')
203204
if ((premium_type in amo.ADDON_PREMIUMS

mkt/developers/tests/test_forms_payments.py

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from django.conf import settings
2+
13
import mock
24
from nose.tools import eq_, ok_
35
from pyquery import PyQuery as pq
@@ -222,11 +224,8 @@ def test_optgroups_in_price_choices(self):
222224
Price.objects.create(price='1.00', method=PAYMENT_METHOD_ALL)
223225
Price.objects.create(price='2.00', method=PAYMENT_METHOD_ALL)
224226
form = forms_payments.PremiumForm(self.platforms, **self.kwargs)
225-
# 1 x Free with inapp
226-
# + 1 x price tier 0
227-
# + 3 x values grouped by billing
228-
# + 1 x 'Please select'
229-
# = 6
227+
# 1 x Free with inapp + 1 x price tier 0 + 3 x values grouped by billing +
228+
# 1 x 'Please select' = 6.
230229
eq_(len(form.fields['price'].choices), 6)
231230
html = form.as_p()
232231
eq_(len(pq(html)('#id_price optgroup')), 3, 'Should be 3 optgroups')
@@ -248,13 +247,6 @@ def test_cannot_set_desktop_for_packaged_app(self):
248247
form = forms_payments.PremiumForm(data=self.platforms, **self.kwargs)
249248
assert not form.is_valid()
250249

251-
def test_can_set_desktop_for_packaged_app(self):
252-
self.create_flag('desktop-packaged')
253-
self.platforms = {'free_platforms': ['free-desktop']}
254-
self.addon.update(is_packaged=True)
255-
form = forms_payments.PremiumForm(data=self.platforms, **self.kwargs)
256-
assert form.is_valid(), form.errors
257-
258250
def test_can_change_devices_for_hosted_app(self):
259251
# Specify the free and paid. It shouldn't fail because you can't change
260252
# payment types without explicitly specifying that.
@@ -266,17 +258,7 @@ def test_can_change_devices_for_hosted_app(self):
266258

267259
self.assertSetEqual(self.addon.device_types, [amo.DEVICE_DESKTOP])
268260

269-
def test_cannot_change_android_devices_for_packaged_app(self):
270-
self.platforms = {'free_platforms': ['free-android-mobile'],
271-
'paid_platforms': ['paid-firefoxos']} # Ignored.
272-
self.addon.update(is_packaged=True)
273-
form = forms_payments.PremiumForm(data=self.platforms, **self.kwargs)
274-
assert not form.is_valid()
275-
276-
self.assertSetEqual(self.addon.device_types, [amo.DEVICE_GAIA])
277-
278-
def test_can_change_devices_for_packaged_app_behind_flag(self):
279-
self.create_flag('android-packaged')
261+
def test_can_change_devices_for_packaged_app(self):
280262
self.platforms = {'free_platforms': ['free-android-mobile'],
281263
'paid_platforms': ['paid-firefoxos']} # Ignored.
282264
self.addon.update(is_packaged=True)
@@ -524,7 +506,7 @@ def test_rereview(self, client):
524506
eq_(RereviewQueue.objects.count(), 1)
525507

526508
form = forms_payments.BangoAccountListForm(None, **self.kwargs)
527-
eq_(form.fields['accounts'].empty_label, None)
509+
assert form.fields['accounts'].empty_label == None
528510

529511
@mock.patch('mkt.developers.models.client')
530512
def test_disagreed_tos_rereview(self, client):

mkt/submit/forms.py

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ class DeviceTypeForm(happyforms.Form):
4747
ERRORS = {
4848
'both': _lazy(u'Cannot be free and paid.'),
4949
'none': _lazy(u'Please select a device.'),
50-
'packaged': _lazy(u'Packaged apps are not yet supported for those '
51-
u'platforms.'),
50+
'packaged': _lazy(u'Packaged apps are valid for only Firefox OS '
51+
'and Android.'),
5252
}
5353

5454
free_platforms = forms.MultipleChoiceField(
@@ -85,21 +85,6 @@ def _get_combined(self):
8585
self.cleaned_data.get('paid_platforms', []))
8686
return set(d.split('-', 1)[1] for d in devices)
8787

88-
def _set_packaged_errors(self):
89-
"""Add packaged-app submission errors for incompatible platforms."""
90-
devices = self._get_combined()
91-
bad_android = (
92-
not waffle.flag_is_active(self.request, 'android-packaged') and
93-
('android-mobile' in devices or 'android-tablet' in devices)
94-
)
95-
bad_desktop = (
96-
not waffle.flag_is_active(self.request, 'desktop-packaged') and
97-
'desktop' in devices
98-
)
99-
if bad_android or bad_desktop:
100-
self._errors['free_platforms'] = self._errors['paid_platforms'] = (
101-
self.ERRORS['packaged'])
102-
10388
def clean(self):
10489
data = self.cleaned_data
10590
paid = data.get('paid_platforms', [])
@@ -176,11 +161,13 @@ def __init__(self, *args, **kw):
176161
del self.fields['paid_platforms']
177162

178163
def clean(self):
164+
179165
data = self.cleaned_data
180166
if 'upload' not in self.cleaned_data:
181167
self._errors['upload'] = self.upload_error
182168
return
183169

170+
# Packaged apps are only valid for firefox os.
184171
if self.is_packaged():
185172
# Now run the packaged app check, done in clean, because
186173
# clean_packaged needs to be processed first.
@@ -233,8 +220,7 @@ def __init__(self, *args, **kwargs):
233220
self.request = kwargs.pop('request', None)
234221
super(NewWebappForm, self).__init__(*args, **kwargs)
235222
if 'paid_platforms' in self.fields:
236-
self.fields['paid_platforms'].choices = PAID_PLATFORMS(
237-
self.request)
223+
self.fields['paid_platforms'].choices = PAID_PLATFORMS(self.request)
238224

239225
def _add_error(self, msg):
240226
self._errors['free_platforms'] = self._errors['paid_platforms'] = (
@@ -245,10 +231,11 @@ def clean(self):
245231
if not data:
246232
return
247233

248-
if self.is_packaged():
249-
self._set_packaged_errors()
250-
if self._errors.get('free_platforms'):
251-
return
234+
combined_platforms = self._get_combined()
235+
if self.is_packaged() and 'desktop' in combined_platforms:
236+
self._errors['free_platforms'] = self._errors['paid_platforms'] = (
237+
self.ERRORS['packaged'])
238+
return
252239

253240
return data
254241

mkt/submit/templates/submit/manifest.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ <h1>{{ _('Submit an App') }}</h1>
2626
{{ progress(request, addon=None, step=step) }}
2727
</header>
2828

29+
2930
<section id="submit-payment-type" class="island tabbable">
3031
<div class="free tab active">
3132
{% if waffle.flag('allow-b2g-paid-submission') %}
@@ -50,8 +51,7 @@ <h2 id="paid-tab-header"><a href="#">{{ _('Paid / In-app') }}</a></h2>
5051
{% endif %}
5152
</section>
5253

53-
<section id="upload-file" class="island tabbable spacer"
54-
data-packaged-platforms="{{ 'android' if waffle.flag('android-packaged') }} {{ 'desktop' if waffle.flag('desktop-packaged') }}">
54+
<section id="upload-file" class="island tabbable spacer">
5555
<div class="hosted tab active">
5656
<h2 id="hosted-tab-header"><a href="#">{{ _('Hosted') }}</a></h2>
5757
<h3>{{ _("Submit your app manifest URL") }}</h3>

mkt/submit/tests/test_forms.py

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -96,33 +96,32 @@ def test_not_packaged_allowed(self):
9696
assert form.is_valid(), form.errors
9797
assert not form.is_packaged()
9898

99-
@mock.patch('mkt.submit.forms.parse_addon',
100-
lambda *args: {'version': None})
101-
def test_packaged_disallowed_behind_flag(self):
102-
for device in ('free-desktop',
103-
'free-android-mobile',
104-
'free-android-tablet'):
105-
form = forms.NewWebappForm({'free_platforms': [device],
106-
'upload': self.file.uuid,
107-
'packaged': True})
108-
assert not form.is_valid(), form.errors
109-
eq_(form.ERRORS['packaged'], form.errors['paid_platforms'])
99+
@mock.patch('mkt.submit.forms.parse_addon')
100+
def test_packaged_allowed(self, parse_addon):
101+
parse_addon.return_value = {}
102+
form = forms.NewWebappForm({'free_platforms': ['free-firefoxos'],
103+
'upload': self.file.uuid,
104+
'packaged': True})
105+
assert form.is_valid(), form.errors
106+
assert form.is_packaged()
107+
108+
@mock.patch('mkt.submit.forms.parse_addon')
109+
def test_packaged_allowed_android(self, parse_addon):
110+
parse_addon.return_value = {}
111+
form = forms.NewWebappForm({'free_platforms': ['free-android-mobile'],
112+
'upload': self.file.uuid,
113+
'packaged': True})
114+
assert form.is_valid(), form.errors
115+
assert form.is_packaged()
110116

111117
@mock.patch('mkt.submit.forms.parse_addon',
112118
lambda *args: {'version': None})
113-
def test_packaged_allowed_everywhere(self):
114-
self.create_flag('android-packaged')
115-
self.create_flag('desktop-packaged')
116-
for device in ('free-firefoxos',
117-
'free-desktop',
118-
'free-android-tablet',
119-
'free-android-mobile'):
120-
form = forms.NewWebappForm({'free_platforms': [device],
121-
'upload': self.file.uuid,
122-
'packaged': True},
123-
request=self.request)
124-
assert form.is_valid(), form.errors
125-
assert form.is_packaged()
119+
def test_packaged_wrong_device(self):
120+
form = forms.NewWebappForm({'free_platforms': ['free-desktop'],
121+
'upload': self.file.uuid,
122+
'packaged': True})
123+
assert not form.is_valid(), form.errors
124+
eq_(form.ERRORS['packaged'], form.errors['paid_platforms'])
126125

127126

128127
class TestNewWebappVersionForm(amo.tests.TestCase):

0 commit comments

Comments
 (0)