Exemplo n.º 1
0
    def read(self, request, workspace_id, operator_id):

        workspace = get_object_or_404(Workspace, id=workspace_id)

        if not workspace.is_available_for(request.user):
            return build_error_response(
                request, 403,
                _("You don't have permission to access this workspace"))

        cache_manager = VariableValueCacheManager(workspace, request.user)

        try:
            operator = workspace.wiringStatus["operators"][operator_id]
            vendor, name, version = operator["name"].split("/")
        except:
            raise Http404

        # Check if operator resource exists
        try:
            resource = CatalogueResource.objects.get(vendor=vendor,
                                                     short_name=name,
                                                     version=version)
            # Check if the resource is available, if not, variables should not be retrieved
            if not resource.is_available_for(workspace.creator):
                raise CatalogueResource.DoesNotExist
        except CatalogueResource.DoesNotExist:
            return HttpResponse(json.dumps({
                "preferences": {},
                "properties": {}
            }),
                                content_type='application/json; charset=UTF-8')

        data = {
            "preferences": {},
            "properties": {},
        }

        for preference_name, preference in six.iteritems(
                operator.get('preferences', {})):
            data["preferences"][
                preference_name] = cache_manager.get_variable_data(
                    "ioperator", operator_id, preference_name)

        for property_name, prop in six.iteritems(operator.get(
                'properties', {})):
            data["properties"][
                property_name] = cache_manager.get_variable_data(
                    "ioperator", operator_id, property_name)

        return HttpResponse(json.dumps(data, sort_keys=True),
                            content_type='application/json; charset=UTF-8')
Exemplo n.º 2
0
    def read(self, request, workspace_id, tab_id, iwidget_id):
        workspace = get_object_or_404(Workspace, pk=workspace_id)

        if not workspace.is_available_for(request.user):
            msg = _("You don't have permission to access this workspace")
            return build_error_response(request, 403, msg)

        iwidget = get_object_or_404(IWidget, pk=iwidget_id)
        if iwidget.tab_id != int(tab_id):
            raise Http404

        if iwidget.widget is None:
            return HttpResponse(json.dumps({}),
                                content_type='application/json; charset=UTF-8')

        iwidget_info = iwidget.widget.resource.get_processed_info(
            translate=True, process_variables=True)

        cache_manager = VariableValueCacheManager(workspace, request.user)
        props = iwidget_info['variables']['properties']

        data = {}
        data = {
            var: cache_manager.get_variable_data("iwidget", iwidget_id, var)
            for var in props
        }

        return HttpResponse(json.dumps(data, sort_keys=True),
                            content_type='application/json; charset=UTF-8')
Exemplo n.º 3
0
    def read(self, request, workspace_id, tab_id, iwidget_id):
        workspace = get_object_or_404(Workspace, pk=workspace_id)

        if not workspace.is_available_for(request.user):
            msg = _("You don't have permission to access this workspace")
            return build_error_response(request, 403, msg)

        iwidget = get_object_or_404(IWidget, pk=iwidget_id)
        if iwidget.tab_id != int(tab_id):
            raise Http404

        if iwidget.widget is None:
            return HttpResponse(json.dumps({}), content_type='application/json; charset=UTF-8')

        try:
            iwidget_info = iwidget.widget.resource.get_processed_info(translate=True, process_variables=True)
        except:
            return build_error_response(request, 403, _('Missing widget variables cannot be updated'))

        cache_manager = VariableValueCacheManager(workspace, request.user)
        prefs = iwidget_info['variables']['preferences']

        data = {}
        data = {var: cache_manager.get_variable_data("iwidget", iwidget_id, var) for var in prefs}

        return HttpResponse(json.dumps(data, sort_keys=True), content_type='application/json; charset=UTF-8')
Exemplo n.º 4
0
    def read(self, request, workspace_id, operator_id):

        workspace = get_object_or_404(Workspace, id=workspace_id)

        if not workspace.is_available_for(request.user):
            return build_error_response(request, 403, _("You don't have permission to access this workspace"))

        cache_manager = VariableValueCacheManager(workspace, request.user)

        try:
            operator = workspace.wiringStatus["operators"][operator_id]
            vendor, name, version = operator["name"].split("/")
        except:
            raise Http404

        # Check if operator resource exists
        try:
            resource = CatalogueResource.objects.get(vendor=vendor, short_name=name, version=version)
            # Check if the resource is available, if not, variables should not be retrieved
            if not resource.is_available_for(workspace.creator):
                raise CatalogueResource.DoesNotExist
        except CatalogueResource.DoesNotExist:
            return HttpResponse(json.dumps({"preferences": {}, "properties": {}}), content_type='application/json; charset=UTF-8')

        data = {
            "preferences": {},
            "properties": {},
        }

        for preference_name, preference in six.iteritems(operator.get('preferences', {})):
            data["preferences"][preference_name] = cache_manager.get_variable_data("ioperator", operator_id, preference_name)

        for property_name, prop in six.iteritems(operator.get('properties', {})):
            data["properties"][property_name] = cache_manager.get_variable_data("ioperator", operator_id, property_name)

        return HttpResponse(json.dumps(data, sort_keys=True), content_type='application/json; charset=UTF-8')