def public_widget(widget_id): logging.debug( "/api/public/widgets/<widget_id> - WidgetResource/public_widget(id)") widget = get_object_or_404(models.Widget.get_by_id, widget_id) response = serialize_widget(widget) return json_response(response)
def post(self): """ Add a widget to a dashboard. :<json number dashboard_id: The ID for the dashboard being added to :<json visualization_id: The ID of the visualization to put in this widget :<json object options: Widget options :<json string text: Text box contents :<json number width: Width for widget display :>json object widget: The created widget """ widget_properties = request.get_json(force=True) dashboard = models.Dashboard.get_by_id_and_org(widget_properties.pop('dashboard_id'), self.current_org) require_object_modify_permission(dashboard, self.current_user) widget_properties['options'] = json.dumps(widget_properties['options']) widget_properties.pop('id', None) widget_properties['dashboard'] = dashboard visualization_id = widget_properties.pop('visualization_id') if visualization_id: visualization = models.Visualization.get_by_id_and_org(visualization_id, self.current_org) require_access(visualization.query_rel.groups, self.current_user, view_only) else: visualization = None widget_properties['visualization'] = visualization widget = models.Widget(**widget_properties) models.db.session.add(widget) models.db.session.commit() models.db.session.commit() return serialize_widget(widget)
def post(self): """ Add a widget to a dashboard. :<json number dashboard_id: The ID for the dashboard being added to :<json visualization_id: The ID of the visualization to put in this widget :<json object options: Widget options :<json string text: Text box contents :<json number width: Width for widget display :>json object widget: The created widget """ widget_properties = request.get_json(force=True) dashboard = models.Dashboard.get_by_id_and_org( widget_properties.get('dashboard_id'), self.current_org) flag = True manage_boards = models.Dashboard.queries(self.current_org, self.current_user.group_ids, self.current_user.id) for group_id in self.current_user.group_ids: group = get_object_or_404(models.Group.get_by_id_and_org, group_id, self.current_org) try: d = [ ds.to_dict(with_permissions_for=group) for ds in manage_boards ] for item in d: if item['view_only'] == False and item[ 'id'] == dashboard.id: flag = False except: pass if flag: require_object_modify_permission(dashboard, self.current_user) widget_properties['options'] = json_dumps(widget_properties['options']) widget_properties.pop('id', None) visualization_id = widget_properties.pop('visualization_id') if visualization_id: visualization = models.Visualization.get_by_id_and_org( visualization_id, self.current_org) require_access(visualization.query_rel, self.current_user, view_only) else: visualization = None widget_properties['visualization'] = visualization widget = models.Widget(**widget_properties) models.db.session.add(widget) models.db.session.commit() models.db.session.commit() return serialize_widget(widget)
def post(self, widget_id): """ Updates a widget in a dashboard. This method currently handles Text Box widgets only. :param number widget_id: The ID of the widget to modify :<json string text: The new contents of the text box """ widget = models.Widget.get_by_id_and_org(widget_id, self.current_org) require_object_modify_permission(widget.dashboard, self.current_user) widget_properties = request.get_json(force=True) widget.text = widget_properties['text'] widget.options = json.dumps(widget_properties['options']) models.db.session.commit() return serialize_widget(widget)
def post(self, widget_id): """ Updates a widget in a dashboard. This method currently handles Text Box widgets only. :param number widget_id: The ID of the widget to modify :<json string text: The new contents of the text box """ widget = models.Widget.get_by_id_and_org(widget_id, self.current_org) flag = True manage_boards = models.Dashboard.queries(self.current_org, self.current_user.group_ids, self.current_user.id) for group_id in self.current_user.group_ids: group = get_object_or_404(models.Group.get_by_id_and_org, group_id, self.current_org) try: d = [ ds.to_dict(with_permissions_for=group) for ds in manage_boards ] for item in d: if item['view_only'] == False and item[ 'id'] == widget.dashboard.id: flag = False except: pass if flag: require_object_modify_permission(widget.dashboard, self.current_user) widget_properties = request.get_json(force=True) widget.text = widget_properties['text'] widget.options = json_dumps(widget_properties['options']) models.db.session.commit() return serialize_widget(widget)