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
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)
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