def read(self, request, workspace_id, tab_id, iwidget_id): workspace = get_object_or_404(Workspace, id=workspace_id) iwidget = get_object_or_404(IWidget, tab__workspace__users=request.user, tab__workspace=workspace, tab__pk=tab_id, pk=iwidget_id) iwidget_data = get_iwidget_data(iwidget, workspace, user=request.user) return HttpResponse(json.dumps(iwidget_data), content_type='application/json; charset=UTF-8')
def read(self, request, workspace_id, tab_id): workspace = get_object_or_404(Workspace, id=workspace_id) cache_manager = VariableValueCacheManager(workspace, request.user) iwidgets = IWidget.objects.filter(tab__workspace__users=request.user, tab__workspace__pk=workspace_id, tab__pk=tab_id) data = [get_iwidget_data(iwidget, workspace, cache_manager) for iwidget in iwidgets] return HttpResponse(json.dumps(data), content_type='application/json; charset=UTF-8')
def create(self, request, workspace_id, tab_id): try: iwidget = json.loads(request.body) except ValueError as e: msg = _("malformed json data: %s") % unicode(e) return build_error_response(request, 400, msg) initial_variable_values = iwidget.get('variable_values', None) # iWidget creation tab = get_object_or_404(Tab.objects.select_related('workspace'), workspace__pk=workspace_id, pk=tab_id) if not request.user.is_superuser and tab.workspace.creator != request.user: msg = _('You have not enough permission for adding iwidgets to the workspace') return build_error_response(request, 403, msg) try: iwidget = SaveIWidget(iwidget, request.user, tab, initial_variable_values) iwidget_data = get_iwidget_data(iwidget, tab.workspace, user=request.user) return HttpResponse(json.dumps(iwidget_data), content_type='application/json; charset=UTF-8') except (CatalogueResource.DoesNotExist, Widget.DoesNotExist) as e: msg = _('referred widget %(widget_uri)s does not exist.') % {'widget_uri': iwidget['widget']} return build_error_response(request, 422, msg)