def _refresh_repository_post(request):
    """POST request refresh repository.

    Args:
        request:

    Returns:

    """
    form = admin_forms.RefreshRepositoryForm(request.POST)
    if form.is_valid():
        try:
            repository_id = request.POST["id"]
            instance = instance_api.get_by_id(repository_id)
        except:
            raise ExploreFederatedSearchAjaxError(
                "Error: Unable to access the registered instance.")
        try:
            instance_api.refresh_instance_token(
                instance,
                request.POST["client_id"],
                request.POST["client_secret"],
                request.POST["timeout"],
            )
            return HttpResponse(json.dumps({}),
                                content_type="application/javascript")
        except Exception as e:
            raise ExploreFederatedSearchAjaxError(str(e))
    else:
        raise ExploreFederatedSearchAjaxError("All fields are required.")
Esempio n. 2
0
def delete_repository(request):
    """ Delete repository.

    Returns:

    """
    try:
        instance = instance_api.get_by_id(request.GET['id'])
        instance_api.delete(instance)
    except Exception, e:
        return HttpResponseBadRequest(e.message, content_type='application/javascript')
def delete_repository(request):
    """Delete repository.

    Returns:

    """
    try:
        instance = instance_api.get_by_id(request.GET["id"])
        instance_api.delete(instance)
    except Exception as e:
        return HttpResponseBadRequest(escape(str(e)),
                                      content_type="application/javascript")
    return HttpResponse(json.dumps({}), content_type="application/javascript")
    def get_object(self, pk):
        """Retrieve an Instance

        Args:

            pk: ObjectId

        Returns:

            Instance
        """
        try:
            return instance_api.get_by_id(pk)
        except exceptions.DoesNotExist:
            raise Http404
def update_data_source_list_federated(request):
    """ Ajax method to update query data sources in bdd.

    Args:
        request:

    Returns:

    """
    try:
        id_query = request.GET.get('id_query', None)
        id_instance = request.GET.get('id_instance', None)
        added = request.GET.get('to_be_added', None)
        to_be_added = json.loads(added) if added is not None else False

        # Get query from id
        if id_query is not None:
            query = api_query.get_by_id(id_query)

            # Get instance from id
            if id_instance is not None:
                instance = instance_api.get_by_id(id_instance)

                # Generate url from instance information
                url = _get_url_with_federated_rest_extension(instance)

            if to_be_added:
                # Instance have to be added in the query as a datasource
                authentication = Authentication(
                    type='oauth2',
                    params={'access_token': instance.access_token})
                data_source = DataSource(name=instance.name,
                                         url_query=url,
                                         authentication=authentication)
                data_source.query_options = {'instance_name': instance.name}
                api_query.add_data_source(query, data_source)
            else:
                # Data source have to be remove from the query
                data_source = api_query.get_data_source_by_name_and_url_query(
                    query, instance.name, url)
                api_query.remove_data_source(query, data_source)

            return HttpResponse()
        else:
            return HttpResponseBadRequest(
                "Error during data source selection.")
    except Exception as e:
        return HttpResponseBadRequest("Error during data source selection.")
Esempio n. 6
0
def update_data_source_list_federated(request):
    """Ajax method to update query data sources in bdd.

    Args:
        request:

    Returns:

    """
    try:
        id_query = request.GET.get("id_query", None)
        id_instance = request.GET.get("id_instance", None)
        added = request.GET.get("to_be_added", None)
        to_be_added = json.loads(added) if added is not None else False

        # Get query from id
        if id_query is not None:
            query = api_query.get_by_id(id_query, request.user)

            # Get instance from id
            if id_instance is not None:
                instance = instance_api.get_by_id(id_instance)

                # Generate url from instance information
                url = _get_url_with_federated_rest_extension(instance)

            if to_be_added:
                # Instance have to be added in the query as a datasource
                authentication = Authentication(
                    type="oauth2",
                    params={"access_token": instance.access_token})
                data_source = DataSource(
                    name=instance.name,
                    url_query=url,
                    authentication=authentication,
                    order_by_field=",".join(settings.DATA_SORTING_FIELDS),
                )
                data_source.query_options = {"instance_name": instance.name}

                if "core_linked_records_app" in settings.INSTALLED_APPS:
                    data_source.capabilities = {
                        "url_pid":
                        urljoin(
                            instance.endpoint,
                            reverse("core_linked_records_app_query_local"),
                        )
                    }

                api_query.add_data_source(query, data_source, request.user)
            else:
                # Data source have to be remove from the query
                data_source = api_query.get_data_source_by_name_and_url_query(
                    query, instance.name, url, request.user)
                api_query.remove_data_source(query, data_source, request.user)

            return HttpResponse()
        else:
            return HttpResponseBadRequest(
                "Error during data source selection.")
    except AccessControlError:
        return HttpResponseForbidden("Access Forbidden")
    except Exception:
        return HttpResponseBadRequest("Error during data source selection.")