def delete(self, request, workspace_id, tab_id): user = get_user_authentication(request) #set new order tabs = Tab.objects.filter(workspace__pk=workspace_id).order_by('position') # Get tab, if it does not exist, an http 404 error is returned tab = get_object_or_404(Tab, workspace__pk=workspace_id, pk=tab_id) #decrease the position of the following tabs for t in range(tab.position, tabs.count()): tabs[t].position = tabs[t].position - 1 tabs = tabs.exclude(pk=tab_id) if tabs.count() == 0: msg = _("tab cannot be deleted") log(msg, request) return HttpResponseServerError(get_xml_error(msg), mimetype='application/xml; charset=UTF-8') #Delete WorkSpace variables too! deleteTab(tab, user) #set a new visible tab (first tab by default) activeTab = tabs[0] setVisibleTab(user, workspace_id, activeTab) return HttpResponse('ok')
def update(self, request, workspace_id, tab_id): user = get_user_authentication(request) received_json = PUT_parameter(request, 'tab') if not received_json: return HttpResponseBadRequest(get_xml_error(_("tab JSON expected")), mimetype='application/xml; charset=UTF-8') try: t = simplejson.loads(received_json) tab = Tab.objects.get(workspace__users__id=user.id, workspace__pk=workspace_id, pk=tab_id) if 'visible' in t: visible = t['visible'] if (visible == 'true'): #Only one visible tab setVisibleTab(user, workspace_id, tab) else: tab.visible = False if 'name' in t: tab.name = t['name'] tab.save() return HttpResponse('ok') except Exception, e: transaction.rollback() msg = _("tab cannot be updated: ") + unicode(e) raise TracedServerError(e, received_json, request, msg)