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)
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)
def deleteTab(tab, user): #Deleting iwidgets iwidgets = IWidget.objects.filter(tab=tab) for iwidget in iwidgets: deleteIWidget(iwidget, user) # Deleting tab tab.delete()
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)
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
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)