def delete(self, request, workspace_id, tab_id): # Get tab, if it does not exist, an http 404 error is returned tab = get_object_or_404(Tab.objects.select_related('workspace'), workspace__pk=workspace_id, pk=tab_id) if not request.user.is_superuser and not tab.workspace.users.filter(id=request.user.id).exists(): return build_error_response(request, 403, _('You are not allowed to remove this tab')) tabs = Tab.objects.filter(workspace__pk=workspace_id).order_by('position')[::1] if len(tabs) == 1: msg = _("Tab cannot be deleted as workspaces need at least one tab") return build_error_response(request, 403, msg) if tab.iwidget_set.filter(readOnly=True).exists(): msg = _("Tab cannot be deleted as it contains widgets that cannot be deleted") return build_error_response(request, 403, msg) # decrease the position of the following tabs for t in range(tab.position + 1, len(tabs)): tabs[t].position = tabs[t].position - 1 tabs[t].save() # Remove the tab tabs.remove(tab) deleteTab(tab, request.user) if tab.visible: # set a new visible tab (first tab by default) activeTab = tabs[0] setVisibleTab(request.user, workspace_id, activeTab) return HttpResponse(status=204)
def delete(self, request, workspace_id, tab_id): # Get tab, if it does not exist, an http 404 error is returned tab = get_object_or_404(Tab.objects.select_related('workspace'), workspace__pk=workspace_id, pk=tab_id) if not request.user.is_superuser and not tab.workspace.users.filter(id=request.user.id).exists(): return HttpResponseForbidden() tabs = Tab.objects.filter(workspace__pk=workspace_id).order_by('position')[::1] if len(tabs) == 1: msg = _("tab cannot be deleted") return HttpResponseForbidden(msg) # decrease the position of the following tabs for t in range(tab.position + 1, len(tabs)): tabs[t].position = tabs[t].position - 1 tabs[t].save() # Remove the tab tabs.remove(tab) deleteTab(tab, request.user) if tab.visible: # set a new visible tab (first tab by default) activeTab = tabs[0] setVisibleTab(request.user, workspace_id, activeTab) return HttpResponse(status=204)