示例#1
0
def get_all_queries():
    """Return all queries.

    Returns:

    """
    return Query.objects().all()
    def generate_queries(self):
        """Generate queries

        Returns:

        """

        self.query_user1 = Query(user_id="1").save()
示例#3
0
def _create_query():
    data_source = _create_data_source()
    query = Query(
        user_id="1",
        content="{'root.value': 'test'}",
        templates=[],
        data_sources=[data_source],
    )
    return query
示例#4
0
def create_default_query(request, template_ids):
    """create a new Query object

    Args:
        request:
        template_ids:

    Returns:

    """
    # create new query object
    query = Query(user_id=str(request.user.id), templates=template_ids)
    if EXPLORE_ADD_DEFAULT_LOCAL_DATA_SOURCE_TO_QUERY:
        # add the local data source by default
        add_local_data_source(request, query)
    # add a default empty query content
    query.content = "{}"
    return query
示例#5
0
def get_by_id(id_query, user):
    """Returns a query with the given id

    Args:
        id_query:

    Returns:

    """
    return Query.get_by_id(id_query)
示例#6
0
    def _create_new_query(user_id, type_):
        """ Create a new query
        Args:
            user_id:
            type_:

        """
        # Get templates using the given Type
        # Here we should get all dependencies recurcively and remove all template.type from the list
        # Passing an empty list is a quick fix
        # templates = template_api.get_all_templates_by_dependencies([type_])
        # Create query
        query = Query(user_id=str(user_id), templates=[])
        return query_api.upsert(query)
示例#7
0
    def get_redirect_url(self, *args, **kwargs):
        try:
            # here we receive a PersistentQuery id
            persistent_query_example = self._get_persistent_query(kwargs['persistent_query_id'])

            # from it we have to duplicate it to a Query with the new user_id
            # we should probably add the query_id into the persistent query?
            # to avoid to recreate this query each time we visit the persistent URL
            query = Query(user_id=str(self.request.user.id),
                          content=persistent_query_example.content,
                          templates=persistent_query_example.templates,
                          data_sources=persistent_query_example.data_sources)
            query = query_api.upsert(query)

            # then redirect to the result page core_explore_example_results with /<template_id>/<query_id>
            return self._get_reversed_url(query)
        except Exception, e:
            # add success message
            messages.add_message(self.request, messages.ERROR, 'The given URL is not valid.')
            return self._get_reversed_url_if_failed()
    def get_redirect_url(self, *args, **kwargs):
        try:
            # here we receive a PersistentQuery  name or id
            persistent_query_id = self.request.GET.get("id", None)
            persistent_query_name = self.request.GET.get("name", None)

            if persistent_query_id is not None:
                persistent_query = self._get_persistent_query_by_id(
                    persistent_query_id, self.request.user)
            elif persistent_query_name is not None:
                persistent_query = self._get_persistent_query_by_name(
                    persistent_query_name, self.request.user)
            else:
                messages.add_message(self.request, messages.ERROR,
                                     "Expecting id or name.")
                return self._get_reversed_url_if_failed()

            # from it we have to duplicate it to a Query with the new user_id
            # we should probably add the query_id into the persistent query?
            # to avoid to recreate this query each time we visit the persistent URL
            query = Query(
                user_id=str(self.request.user.id),
                content=persistent_query.content,
                templates=persistent_query.templates,
                data_sources=persistent_query.data_sources,
            )
            query = query_api.upsert(query, self.request.user)

            # then redirect to the result page core_explore_example_results with /<template_id>/<query_id>
            return self._get_reversed_url(query)
        except AccessControlError:
            # add error message
            messages.add_message(self.request, messages.ERROR,
                                 "Access Forbidden.")
            return self._get_reversed_url_if_failed()
        except Exception as e:
            # add error message
            messages.add_message(self.request, messages.ERROR,
                                 "The given URL is not valid.")
            return self._get_reversed_url_if_failed()
示例#9
0
def tiles(request):
    """

    :param request:
    :return:
    """
    from django.conf import settings

    installed_apps = settings.INSTALLED_APPS

    context = {"tiles": []}

    if "core_explore_keyword_registry_app" in installed_apps:
        from core_explore_keyword_registry_app.views.user.forms import RefinementForm
        from core_explore_common_app.components.query import api as query_api
        from core_explore_common_app.components.query.models import Query
        from core_explore_common_app.views.user.ajax import add_local_data_source
        from core_main_registry_app.components.refinement import api as refinement_api
        from core_main_registry_app.components.category import api as category_api
        from core_main_registry_app.components.template import (
            api as template_registry_api,
        )
        from core_main_registry_app.components.custom_resource import (
            api as custom_resource_api,
        )
        from core_main_app.commons import exceptions as exceptions

        # create Query
        query = Query(user_id=str(request.user.id), templates=[])

        # add local data source to the query
        add_local_data_source(request, query)

        # set visibility
        query_api.set_visibility_to_query(query)

        # upsert the query
        query_api.upsert(query)

        # add information in context to populate keyword form
        context.update(
            {
                "query_id": str(query.id),
                "user_id": query.user_id,
                "order_by_field": ",".join(DATA_SORTING_FIELDS),
            }
        )

        try:
            # Get current template
            template = template_registry_api.get_current_registry_template()
            # Get type refinement
            refinement = refinement_api.get_by_template_hash_and_by_slug(
                template_hash=template.hash, slug="type"
            )
            # Refinement form ID
            refinement_form_id = "{0}-{1}".format(
                RefinementForm.prefix, refinement.slug
            )
            context["refinement_form_id"] = refinement_form_id
            # Shorter api name
            get_categories = (
                category_api.get_all_categories_ids_from_name_and_refinement_id
            )

            custom_resources = custom_resource_api.get_all_of_current_template().order_by(
                "sort"
            )

            for custom_resource in custom_resources:
                if (
                    custom_resource.display_icon
                    and custom_resource.role_type is not None
                ):
                    tile = {
                        "logo": custom_resource.icon,
                        "color": custom_resource.icon_color,
                        "categories": get_categories(
                            custom_resource.role_type.split(":")[0], refinement.id
                        ),
                        "title": custom_resource.title,
                        "text": "Click here to explore the {0}.".format(
                            custom_resource.title
                        ),
                    }
                    context["tiles"].append(tile)

        except (exceptions.DoesNotExist, exceptions.ModelError) as e:
            logger.error(
                "Error while getting information from the database: {0}".format(str(e))
            )
        except Exception as ex:
            logger.error(
                "Something wrong occurred during the tiles "
                "generation: {0}".format(str(ex))
            )

    return render(request, "nmrr_home/tiles.html", context)
示例#10
0
文件: views.py 项目: RayPlante/nmrr
def tiles(request):
    """

    :param request:
    :return:
    """
    from django.conf import settings
    installed_apps = settings.INSTALLED_APPS

    context = {"tiles": []}

    if "core_explore_keyword_registry_app" in installed_apps:
        from core_explore_keyword_registry_app.views.user.forms import RefinementForm
        from core_explore_common_app.components.query import api as query_api
        from core_explore_common_app.components.query.models import Query
        from core_explore_common_app.views.user.ajax import add_local_data_source
        from core_main_registry_app.components.refinement import api as refinement_api
        from core_main_registry_app.components.category import api as category_api
        from core_main_registry_app.components.template import api as template_registry_api
        from core_main_app.commons import exceptions as exceptions

        # create Query
        query = Query(user_id=str(request.user.id), templates=[])
        query_api.upsert(query)

        # add local data source to the query
        add_local_data_source(request, query)

        # add information in context to populate keyword form
        context.update({"query_id": str(query.id), "user_id": query.user_id})

        try:
            # Get current template
            template = template_registry_api.get_current_registry_template()
            # Get type refinement
            refinement = refinement_api.get_by_template_hash_and_by_slug(
                template_hash=template.hash, slug='type')
            # Refinement form ID
            refinement_form_id = "{0}-{1}".format(RefinementForm.prefix,
                                                  refinement.slug)
            context["refinement_form_id"] = refinement_form_id
            # Shorter api name
            get_categories = category_api.get_all_categories_ids_by_parent_slug_and_refinement_id
            organizations_tile = {
                "logo": "fa-university",
                "color": "#2CAAE2",
                "categories": get_categories('organization', refinement.id),
                "title": "Organizations",
                "text": "Click here to explore the Organizations."
            }

            context["tiles"].append(organizations_tile)

            data_collections_tile = {
                "logo": "fa-table",
                "color": "#A1C057",
                "categories": get_categories('collection', refinement.id),
                "title": "Data Collections",
                "text": "Click here to explore the Data Collections."
            }

            context["tiles"].append(data_collections_tile)

            datasets_tile = {
                "logo": "fa-database",
                "color": "grey",
                "categories": get_categories('dataset', refinement.id),
                "title": "Datasets",
                "text": "Click here to explore the Datasets."
            }

            context["tiles"].append(datasets_tile)

            services_tile = {
                "logo": "fa-cogs",
                "color": "#EBB057;",
                "categories": get_categories('service', refinement.id),
                "title": "Services",
                "text": "Click here to explore the Services."
            }

            context["tiles"].append(services_tile)

            informational_tile = {
                "logo": "fa-laptop",
                "color": "#257ABC;",
                "categories": get_categories('web-site', refinement.id),
                "title": "Informational Sites",
                "text": "Click here to explore the Informational Sites."
            }

            context["tiles"].append(informational_tile)

            software_tile = {
                "logo": "fa-tachometer",
                "color": "#79B320;",
                "categories": get_categories('software', refinement.id),
                "title": "Software",
                "text": "Click here to explore the Software."
            }

            context["tiles"].append(software_tile)
        except (exceptions.DoesNotExist, exceptions.ModelError), e:
            logger.error(
                "Error while getting information from the database: {0}".
                format(e.message))
        except Exception, ex:
            logger.error("Something wrong occurred during the tiles "
                         "generation: {0}".format(ex.message))