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

Commit 009228a

Browse files
author
Allen Short
committed
restrict homescreen submission to FxOS only (bug 1218574)
1 parent be04828 commit 009228a

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

mkt/submit/forms.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ def __init__(self, *args, **kw):
164164
kw.pop('request', None)
165165
self.addon = kw.pop('addon', None)
166166
self._is_packaged = kw.pop('is_packaged', False)
167+
self.is_homescreen = False
167168
super(NewWebappVersionForm, self).__init__(*args, **kw)
168169

169170
def clean(self):
@@ -201,6 +202,8 @@ def clean(self):
201202
if self.addon and origin != self.addon.app_domain:
202203
errors.append(_('Changes to "origin" are not allowed.'))
203204

205+
self.is_homescreen = pkg.get('role') == 'homescreen'
206+
204207
if errors:
205208
self._errors['upload'] = self.error_class(errors)
206209
return
@@ -223,7 +226,8 @@ def is_packaged(self):
223226
class NewWebappForm(DeviceTypeForm, NewWebappVersionForm):
224227
ERRORS = DeviceTypeForm.ERRORS.copy()
225228
ERRORS['user'] = _lazy('User submitting validation does not match.')
226-
229+
ERRORS['homescreen'] = _lazy('Homescreens can only be submitted for '
230+
'Firefox OS.')
227231
upload = forms.ModelChoiceField(
228232
widget=forms.HiddenInput,
229233
queryset=FileUpload.objects.filter(valid=True),
@@ -252,6 +256,8 @@ def clean(self):
252256
if not (upload.user and upload.user.pk == self.request.user.pk):
253257
self._add_error('user')
254258

259+
if self.is_homescreen and self.get_devices() != [mkt.DEVICE_GAIA]:
260+
self._add_error('homescreen')
255261
return data
256262

257263
def is_packaged(self):

mkt/submit/tests/test_forms.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,27 @@ def test_packaged_allowed_everywhere(self):
124124
assert form.is_valid(), form.errors
125125
assert form.is_packaged()
126126

127+
@mock.patch('mkt.submit.forms.parse_addon',
128+
lambda *args: {'version': None, 'role': 'homescreen'})
129+
def test_homescreen_device(self):
130+
form = forms.NewWebappForm({'upload': self.file.uuid,
131+
'free_platforms': ['free-firefoxos'],
132+
'packaged': True},
133+
request=self.request)
134+
assert form.is_valid()
135+
136+
@mock.patch('mkt.submit.forms.parse_addon',
137+
lambda *args: {'version': None, 'role': 'homescreen'})
138+
def test_homescreen_wrong_device(self):
139+
form = forms.NewWebappForm({'upload': self.file.uuid,
140+
'free_platforms': ['free-firefoxos',
141+
'free-desktop'],
142+
'packaged': True},
143+
request=self.request)
144+
assert not form.is_valid()
145+
eq_(form.ERRORS['homescreen'], form.errors['free_platforms'])
146+
eq_(form.ERRORS['homescreen'], form.errors['paid_platforms'])
147+
127148

128149
class TestNewWebappVersionForm(mkt.site.tests.TestCase):
129150

0 commit comments

Comments
 (0)