Beispiel #1
0
    def build_query(self,
                    query,
                    workspaces=None,
                    templates=None,
                    options=None,
                    title=None):
        """Build the raw query
        Prepare the query for a keyword search

        Args:

            query: ObjectId
            workspaces: ObjectId
            templates: ObjectId
            options: Query options
            title: title filter

        Returns:

            The raw query
        """
        # build query builder
        query = json.dumps(get_full_text_query(query))
        return super(ExecuteLocalKeywordQueryView, self).build_query(
            query=str(query),
            workspaces=workspaces,
            templates=templates,
            options=options,
            title=title,
        )
    def _post(self, request):
        """ Prepare the POST context

        Args:
            request:

        Returns:

        """
        error = None
        warning = None
        search_form = KeywordForm(data=request.POST)
        display_persistent_query_button = False
        # validate form
        if search_form.is_valid():
            try:
                # get form values
                query_id = search_form.cleaned_data.get('query_id', None)
                keywords = search_form.cleaned_data.get('keywords', None)
                global_templates = search_form.cleaned_data.get(
                    'global_templates', [])
                user_templates = search_form.cleaned_data.get(
                    'user_templates', [])
                # get all template version manager ids
                template_version_manager_ids = global_templates + user_templates
                # from ids, get all version manager
                version_manager_list = version_manager_api.get_by_id_list(
                    template_version_manager_ids)
                # from all version manager, build a list of all version (template)
                template_ids = []
                map(lambda x: template_ids.extend(x.versions),
                    version_manager_list)
                if query_id is None or keywords is None:
                    error = "Expected parameters are not provided"
                else:
                    # get query
                    query = query_api.get_by_id(query_id)
                    if len(query.data_sources) == 0:
                        warning = "Please select at least 1 data source."
                    else:
                        # update query
                        query.templates = template_api.get_all_by_id_list(
                            template_ids)
                        query.content = json.dumps(
                            get_full_text_query(keywords))
                        query_api.upsert(query)
                        display_persistent_query_button = True
            except DoesNotExist:
                error = "An unexpected error occurred while retrieving the query."
            except Exception, e:
                error = "An unexpected error occurred: {}.".format(e.message)
Beispiel #3
0
    def build_query(self, query, templates, options):
        """ Build the raw query. Prepare the query for a keyword search.
        Args:
            query:
            templates:
            options:

        Returns:
            The raw query.

        """
        # build query builder
        query = json.dumps(get_full_text_query(query))
        return super(ExecuteKeywordQueryView,
                     self).build_query(str(query), templates, options)
Beispiel #4
0
    def build_query(self, query, templates, options):
        """ Build the raw query
        Prepare the query for a keyword search

        Args:

            query: ObjectId
            templates: ObjectId
            options: Query options
            
        Returns:

            The raw query
        """
        # build query builder
        query = json.dumps(get_full_text_query(query))
        return super(ExecuteLocalKeywordQueryView, self).build_query(str(query), templates, options)
    def _get_query_prepared(self, keywords, query, request, template_ids):
        """ Prepare the query for suggestions.

        Args:
            keywords:
            query:
            request:
            template_ids:
        Returns:
        """

        # update query
        query.templates = template_api.get_all_by_id_list(template_ids)
        # TODO: improve query to get better results
        query.content = json.dumps(get_full_text_query(keywords))
        # Data source is local
        query.data_sources = [create_local_data_source(request)]
        return query
    def execute_full_text_query(text, list_metadata_format_id):
        """ Execute full text query on OaiRecord data collection.

        Args:
            text: Keywords.
            list_metadata_format_id: List of metadata format id to search on.

        Returns: List of OaiRecord.

        """
        full_text_query = get_full_text_query(text)
        # only no deleted records, add harvester_metadata_format criteria
        full_text_query.update({'deleted': False}, {
            'harvester_metadata_format__id': {
                '$in': list_metadata_format_id
            }
        })

        return OaiRecord.objects.find(full_text_query)