def featured_versions(request, default_context=None): context = default_context or {} products_api = CurrentProducts() products_api.cache_seconds = 0 products = products_api.get() context['products'] = products['products'] # yuck! context['releases'] = {} now = datetime.date.today() for product_name in context['products']: context['releases'][product_name] = [] for release in products['hits'][product_name]: start_date = datetime.datetime.strptime( release['start_date'], '%Y-%m-%d' ).date() if start_date > now: continue end_date = datetime.datetime.strptime( release['end_date'], '%Y-%m-%d' ).date() if end_date < now: continue context['releases'][product_name].append(release) return render(request, 'manage/featured_versions.html', context)
def update_featured_versions(request): products_api = CurrentProducts() products = products_api.get()['products'] 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 = CurrentProducts() if request.method == 'POST': form = forms.ProductForm( request.POST, existing_products=api.get()['products'] ) if form.is_valid(): api = CurrentProducts() api.post( product=form.cleaned_data['product'], version=form.cleaned_data['initial_version'] ) messages.success( request, 'Product %s (%s) added.' % ( form.cleaned_data['product'], form.cleaned_data['initial_version'] ) ) return redirect('manage:products') else: form = forms.ProductForm(initial={ 'initial_version': '1.0' }) context['form'] = form context['page_title'] = "Products" return render(request, 'manage/products.html', context)
def products(request): context = {} api = CurrentProducts() if request.method == 'POST': form = forms.ProductForm(request.POST, existing_products=api.get()['products']) if form.is_valid(): api = CurrentProducts() 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): products_api = CurrentProducts() products = products_api.get()["products"] 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 setUp(self, rget): super(TestViews, self).setUp() # we do this here so that the current/versions thing # is cached since that's going to be called later # in every view more or less def mocked_get(url, **options): if '/products' in url: return Response(""" { "hits": [ { "is_featured": true, "throttle": 1.0, "end_date": "string", "start_date": "integer", "build_type": "string", "product": "WaterWolf", "version": "19.0", "has_builds": true }], "total": "1" } """) raise NotImplementedError(url) rget.side_effect = mocked_get from crashstats.crashstats.models import ( CurrentProducts, CurrentVersions ) versions = '+'.join([ '%s:%s' % (ver['product'], ver['version']) for ver in CurrentVersions().get() if ver['product'] == settings.DEFAULT_PRODUCT ]) api = CurrentProducts() # because WaterWolf is the default product and because # BaseTestViews.setUp calls CurrentVersions already, we need to # prepare this call so that each call to the home page can use the # cache api.get(versions=versions)
def products(request): context = {} api = CurrentProducts() if request.method == "POST": form = forms.ProductForm(request.POST, existing_products=api.get()["products"]) if form.is_valid(): api = CurrentProducts() 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 products(request): context = {} api = CurrentProducts() if request.method == 'POST': form = forms.ProductForm( request.POST, existing_products=api.get()['products'] ) if form.is_valid(): api = CurrentProducts() 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 {} products_api = CurrentProducts() products_api.cache_seconds = 0 products = products_api.get() context["products"] = products["products"] # yuck! context["releases"] = {} now = datetime.date.today() for product_name in context["products"]: context["releases"][product_name] = [] for release in products["hits"][product_name]: start_date = datetime.datetime.strptime(release["start_date"], "%Y-%m-%d").date() if start_date > now: continue end_date = datetime.datetime.strptime(release["end_date"], "%Y-%m-%d").date() if end_date < now: continue context["releases"][product_name].append(release) return render(request, "manage/featured_versions.html", context)
def products(request): context = {} api = CurrentProducts() if request.method == 'POST': form = forms.ProductForm(request.POST, existing_products=api.get()['products']) if form.is_valid(): api = CurrentProducts() api.post(product=form.cleaned_data['product'], version=form.cleaned_data['initial_version']) messages.success( request, 'Product %s (%s) added.' % (form.cleaned_data['product'], form.cleaned_data['initial_version'])) return redirect('manage:products') else: form = forms.ProductForm(initial={'initial_version': '1.0'}) context['form'] = form context['page_title'] = "Products" return render(request, 'manage/products.html', context)