예제 #1
0
def ExporterView(request):
    # check if request is post if not raise Forbidden error
    if not request.method == 'POST':
        return HttpResponseForbidden()

    # try:
    # set legal types to export
    types = ['csv', 'xls', 'pdf']

    # pass all POST params
    export_type = request.POST['type']
    export_model = signing.loads(request.POST['model'])
    export_app = signing.loads(request.POST['app'])
    export_filters = request.POST['filters']

    # check if export type is on legal list
    if export_type not in types:
        return HttpResponseNotAllowed()

    # get model object
    model = get_model(export_app, export_model)
    filters = json.loads(export_filters)

    # check if model is exportable
    if not model._meta.exportable:
        return HttpResponseNotAllowed()

    exporter = Exporter(model, filters, request)

    if export_type == 'xls':
        response = exporter.xls_exporter()
    elif export_type == 'pdf':
        response = exporter.pdf_exporter()
    elif export_type == 'csv':
        response = exporter.csv_exporter()

    return response