Пример #1
0
def API_get_object_report_url(request, model, pk, report, **kwargs):
    """ *Формирование отчёта для объекта.*

        ##### ЗАПРОС
        Параметры:

        1. **"model"** - уникальное название модели, например: "auth.user";
        2. **"pk"** - ключ объекта;
        3. **"report"** - ключ отчёта;

        ##### ОТВЕТ
        ссылка на файл сформированного отчёта
    """
    # Получаем модель BWP со стандартной проверкой прав
    model_bwp = site.bwp_dict(request).get(model)
    report = Report.objects.get(pk=report)

    if pk is None:
        return HttpResponseBadRequest()

    options = {
        'request': request,
        'pk': pk,
        'as_lookup': True,
    }

    obj = model_bwp.queryset(request, **kwargs).get(pk=pk)

    ctx = {'data': obj}
    url = report.render_to_media_url(context=ctx, user=request.user)
    return JSONResponse(data=url)
Пример #2
0
def API_get_collection_report_url(request, model, report,
    query=None, order_by=None, fields=None, filters=None, **kwargs):
    """ *Формирование отчёта для коллекции.*

        ##### ЗАПРОС
        Параметры:

        1. **"model"** - уникальное название модели, например: "auth.user";
        2. **"report"** - ключ отчёта;
        3. **"query"** - поисковый запрос;
        4. **"order_by"** - сортировка объектов.
        5. **"fields"** - поля объектов для поиска.
        6. **"filters"** - дополнительные фильтры.

        ##### ОТВЕТ
        ссылка на файл сформированного отчёта
    """
    # Получаем модель BWP со стандартной проверкой прав
    model_bwp = site.bwp_dict(request).get(model)
    report = Report.objects.get(pk=report)

    options = {
        'request': request,
        'query': query,
        'order_by': order_by,
        'fields': fields,
        'filters': filters,
    }

    qs = model_bwp.filter_queryset(**options)
    
    filters = filters or []

    ctx = {'data': qs, 'filters': [ x for x in filters if x['active']]}
    url = report.render_to_media_url(context=ctx, user=request.user)
    return JSONResponse(data=url)