Exemplo n.º 1
0
    def get(self, request, *args, **kwargs):
        """
        Generate response for data download.

        Overrides default oTree method allowing custom data models export and additionally adds JSON export.
        """

        app_name = kwargs['app_name']

        if not request.GET.get(
                'custom'
        ):  # if "custom" is not requested, use the default oTree method
            return super().get(request, *args, **kwargs)

        if request.GET.get('json'):
            data = self.get_hierarchical_data_for_app(app_name)

            return JsonResponse(
                data, safe=False
            )  # safe=False is necessary for exporting array structures
        else:
            response, file_extension = get_export_response(request, app_name)

            df = self.get_dataframe_for_app(app_name)

            if file_extension == 'xlsx':
                rows = [df.columns]
                rows.extend(df.values.tolist())
                _export_xlsx(response, rows)
            else:
                df.to_csv(response, index=False)

            return response
Exemplo n.º 2
0
 def get(self, request, *args, **kwargs):
     session_code = kwargs['session_code']
     response, file_extension = get_export_response(request, session_code)
     export_wide(response, file_extension, session_code=session_code)
     return response