Beispiel #1
0
def download_report(request, report_id=None):
    """Downloads a report."""
    if not report_exists(report_id):
        raise Http404

    report = get_report_by_id(report_id, request.user)

    return create_csv_response(report.rows(), report.field_titles,
                               report.get_filename())
Beispiel #2
0
    def post(self, request, format=None):
        """Performs search and returns CSV file."""
        validated_data = self.validate_data(request.data)

        es_query = self._get_opensearch_query(request, validated_data)
        ids = tuple(self._get_ids(es_query))
        db_queryset = self._get_rows(ids, validated_data['sortby'])
        base_filename = self._get_base_filename()

        user_event_data = {
            'num_results': len(ids),
            'args': validated_data,
        }

        record_user_event(request, UserEventType.SEARCH_EXPORT, data=user_event_data)

        return create_csv_response(db_queryset, self.field_titles, base_filename)