def update_featured_versions(request): api = ProductVersions() products = set( x['product'] for x in api.get()['hits'] ) data = {} for product in request.POST: if product in products: data[product] = request.POST.getlist(product) featured_api = ReleasesFeatured() success = featured_api.put(**data) if success: messages.success( request, 'Featured versions successfully updated. ' 'Cache might take some time to update.' ) log(request.user, 'featured_versions.update', { 'data': data, 'success': success }) url = reverse('manage:featured_versions') return redirect(url)
def products(request): context = {} api = ProductVersions() if request.method == 'POST': existing_products = set(x['product'] for x in api.get()['hits']) form = forms.ProductForm(request.POST, existing_products=existing_products) if form.is_valid(): api.post(product=form.cleaned_data['product'], version=form.cleaned_data['initial_version']) log(request.user, 'product.add', form.cleaned_data) messages.success( request, 'Product %s (%s) added.' % (form.cleaned_data['product'], form.cleaned_data['initial_version'])) return redirect('manage:products') else: product = request.GET.get('product') if product is not None: messages.error( request, 'Product %s not found. Submit the form below to add it.' % (product)) form = forms.ProductForm(initial={ 'product': product, 'initial_version': '1.0' }) context['form'] = form context['page_title'] = "Products" return render(request, 'manage/products.html', context)
def featured_versions(request, default_context=None): context = default_context or {} api = ProductVersions() api.cache_seconds = 0 product_versions = api.get(active=True)['hits'] releases = collections.OrderedDict() for pv in product_versions: if pv['product'] not in releases: releases[pv['product']] = [] releases[pv['product']].append(pv) context['releases'] = releases return render(request, 'manage/featured_versions.html', context)
def test_cache_control(self): """successful queries against models with caching should set a Cache-Control header.""" def mocked_get(**options): assert options['product'] == [settings.DEFAULT_PRODUCT] return { "hits": [ { "product": settings.DEFAULT_PRODUCT, "throttle": 100.0, "end_date": "2018-10-29", "is_featured": True, "build_type": "nightly", "version": "63.0a1", "start_date": "2018-06-25", "has_builds": True, "is_rapid_beta": False }, ] } ProductVersions.implementation().get.side_effect = mocked_get url = reverse('api:model_wrapper', args=('ProductVersions', )) response = self.client.get(url, {'product': settings.DEFAULT_PRODUCT}) assert response.status_code == 200 assert response['Cache-Control'] assert 'private' in response['Cache-Control'] cache_seconds = ProductVersions.cache_seconds assert 'max-age={}'.format(cache_seconds) in response['Cache-Control']
def test_ProductVersions(self): def mocked_get(*args, **k): return { 'hits': [ { 'product': 'Firefox', 'version': '1.0', } ], 'total': 1 } raise NotImplementedError ProductVersions.implementation().get.side_effect = mocked_get url = reverse('api:model_wrapper', args=('ProductVersions',)) response = self.client.get(url) eq_(response.status_code, 200) dump = json.loads(response.content) eq_(dump['total'], 1) eq_(dump['hits'][0], { 'product': 'Firefox', 'version': '1.0', })
def test_ProductVersions(self): def mocked_get(*args, **k): return { 'hits': [ { 'product': 'Firefox', 'version': '1.0', } ], 'total': 1 } raise NotImplementedError ProductVersions.implementation().get.side_effect = mocked_get url = reverse('api:model_wrapper', args=('ProductVersions',)) response = self.client.get(url) assert response.status_code == 200 dump = json.loads(response.content) assert dump['total'] == 1 expected = { 'product': 'Firefox', 'version': '1.0', } assert dump['hits'][0] == expected
def products(request): context = {} api = ProductVersions() if request.method == 'POST': existing_products = set( x['product'] for x in api.get()['hits'] ) form = forms.ProductForm( request.POST, existing_products=existing_products ) if form.is_valid(): api.post( product=form.cleaned_data['product'], version=form.cleaned_data['initial_version'] ) log(request.user, 'product.add', form.cleaned_data) messages.success( request, 'Product %s (%s) added.' % ( form.cleaned_data['product'], form.cleaned_data['initial_version'] ) ) return redirect('manage:products') else: product = request.GET.get('product') if product is not None: messages.error( request, 'Product %s not found. Submit the form below to add it.' % ( product ) ) form = forms.ProductForm(initial={ 'product': product, 'initial_version': '1.0' }) context['form'] = form context['page_title'] = "Products" return render(request, 'manage/products.html', context)
def update_featured_versions(request): api = ProductVersions() products = set(x['product'] for x in api.get()['hits']) data = {} for product in request.POST: if product in products: data[product] = request.POST.getlist(product) featured_api = ReleasesFeatured() success = featured_api.put(**data) if success: messages.success( request, 'Featured versions successfully updated. ' 'Cache might take some time to update.') log(request.user, 'featured_versions.update', { 'data': data, 'success': success }) url = reverse('manage:featured_versions') return redirect(url)