def details(request, name='', repo='', arch=''): if all([name, repo, arch]): arch_obj = get_object_or_404(Arch, name=arch) repo_obj = get_object_or_404(Repo, name__iexact=repo) try: pkg = Package.objects.select_related('arch', 'repo', 'packager').get(pkgname=name, repo=repo_obj, arch=arch_obj) rbstatus = None try: rbstatus = RebuilderdStatus.objects.get(pkg=pkg) except RebuilderdStatus.DoesNotExist: pass if request.method == 'HEAD': return empty_response() return render( request, 'packages/details.html', { 'pkg': pkg, 'rbstatus': rbstatus, 'notreproducible': rbstatus.status == RebuilderdStatus.BAD if rbstatus else False }) except Package.DoesNotExist: # attempt a variety of fallback options before 404ing options = (redirect_agnostic, split_package_details, recently_removed_package, replaced_package) for method in options: ret = method(request, name, repo_obj, arch_obj) if ret: return ret # we've tried everything at this point, nothing to see raise Http404 else: return redirect_to_search(request, name, repo, arch)
def details(request, name='', repo='', arch=''): if all([name, repo, arch]): arch_obj = get_object_or_404(Arch, name=arch) repo_obj = get_object_or_404(Repo, name__iexact=repo) try: pkg = Package.objects.select_related( 'arch', 'repo', 'packager').get(pkgname=name, repo=repo_obj, arch=arch_obj) if request.method == 'HEAD': return empty_response() return render(request, 'packages/details.html', {'pkg': pkg}) except Package.DoesNotExist: # attempt a variety of fallback options before 404ing options = (redirect_agnostic, split_package_details, recently_removed_package, replaced_package) for method in options: ret = method(request, name, repo_obj, arch_obj) if ret: return ret # we've tried everything at this point, nothing to see raise Http404 else: return redirect_to_search(request, name, repo, arch)
def get(self, request, *args, **kwargs): if request.method == 'HEAD': return empty_response() self.form = PackageSearchForm(data=request.GET, show_staging=self.request.user.is_authenticated()) return super(SearchListView, self).get(request, *args, **kwargs)