Exemple #1
0
    def delete(self, request, workspace_id):

        workspace = get_object_or_404(Workspace, pk=workspace_id)
        if not workspace.users.filter(pk=request.user.pk).exists():
            return HttpResponseForbidden()

        user_workspace = UserWorkspace.objects.get(user=request.user, workspace=workspace)
        # Check if the user does not have any other workspace
        if user_workspace.manager != '' or UserWorkspace.objects.filter(user=request.user).count() == 0:
            msg = _("workspace cannot be deleted")

            return build_error_response(request, 403, msg)

        user_workspace.delete()
        if workspace.users.count() == 0:

            # Remove the workspace
            iwidgets = IWidget.objects.filter(tab__workspace=workspace)
            for iwidget in iwidgets:
                deleteIWidget(iwidget, request.user)
            workspace.delete()

            from wirecloud.platform.get_data import _invalidate_cached_variable_values
            _invalidate_cached_variable_values(workspace)

        return HttpResponse(status=204)
Exemple #2
0
    def delete(self, request, workspace_id):

        user_workspaces = UserWorkspace.objects.select_related('workspace')
        try:
            user_workspace = user_workspaces.get(user__id=request.user.id, workspace__id=workspace_id)
        except UserWorkspace.DoesNotExist:
            raise Http404

        workspace = user_workspace.workspace
        if workspace.creator != request.user or user_workspace.manager != '':
            return HttpResponseForbidden()

        # Check if the user does not have any other workspace
        workspaces = Workspace.objects.filter(users__id=request.user.id).exclude(pk=workspace_id)

        if workspaces.count() == 0:
            msg = _("workspace cannot be deleted")

            return build_error_response(request, 403, msg)

        # Remove the workspace
        PublishedWorkspace.objects.filter(workspace=workspace).update(workspace=None)
        iwidgets = IWidget.objects.filter(tab__workspace=workspace)
        for iwidget in iwidgets:
            deleteIWidget(iwidget, request.user)
        workspace.delete()

        from wirecloud.platform.get_data import _invalidate_cached_variable_values
        _invalidate_cached_variable_values(workspace)

        # Set a new active workspace (first workspace by default)
        activeWorkspace = workspaces[0]
        setActiveWorkspace(request.user, activeWorkspace)

        return HttpResponse(status=204)
Exemple #3
0
def deleteTab(tab, user):
    #Deleting iwidgets
    iwidgets = IWidget.objects.filter(tab=tab)
    for iwidget in iwidgets:
        deleteIWidget(iwidget, user)

    # Deleting tab
    tab.delete()
Exemple #4
0
    def delete(self, request, workspace_id, tab_id, iwidget_id):

        # Gets Iwidget, if it does not exist, a http 404 error is returned
        iwidget = get_object_or_404(IWidget, tab__workspace__users=request.user, tab__workspace__pk=workspace_id, tab__pk=tab_id, pk=iwidget_id)

        deleteIWidget(iwidget, request.user)

        return HttpResponse(status=204)
Exemple #5
0
def deleteWidget(user, name, vendor, version):

    result = {"removedIWidgets": []}

    try:

        widget = Widget.objects.get(resource__short_name=name, resource__vendor=vendor, resource__version=version)

        # TODO
        # Remove all iwidget that matches this Widget Resource
        iwidgets = IWidget.objects.filter(widget=widget)
        for iwidget in iwidgets:
            result["removedIWidgets"].append(iwidget.id)
            deleteIWidget(iwidget, user)

        widget.delete()

    except Widget.DoesNotExist:
        pass

    return result
Exemple #6
0
    def test_widget_deletion_invalidates_cache(self):

        deleteIWidget(IWidget.objects.get(pk=1), self.user)
        data = json.loads(get_global_workspace_data(self.workspace, self.user).get_data())
        iwidget_list = data['tabs'][0]['iwidgets']
        self.assertEqual(len(iwidget_list), 1)