def get(self, visualization_id):
        """
        Retrieve a visualization.

        :param visualization_id: ID of visualization to fetch

        Responds with the :ref:`visualization <visualization-response-label>` contents.
        """
        vis = get_object_or_404(models.Visualization.get_by_id,
                                visualization_id)
        require_access(vis.query_rel, self.current_user, view_only)

        result = serialize_visualization(vis, True)

        api_key = models.ApiKey.get_by_object(vis)
        if api_key:
            result['api_key'] = api_key.api_key

        result['can_edit'] = can_modify(vis, self.current_user)

        self.record_event({
            'action': 'view',
            'object_id': visualization_id,
            'object_type': 'query',
        })

        return result
    def post(self, visualization_id):
        vis = get_object_or_404(models.Visualization.get_by_id_and_org,
                                visualization_id, self.current_org)

        req = request.get_json(True)
        if req and "folder_id" in req:
            vis.update_folder(req['folder_id'])
        else:
            abort(400)

        d = serialize_visualization(vis, with_query=False)
        return d
Exemplo n.º 3
0
    def post(self):
        kwargs = request.get_json(force=True)

        query = get_object_or_404(models.Query.get_by_id_and_org, kwargs.pop('query_id'), self.current_org)
        require_object_modify_permission(query, self.current_user)

        kwargs['options'] = json_dumps(kwargs['options'])
        kwargs['query_rel'] = query

        vis = models.Visualization(**kwargs)
        models.db.session.add(vis)
        models.db.session.commit()
        return serialize_visualization(vis, with_query=False)
Exemplo n.º 4
0
    def post(self, visualization_id):
        vis = get_object_or_404(models.Visualization.get_by_id_and_org, visualization_id, self.current_org)
        require_object_modify_permission(vis.query_rel, self.current_user)

        kwargs = request.get_json(force=True)
        if 'options' in kwargs:
            kwargs['options'] = json_dumps(kwargs['options'])

        kwargs.pop('id', None)
        kwargs.pop('query_id', None)

        self.update_model(vis, kwargs)
        d = serialize_visualization(vis, with_query=False)
        models.db.session.commit()
        return d
    def get(self):
        """
        Retrieve a list of visualizations.

        :qparam number page_size: Number of visualizations to return per page
        :qparam number page: Page number to retrieve
        :qparam number order: Name of column to order by
        :qparam number q: Full text search term

        Responds with an array of :ref:`visualization <visualization-response-label>` objects.
        """
        search_term = request.args.get('q', '')

        results = self.get_visualizations(search_term)

        # order results according to passed order parameter,
        # special-casing search queries where the database
        # provides an order by search rank
        ordered_results = order_results(results,
                                        fallback=not bool(search_term))

        if request.args.has_key('all'):
            response = [
                serialize_visualization(result) for result in ordered_results
            ]
        else:
            page = request.args.get('page', 1, type=int)
            page_size = request.args.get('page_size', 25, type=int)

            response = paginate(ordered_results,
                                page=page,
                                page_size=page_size,
                                serializer=serialize_visualization)

        if search_term:
            self.record_event({
                'action': 'search',
                'object_type': 'visualization',
                'term': search_term,
            })
        else:
            self.record_event({
                'action': 'list',
                'object_type': 'visualization',
            })

        return response