def list_(request): user = request.user params = request.GET report_ids = request.session.get('report_ids', []) form = ReportSearchForm(params, user=user, report_ids=report_ids) results = form.search() # Handle the case where they want to export the reports # XXX: Why isn't this a separate view? export_format = params.get('export') if user.is_active and export_format in ('kml', 'csv'): export_data = [report.object for report in results] return _export(reports=export_data, format=export_format) # Paginate the results paginator = Paginator(results, settings.ITEMS_PER_PAGE) active_page = request.GET.get('page') try: page = paginator.page(active_page) except PageNotAnInteger: page = paginator.page(1) except EmptyPage: page = paginator.page(paginator.num_pages) # Serialize and render report data to JSON serializer = ReportSerializer(page.object_list, many=True) reports = serializer.data template_name = 'list' if user.is_active else 'list_public' template = 'reports/{name}.html'.format(name=template_name) tab = params.get('tabs') or 'search' tab_context = get_tab_counts(user, report_ids) subscription_url = reverse('notifications-create') subscription_params = request.GET.urlencode() if subscription_params: subscription_url = '?'.join((subscription_url, subscription_params)) else: subscription_url = None context = { 'reports': reports, 'page': page, 'form': form, 'subscription_url': subscription_url, 'tab': tab, } context.update(tab_context) return render(request, template, context)
def list_(request): user = request.user report_ids = request.session.get('report_ids', []) tab_context = get_tab_counts(user, report_ids) if request.method == 'POST': form = UserSubscriptionDeleteForm(request.POST, user=request.user) if form.is_valid(): form.save() messages.success(request, 'Saved') return redirect('notifications-list') else: form = UserSubscriptionDeleteForm(user=request.user) context = {'form': form} context.update(tab_context) return render(request, 'notifications/list.html', context)