def serialize(self, request, app): full_data = SearchView.serialize(self, request, app) data = {} for k in SEARCH_FIELDS: data[k] = full_data.get(k) # For translated fields, just return the default locale. data['name'] = get_translations(full_data, 'name', full_data['default_locale'], full_data['default_locale']) # Add reviewer-specific stuff that's not in the standard dehydrate. data['latest_version'] = app.latest_version data['is_escalated'] = app.is_escalated return data
class TestGetRegion(TestCase): fixtures = fixture('user_2519', 'webapp_337141') def setUp(self): self.resource = SearchView() self.factory = RequestFactory() self.profile = UserProfile.objects.get(pk=2519) self.user = self.profile.user def region_for(self, region): req = self.factory.get('/', ({} if region is None else { 'region': region })) req.API = True req.LANG = '' req.user = self.user req.amo_user = self.profile RegionMiddleware().process_request(req) ACLMiddleware().process_request(req) return self.resource.get_region(req) @patch('mkt.regions.middleware.RegionMiddleware.region_from_request') def test_get_region_all(self, mock_request_region): geoip_fallback = regions.PE # Different than the default (restofworld). mock_request_region.return_value = geoip_fallback # Test string values (should return region with that slug). eq_(self.region_for('restofworld'), regions.RESTOFWORLD) eq_(self.region_for('us'), regions.US) # Test fallback to request.REGION (should return GeoIP region if region # isn't specified or is specified and empty). eq_(self.region_for(None), geoip_fallback) eq_(self.region_for(''), geoip_fallback) # Test fallback to restofworld (e.g. if GeoIP fails). with patch('mkt.regions.middleware.RegionMiddleware.' 'process_request') as mock_process_request: eq_(self.region_for(None), regions.RESTOFWORLD) ok_(mock_process_request.called) def test_get_region_none(self): eq_(self.region_for('None'), None) def test_get_region_worldwide(self): eq_(self.region_for('worldwide'), regions.RESTOFWORLD)
class TestGetRegion(TestCase): fixtures = fixture('user_2519', 'webapp_337141') def setUp(self): self.resource = SearchView() self.factory = RequestFactory() self.profile = UserProfile.objects.get(pk=2519) self.user = self.profile.user def region_for(self, region): req = self.factory.get('/', ({} if region is None else {'region': region})) req.API = True req.LANG = '' req.user = self.user req.amo_user = self.profile RegionMiddleware().process_request(req) ACLMiddleware().process_request(req) return self.resource.get_region(req) @patch('mkt.regions.middleware.RegionMiddleware.region_from_request') def test_get_region_all(self, mock_request_region): geoip_fallback = regions.PE # Different than the default (restofworld). mock_request_region.return_value = geoip_fallback # Test string values (should return region with that slug). eq_(self.region_for('restofworld'), regions.RESTOFWORLD) eq_(self.region_for('us'), regions.US) # Test fallback to request.REGION (should return GeoIP region if region # isn't specified or is specified and empty). eq_(self.region_for(None), geoip_fallback) eq_(self.region_for(''), geoip_fallback) # Test fallback to restofworld (e.g. if GeoIP fails). with patch('mkt.regions.middleware.RegionMiddleware.' 'process_request') as mock_process_request: eq_(self.region_for(None), regions.RESTOFWORLD) ok_(mock_process_request.called) def test_get_region_none(self): eq_(self.region_for('None'), None) def test_get_region_worldwide(self): eq_(self.region_for('worldwide'), regions.RESTOFWORLD)
def setUp(self): self.resource = SearchView() self.factory = RequestFactory() self.profile = UserProfile.objects.get(pk=2519) self.user = self.profile.user
class TestGetRegion(TestCase): fixtures = fixture('user_2519', 'webapp_337141') def setUp(self): self.resource = SearchView() self.factory = RequestFactory() self.profile = UserProfile.objects.get(pk=2519) self.user = self.profile.user def region_for(self, region): req = self.factory.get('/', ({} if region is None else {'region': region})) req.API = True req.LANG = '' req.user = self.user req.amo_user = self.profile RegionMiddleware().process_request(req) ACLMiddleware().process_request(req) return self.resource.get_region(req) def give_permission(self): self.grant_permission(self.profile, 'Regions:BypassFilters') def make_curator(self): collection = Collection.objects.create( collection_type=COLLECTIONS_TYPE_BASIC) collection.curators.add(self.profile) @patch('mkt.regions.middleware.RegionMiddleware.region_from_request') def test_get_region_all(self, mock_request_region): self.give_permission() geoip_fallback = regions.PE # Different than the default (worldwide). mock_request_region.return_value = geoip_fallback.slug # Test none-ish values (should return None, i.e. no region). eq_(self.region_for('None'), None) # Test string values (should return region with that slug). eq_(self.region_for('worldwide'), regions.WORLDWIDE) eq_(self.region_for('us'), regions.US) # Test fallback to request.REGION (should return GeoIP region if region # isn't specified or is specified and empty). eq_(self.region_for(None), geoip_fallback) eq_(self.region_for(''), geoip_fallback) # Test fallback to worldwide (e.g. if GeoIP fails). with patch('mkt.regions.middleware.RegionMiddleware.' 'process_request') as mock_process_request: eq_(self.region_for(None), regions.WORLDWIDE) ok_(mock_process_request.called) # Test invalid value (should raise exception). with self.assertRaises(ParseError): self.region_for('cvanland') # Scary place def test_get_region_permission(self): self.give_permission() eq_(self.region_for('None'), None) eq_(self.region_for('us'), regions.US) def test_collection_curator(self): self.make_curator() eq_(self.region_for('None'), None) eq_(self.region_for('us'), regions.US) def test_no_permission_not_curator(self): with self.assertRaises(PermissionDenied): eq_(self.region_for('None'), None) eq_(self.region_for('us'), regions.US)
services.register(r'error', ErrorViewSet, base_name='error') services.register(r'carrier', CarrierViewSet, base_name='carriers') services.register(r'region', RegionViewSet, base_name='regions') services.register(r'price-tier', PriceTierViewSet, base_name='price-tier') services.register(r'price-currency', PriceCurrencyViewSet, base_name='price-currency') urlpatterns = patterns('', url('', include('mkt.fireplace.urls')), url(r'^apps/', include(apps.urls)), url(r'^apps/app/', include(subapps.urls)), url(r'^apps/search/featured/', FeaturedSearchView.as_view(), name='featured-search-api'), url(r'^apps/search/', SearchView.as_view(), name='search-api'), url(r'^apps/suggest/', SuggestionsView.as_view(), name='suggestions-api'), url(r'^services/', include(services.urls)), url(r'^services/config/site/', site_config, name='site-config'), url(r'^fireplace/report_error/\d*', error_reporter, name='error-reporter'), url(r'^rocketfuel/', include(rocketfuel.urls)), url(r'^rocketfuel/collections/', include(subcollections.urls)), url(r'^apps/', include('mkt.versions.urls')), url(r'^apps/', include('mkt.ratings.urls')), url(r'^apps/features/', AppFeaturesList.as_view(), name='api-features-feature-list'), url('', include(abuse_api_patterns)), url('', include(account_api_patterns)), url('', include('mkt.installs.urls')), url('', include(reviewer_api_patterns)),
class TestGetRegion(TestCase): fixtures = fixture('user_2519', 'webapp_337141') def setUp(self): self.resource = SearchView() self.factory = RequestFactory() self.profile = UserProfile.objects.get(pk=2519) self.user = self.profile.user def region_for(self, region): req = self.factory.get('/', ({} if region is None else { 'region': region })) req.API = True req.LANG = '' req.user = self.user req.amo_user = self.profile RegionMiddleware().process_request(req) ACLMiddleware().process_request(req) return self.resource.get_region(req) def give_permission(self): self.grant_permission(self.profile, 'Regions:BypassFilters') def make_curator(self): collection = Collection.objects.create( collection_type=COLLECTIONS_TYPE_BASIC) collection.curators.add(self.profile) @patch('mkt.regions.middleware.RegionMiddleware.region_from_request') def test_get_region_all(self, mock_request_region): self.give_permission() geoip_fallback = regions.PE # Different than the default (restofworld). mock_request_region.return_value = geoip_fallback # Test none-ish values (should return None, i.e. no region). eq_(self.region_for('None'), None) # Test string values (should return region with that slug). eq_(self.region_for('restofworld'), regions.RESTOFWORLD) eq_(self.region_for('us'), regions.US) # Test fallback to request.REGION (should return GeoIP region if region # isn't specified or is specified and empty). eq_(self.region_for(None), geoip_fallback) eq_(self.region_for(''), geoip_fallback) # Test fallback to restofworld (e.g. if GeoIP fails). with patch('mkt.regions.middleware.RegionMiddleware.' 'process_request') as mock_process_request: eq_(self.region_for(None), regions.RESTOFWORLD) ok_(mock_process_request.called) # Test invalid value (should raise exception). with self.assertRaises(ParseError): self.region_for('cvanland') # Scary place def test_get_region_permission(self): self.give_permission() eq_(self.region_for('None'), None) eq_(self.region_for('us'), regions.US) def test_get_region_worldwide(self): self.give_permission() eq_(self.region_for('worldwide'), regions.RESTOFWORLD) def test_collection_curator(self): self.make_curator() eq_(self.region_for('None'), None) eq_(self.region_for('us'), regions.US) def test_no_permission_not_curator(self): with self.assertRaises(PermissionDenied): eq_(self.region_for('None'), None) eq_(self.region_for('us'), regions.US)
services.register(r'carrier', CarrierViewSet, base_name='carriers') services.register(r'region', RegionViewSet, base_name='regions') services.register(r'price-tier', PriceTierViewSet, base_name='price-tier') services.register(r'price-currency', PriceCurrencyViewSet, base_name='price-currency') urlpatterns = patterns( '', url('', include('mkt.fireplace.urls')), url(r'^apps/', include(apps.urls)), url(r'^apps/app/', include(subapps.urls)), url(r'^apps/search/featured/', FeaturedSearchView.as_view(), name='featured-search-api'), url(r'^apps/search/', SearchView.as_view(), name='search-api'), url(r'^apps/suggest/', SuggestionsView.as_view(), name='suggestions-api'), url(r'^services/', include(services.urls)), url(r'^services/config/site/', site_config, name='site-config'), url(r'^fireplace/report_error', error_reporter, name='error-reporter'), url(r'^rocketfuel/', include(rocketfuel.urls)), url(r'^rocketfuel/collections/', include(subcollections.urls)), url(r'^apps/', include('mkt.versions.urls')), url(r'^apps/', include('mkt.ratings.urls')), url(r'^apps/features/', AppFeaturesList.as_view(), name='api-features-feature-list'), url('', include(abuse_api_patterns)), url('', include(account_api_patterns)), url('', include('mkt.installs.urls')), url('', include(reviewer_api_patterns)),
services.register(r"carrier", CarrierViewSet, base_name="carriers") services.register(r"region", RegionViewSet, base_name="regions") services.register(r"price-tier", PriceTierViewSet, base_name="price-tier") services.register(r"price-currency", PriceCurrencyViewSet, base_name="price-currency") urlpatterns = patterns( "", url("", include("mkt.fireplace.urls")), url("", include("mkt.darjeeling.urls")), url(r"^apps/", include(apps.urls)), url(r"^apps/app/", include(subapps.urls)), url(r"^apps/search/featured/", FeaturedSearchView.as_view(), name="featured-search-api"), url(r"^apps/search/suggest/", SuggestionsView.as_view(), name="suggestions-search-api"), url(r"^apps/search/rocketbar/", RocketbarView.as_view(), name="rocketbar-search-api"), url(r"^apps/search/", SearchView.as_view(), name="search-api"), url(r"^services/", include(services.urls)), url(r"^services/config/site/", site_config, name="site-config"), url(r"^fireplace/report_error/\d*", error_reporter, name="error-reporter"), url(r"^rocketfuel/", include(rocketfuel.urls)), url(r"^rocketfuel/collections/", include(subcollections.urls)), url(r"^apps/", include("mkt.versions.urls")), url(r"^apps/", include("mkt.ratings.urls")), url(r"^apps/features/", AppFeaturesList.as_view(), name="api-features-feature-list"), url("", include(abuse_api_patterns)), url("", include(account_api_patterns)), url("", include("mkt.installs.urls")), url("", include(reviewer_api_patterns)), url("", include("mkt.webpay.urls")), url("", include(dev_api_patterns)), url("", include(payments_api_patterns)),