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

Commit 705001e

Browse files
author
Allen Short
committed
don't allow or display ratings for apps in excluded regions (bug 879479)
1 parent 1ddf874 commit 705001e

2 files changed

Lines changed: 22 additions & 3 deletions

File tree

mkt/ratings/resources.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from mkt.api.base import CORSResource, MarketplaceModelResource
2222
from mkt.api.resources import AppResource
2323
from mkt.ratings.forms import ReviewForm
24+
from mkt.regions import get_region, REGIONS_DICT
2425
from mkt.versions.resources import VersionResource
2526
from mkt.webapps.models import Webapp
2627
from reviews.models import Review, ReviewFlag
@@ -80,12 +81,15 @@ def _review_data(self, request, app, form):
8081

8182
def get_app(self, ident):
8283
try:
83-
return Webapp.objects.valid().get(id=ident)
84+
app = Webapp.objects.valid().get(id=ident)
8485
except (Webapp.DoesNotExist, ValueError):
8586
try:
86-
return Webapp.objects.valid().get(app_slug=ident)
87+
app = Webapp.objects.valid().get(app_slug=ident)
8788
except Webapp.DoesNotExist:
8889
raise self.non_form_errors([('app', 'Invalid app')])
90+
if not app.listed_in(region=REGIONS_DICT[get_region()]):
91+
raise self.non_form_errors([('app', 'Not available in this region')])
92+
return app
8993

9094
def build_filters(self, filters=None):
9195
"""

mkt/ratings/tests/test_resources.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010
from reviews.models import Review, ReviewFlag
1111
from users.models import UserProfile
1212

13+
import mkt.regions
1314
from mkt.api.base import get_url, list_url
1415
from mkt.api.tests.test_oauth import BaseOAuth
1516
from mkt.site.fixtures import fixture
16-
from mkt.webapps.models import Webapp
17+
from mkt.webapps.models import AddonExcludedRegion, Webapp
1718
from versions.models import Version
1819

1920

@@ -90,6 +91,13 @@ def test_get_nonpublic(self):
9091
res, data = self._get_single(app=self.app.app_slug)
9192
eq_(res.status_code, 400)
9293

94+
def test_get_nonregion(self):
95+
AddonExcludedRegion.objects.create(addon=self.app,
96+
region=mkt.regions.BR.id)
97+
self.client.cookies['region'] = 'br'
98+
res, data = self._get_single(app=self.app.app_slug)
99+
eq_(res.status_code, 400)
100+
93101
def test_version_none(self):
94102
res, data = self._get_single()
95103
eq_(data['objects'][0]['version'], None)
@@ -207,6 +215,13 @@ def test_create_nonexistant_app(self):
207215
eq_(400, res.status_code)
208216
assert 'app' in data['error_message']
209217

218+
def test_create_for_nonregion(self):
219+
AddonExcludedRegion.objects.create(addon=self.app,
220+
region=mkt.regions.BR.id)
221+
self.client.cookies['region'] = 'br'
222+
res, data = self._create()
223+
eq_(400, res.status_code)
224+
210225
def test_create_for_nonpublic(self):
211226
self.app.update(status=amo.STATUS_PENDING)
212227
res, data = self._create()

0 commit comments

Comments
 (0)