Ejemplo n.º 1
0
def filter(request, page=0, itemsxpage=settings.PAGINATION_RESULTS_PER_PAGE):
    """ filter resources """
    bb_request = request.GET
    filters = bb_request.get("filters")
    filters_dict = ""
    filter_name = ""
    sort_by = "-id"
    exclude = None

    if filters is not None and filters != "":
        filters_dict = filters_to_model_fields(json.loads(bb_request.get("filters")))
    if bb_request.get("page") is not None and bb_request.get("page") != "":
        page = int(bb_request.get("page"))
    if bb_request.get("q") is not None and bb_request.get("q") != "":
        filter_name = bb_request.get("q")
    if bb_request.get("itemxpage") is not None and bb_request.get("itemxpage") != "":
        itemsxpage = int(bb_request.get("itemxpage"))

    if bb_request.get("collect_type", None) is not None:
        # If File Dataset, set impl_types as valid ones. File = 0
        if bb_request.get("collect_type") == "0":
            exclude = {
                "dataset__type": bb_request.get("collect_type"),
                "impl_type__in": DATASTREAM_IMPL_NOT_VALID_CHOICES,
            }

    if bb_request.get("sort_by") is not None and bb_request.get("sort_by") != "":
        if bb_request.get("sort_by") == "category":
            sort_by = "category__categoryi18n__name"
        if bb_request.get("sort_by") == "title":
            sort_by = "dataseti18n__title"
        if bb_request.get("sort_by") == "author":
            sort_by = "dataset__user__nick"
        if bb_request.get("order") == "desc":
            sort_by = "-" + sort_by

    resources, total_resources = DatasetDBDAO().query(
        account_id=request.account.id,
        language=request.user.language,
        page=page,
        itemsxpage=itemsxpage,
        filters_dict=filters_dict,
        sort_by=sort_by,
        filter_name=filter_name,
        exclude=exclude,
    )

    for resource in resources:
        resource["url"] = reverse(
            "manageDatasets.view", urlconf="workspace.urls", kwargs={"revision_id": resource["id"]}
        )

    data = {"total_resources": total_resources, "resources": resources}
    response = DatasetList().render(data)

    mimetype = "application/json"

    return HttpResponse(response, mimetype=mimetype)
Ejemplo n.º 2
0
def filter(request, page=0, itemsxpage=settings.PAGINATION_RESULTS_PER_PAGE):
    """ filter resources """
    bb_request = request.GET
    filters = bb_request.get('filters')
    filters_dict = ''
    filter_name= ''
    sort_by='-id'

    if filters is not None and filters != '':
        filters_dict = filters_to_model_fields(json.loads(bb_request.get('filters')))
    if bb_request.get('page') is not None and bb_request.get('page') != '':
        page = int(bb_request.get('page'))
    if bb_request.get('itemxpage') is not None and bb_request.get('itemxpage') != '':
        itemsxpage = int(bb_request.get('itemxpage'))
    if bb_request.get('q') is not None and bb_request.get('q') != '':
        filter_name = bb_request.get('q')
    if bb_request.get('sort_by') is not None and bb_request.get('sort_by') != '':
        if bb_request.get('sort_by') == "title":
            sort_by ="datastreami18n__title"
        if bb_request.get('sort_by') == "dataset_title":
            sort_by ="dataset__last_revision__dataseti18n__title"
        if bb_request.get('sort_by') == "author":
            sort_by ="dataset__user__nick"
        if bb_request.get('order')=="desc":
            sort_by = "-"+ sort_by
    #limit = int(bb_request.get('rp'))
    #sort_by = bb_request.get('sortname')
    #order = bb_request.get('sortorder')
    #filters_dict=filters_dict
    ds_dao = DataStreamDBDAO()
    resources,total_resources = ds_dao.query(
        account_id=request.account.id,
        language=request.user.language,
        page=page,
        itemsxpage=itemsxpage,
        filters_dict=filters_dict,
        sort_by=sort_by,
        filter_name=filter_name
    )

    for resource in resources:
        # resources[i]['url'] = LocalHelper.build_permalink('manageDataviews.view', '&datastream_revision_id=' + str(resources[i]['id']))
        resource['url'] = reverse('manageDataviews.view', urlconf='workspace.urls', kwargs={'revision_id': resource['id']})
        resource['dataset_url'] = reverse('manageDatasets.view', urlconf='workspace.urls', kwargs={'revision_id': resource['dataset__last_revision__id']})

    data = {'total_resources': total_resources, 'resources': resources}
    response = DatastreamList().render(data)
    
    return JSONHttpResponse(response)