コード例 #1
0
ファイル: views.py プロジェクト: lonnen/socorro
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)
コード例 #2
0
ファイル: views.py プロジェクト: g-k/socorro
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)
コード例 #3
0
ファイル: views.py プロジェクト: lonnen/socorro
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)
コード例 #4
0
ファイル: views.py プロジェクト: g-k/socorro
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)
コード例 #5
0
    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']
コード例 #6
0
ファイル: test_views.py プロジェクト: Krispy2009/socorro
    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',
        })
コード例 #7
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
コード例 #8
0
ファイル: views.py プロジェクト: lonnen/socorro
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)
コード例 #9
0
ファイル: views.py プロジェクト: g-k/socorro
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)