Пример #1
0
def index(request, is_mobile=False):
    engine = request.GET.get('engine', 'solr')
    cluster = request.POST.get('cluster', '""')
    collection_id = request.GET.get('collection')

    collections = get_engine(
        request.user, engine,
        cluster=cluster).datasets() if engine != 'report' else ['default']

    if not collections:
        if engine == 'solr':
            return no_collections(request)
        else:
            return importer(request)

    try:
        collection_doc = Document2.objects.get(id=collection_id)
        if USE_NEW_EDITOR.get():
            collection_doc.can_read_or_exception(request.user)
        else:
            collection_doc.doc.get().can_read_or_exception(request.user)
        collection = Collection2(request.user, document=collection_doc)
    except Exception, e:
        raise PopupException(
            e,
            title=
            _("Dashboard does not exist or you don't have the permission to access it."
              ))
Пример #2
0
def new_search(request):
    engine = request.GET.get('engine', 'solr')
    cluster = request.POST.get('cluster', '""')

    collections = get_engine(
        request.user, engine,
        cluster=cluster).datasets() if engine != 'report' else ['default']

    if not collections:
        if engine == 'solr':
            return no_collections(request)
        else:
            return importer(request)

    collection = Collection2(user=request.user,
                             name=collections[0],
                             engine=engine)
    query = {'qs': [{'q': ''}], 'fqs': [], 'start': 0}
    layout = DEFAULT_LAYOUT if engine != 'report' else REPORT_LAYOUT

    if request.GET.get('format', 'plain') == 'json':
        return JsonResponse({
            'collection': collection.get_props(request.user),
            'query': query,
            'initial': {
                'collections': collections,
                'layout': layout,
                'qb_layout': QUERY_BUILDER_LAYOUT,
                'text_search_layout': TEXT_SEARCH_LAYOUT,
                'is_latest': _get_latest(),
                'engines': get_engines(request.user)
            }
        })
    else:
        return render(
            'search.mako', request, {
                'collection':
                collection,
                'query':
                query,
                'initial':
                json.dumps({
                    'collections': collections,
                    'layout': layout,
                    'qb_layout': QUERY_BUILDER_LAYOUT,
                    'text_search_layout': TEXT_SEARCH_LAYOUT,
                    'is_latest': _get_latest(),
                    'engines': get_engines(request.user)
                }),
                'is_owner':
                True,
                'is_embeddable':
                request.GET.get('is_embeddable', False),
                'can_edit_index':
                can_edit_index(request.user),
                'is_report':
                engine == 'report'
            })
Пример #3
0
def index(request, is_mobile=False):
    engine = request.GET.get('engine', 'solr')
    cluster = request.POST.get('cluster', '""')
    collection_id = request.GET.get('collection')

    collections = get_engine(
        request.user, engine,
        cluster=cluster).datasets() if engine != 'report' else ['default']

    if not collections:
        if engine == 'solr':
            return no_collections(request)
        else:
            return importer(request)

    try:
        collection_doc = Document2.objects.get(id=collection_id)
        if USE_NEW_EDITOR.get():
            collection_doc.can_read_or_exception(request.user)
        else:
            collection_doc.doc.get().can_read_or_exception(request.user)
        collection = Collection2(request.user, document=collection_doc)
    except Exception as e:
        raise PopupException(
            e,
            title=
            _("Dashboard does not exist or you don't have the permission to access it."
              ))

    query = {'qs': [{'q': ''}], 'fqs': [], 'start': 0}

    if request.method == 'GET':
        if 'q' in request.GET:
            query['qs'][0]['q'] = antixss(request.GET.get('q', ''))
        if 'qd' in request.GET:
            query['qd'] = antixss(request.GET.get('qd', ''))

    template = 'search.mako'
    if is_mobile:
        template = 'search_m.mako'
    engine = collection.data['collection'].get('engine', 'solr')

    return render(
        template, request, {
            'collection':
            collection,
            'query':
            json.dumps(query),
            'initial':
            json.dumps({
                'collections': collections,
                'layout': DEFAULT_LAYOUT,
                'qb_layout': QUERY_BUILDER_LAYOUT,
                'text_search_layout': TEXT_SEARCH_LAYOUT,
                'is_latest': _get_latest(),
                'engines': get_engines(request.user)
            }),
            'is_owner':
            collection_doc.can_write(request.user) if USE_NEW_EDITOR.get() else
            collection_doc.doc.get().can_write(request.user),
            'can_edit_index':
            can_edit_index(request.user),
            'is_embeddable':
            request.GET.get('is_embeddable', False),
            'mobile':
            is_mobile,
            'is_report':
            collection.data['collection'].get('engine') == 'report'
        })