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)
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 update(self, request, workspace_id, tab_id): tab = get_object_or_404(Tab.objects.select_related('workspace'), workspace__pk=workspace_id, pk=tab_id) if tab.workspace.creator != request.user: return build_error_response(request, 403, _('You are not allowed to update this workspace')) user_workspace = UserWorkspace.objects.get(user__id=request.user.id, workspace__id=workspace_id) if user_workspace.manager != '': return build_error_response(request, 403, _('You are not allowed to update this workspace')) data = parse_json_request(request) if 'visible' in data: visible = data['visible'] if isinstance(visible, string_types): visible = visible.strip().lower() if visible not in ('true', 'false'): return build_error_response(request, 422, _('Invalid visible value')) visible = visible == 'true' elif not isinstance(visible, bool): return build_error_response(request, 422, _('Invalid visible value')) if visible: #Only one visible tab setVisibleTab(request.user, workspace_id, tab) else: tab.visible = False if 'name' in data: tab.name = data['name'] tab.save() return HttpResponse(status=204)
def create(self, request, workspace_id, tab_id): tab = get_object_or_404(Tab.objects.select_related('workspace'), workspace__pk=workspace_id, pk=tab_id) if tab.workspace.creator != request.user: return build_error_response( request, 403, _('You are not allowed to update this workspace')) user_workspace = UserWorkspace.objects.get(user__id=request.user.id, workspace__id=workspace_id) if user_workspace.manager != '': return build_error_response( request, 403, _('You are not allowed to update this workspace')) data = parse_json_request(request) if 'visible' in data: visible = data['visible'] if isinstance(visible, string_types): visible = visible.strip().lower() if visible not in ('true', 'false'): return build_error_response(request, 422, _('Invalid visible value')) visible = visible == 'true' elif not isinstance(visible, bool): return build_error_response(request, 422, _('Invalid visible value')) if visible: # Only one visible tab setVisibleTab(request.user, workspace_id, tab) else: tab.visible = False if 'name' in data: tab.name = data['name'] if 'title' in data: tab.title = data['title'] try: tab.save() except IntegrityError: msg = _( 'A tab with the given name already exists for the workspace') return build_error_response(request, 409, msg) return HttpResponse(status=204)
def update(self, request, workspace_id, tab_id): tab = get_object_or_404(Tab.objects.select_related('workspace'), workspace__pk=workspace_id, pk=tab_id) if tab.workspace.creator != request.user: return build_error_response(request, 403, _('You are not allowed to update this workspace')) user_workspace = UserWorkspace.objects.get(user__id=request.user.id, workspace__id=workspace_id) if user_workspace.manager != '': return build_error_response(request, 403, _('You are not allowed to update this workspace')) try: data = json.loads(request.body) except ValueError as e: msg = _("malformed json data: %s") % unicode(e) return build_error_response(request, 400, msg) if 'visible' in data: visible = data['visible'] if isinstance(visible, basestring): visible = visible.strip().lower() if visible not in ('true', 'false'): return build_error_response(request, 422, _('Invalid visible value')) visible = visible == 'true' elif not isinstance(visible, bool): return build_error_response(request, 422, _('Invalid visible value')) if visible: #Only one visible tab setVisibleTab(request.user, workspace_id, tab) else: tab.visible = False if 'name' in data: tab.name = data['name'] tab.save() return HttpResponse(status=204)